Skip to content

Commit 65e2330

Browse files
committed
Constrain query and view operation parameters
Tighten the loosely-typed query- and view-bearing parameters across the four data operations so the machine-readable OperationDefinitions match their stated intent (issue #367). The query parameters (queryReference, queryResource in $sqlquery-run and $sqlquery-export) now carry a targetProfile of both the SQLQuery and SQLView profiles, with the inline parameters typed Library, and their documentation names both profiles. The view parameters (viewReference everywhere, and the inline viewResource in both export operations) now carry a targetProfile of ViewDefinition, with the inline parameters narrowed from Resource to CanonicalResource to match the existing $viewdefinition-run viewResource precedent. patient, group and source are left unchanged. This is a constraining change (constitution IV): the parameters move from unconstrained to profiled. Because the documentation always described a SQLQuery or SQLView Library or a ViewDefinition, and the guide is pre-publication (2.1.0-pre), no conforming caller is broken.
1 parent 1837320 commit 65e2330

1 file changed

Lines changed: 21 additions & 8 deletions

File tree

input/fsh/operations.fsh

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,14 @@ Description: "Export a view definition. User can provide view definition referen
3838
* parameter[0].part[1].min = 0
3939
* parameter[0].part[1].max = "1"
4040
* parameter[0].part[1].type = #Reference
41+
* parameter[0].part[1].targetProfile = Canonical(ViewDefinition)
4142
* parameter[0].part[1].documentation = "Reference to a ViewDefinition stored on the server."
4243
* parameter[0].part[2].name = #viewResource
4344
* parameter[0].part[2].use = #in
4445
* parameter[0].part[2].min = 0
4546
* parameter[0].part[2].max = "1"
46-
* parameter[0].part[2].type = #Resource
47+
* parameter[0].part[2].type = #CanonicalResource
48+
* parameter[0].part[2].targetProfile = Canonical(ViewDefinition)
4749
* parameter[0].part[2].documentation = "Inline ViewDefinition resource to export."
4850

4951
* parameter[1].name = #clientTrackingId
@@ -254,6 +256,7 @@ Description: "Execute a view definition against supplied or server data."
254256
* parameter[2].scope[0] = #system
255257
* parameter[2].scope[1] = #type
256258
* parameter[2].type = #Reference
259+
* parameter[2].targetProfile = Canonical(ViewDefinition)
257260
* parameter[2].documentation = "Reference to a ViewDefinition stored on the server."
258261

259262
* parameter[3].name = #viewResource
@@ -384,7 +387,9 @@ Description: "Execute a SQLQuery Library against ViewDefinition tables."
384387
* parameter[2].scope[0] = #system
385388
* parameter[2].scope[1] = #type
386389
* parameter[2].type = #Reference
387-
* parameter[2].documentation = "Reference to a SQLQuery Library stored on the server."
390+
* parameter[2].targetProfile[0] = Canonical(SQLQuery)
391+
* parameter[2].targetProfile[1] = Canonical(SQLView)
392+
* parameter[2].documentation = "Reference to a SQLQuery or SQLView Library stored on the server."
388393

389394
* parameter[3].name = #queryResource
390395
* parameter[3].use = #in
@@ -393,7 +398,9 @@ Description: "Execute a SQLQuery Library against ViewDefinition tables."
393398
* parameter[3].scope[0] = #system
394399
* parameter[3].scope[1] = #type
395400
* parameter[3].type = #Library
396-
* parameter[3].documentation = "Inline SQLQuery Library resource to execute."
401+
* parameter[3].targetProfile[0] = Canonical(SQLQuery)
402+
* parameter[3].targetProfile[1] = Canonical(SQLView)
403+
* parameter[3].documentation = "Inline SQLQuery or SQLView Library resource to execute."
397404

398405
* parameter[4].name = #parameters
399406
* parameter[4].use = #in
@@ -459,7 +466,7 @@ Description: "Export SQLQuery Library results asynchronously using the FHIR Asyn
459466
* parameter[0].max = "*"
460467
* parameter[0].scope[0] = #system
461468
* parameter[0].scope[1] = #type
462-
* parameter[0].documentation = "One or more SQLQuery Libraries to export. Each repetition identifies a single query. Applies at system and type level only; at instance level the bound Library identified by the request URL is the query source and this parameter does not apply."
469+
* parameter[0].documentation = "One or more SQLQuery or SQLView Libraries to export. Each repetition identifies a single query. Applies at system and type level only; at instance level the bound Library identified by the request URL is the query source and this parameter does not apply."
463470
* parameter[0].part[0].name = #name
464471
* parameter[0].part[0].use = #in
465472
* parameter[0].part[0].min = 0
@@ -471,13 +478,17 @@ Description: "Export SQLQuery Library results asynchronously using the FHIR Asyn
471478
* parameter[0].part[1].min = 0
472479
* parameter[0].part[1].max = "1"
473480
* parameter[0].part[1].type = #Reference
474-
* parameter[0].part[1].documentation = "Reference to a SQLQuery Library stored on the server."
481+
* parameter[0].part[1].targetProfile[0] = Canonical(SQLQuery)
482+
* parameter[0].part[1].targetProfile[1] = Canonical(SQLView)
483+
* parameter[0].part[1].documentation = "Reference to a SQLQuery or SQLView Library stored on the server."
475484
* parameter[0].part[2].name = #queryResource
476485
* parameter[0].part[2].use = #in
477486
* parameter[0].part[2].min = 0
478487
* parameter[0].part[2].max = "1"
479-
* parameter[0].part[2].type = #Resource
480-
* parameter[0].part[2].documentation = "Inline SQLQuery Library resource to execute."
488+
* parameter[0].part[2].type = #Library
489+
* parameter[0].part[2].targetProfile[0] = Canonical(SQLQuery)
490+
* parameter[0].part[2].targetProfile[1] = Canonical(SQLView)
491+
* parameter[0].part[2].documentation = "Inline SQLQuery or SQLView Library resource to execute."
481492
* parameter[0].part[3].name = #parameters
482493
* parameter[0].part[3].use = #in
483494
* parameter[0].part[3].min = 0
@@ -504,12 +515,14 @@ Description: "Export SQLQuery Library results asynchronously using the FHIR Asyn
504515
* parameter[1].part[1].min = 0
505516
* parameter[1].part[1].max = "1"
506517
* parameter[1].part[1].type = #Reference
518+
* parameter[1].part[1].targetProfile = Canonical(ViewDefinition)
507519
* parameter[1].part[1].documentation = "Reference to a ViewDefinition stored on the server."
508520
* parameter[1].part[2].name = #viewResource
509521
* parameter[1].part[2].use = #in
510522
* parameter[1].part[2].min = 0
511523
* parameter[1].part[2].max = "1"
512-
* parameter[1].part[2].type = #Resource
524+
* parameter[1].part[2].type = #CanonicalResource
525+
* parameter[1].part[2].targetProfile = Canonical(ViewDefinition)
513526
* parameter[1].part[2].documentation = "Inline ViewDefinition resource."
514527

515528
// Input parameters — export control (from $viewdefinition-export)

0 commit comments

Comments
 (0)