SQL on FHIR
3.0.0-ballot - STU 3 Ballot International flag

SQL on FHIR, published by HL7 International / FHIR Infrastructure. This guide is not an authorized publication; it is the continuous build for version 3.0.0-ballot built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/sql-on-fhir/ and changes regularly. See the Directory of published versions

: SQL Run

Page standards status: Trial-use Maturity Level: 2

Raw json | Download

{
  "resourceType" : "OperationDefinition",
  "id" : "SQLRun",
  "language" : "en",
  "text" : {
    "status" : "generated",
    "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p class=\"res-header-id\"><b>Generated Narrative: OperationDefinition SQLRun</b></p><a name=\"SQLRun\"> </a><a name=\"hcSQLRun\"> </a><p>URL: [base]/$sql-run</p><h3>Parameters</h3><table class=\"grid\"><tr><td><b>Use</b></td><td><b>Name</b></td><td><b>Scope</b></td><td><b>Cardinality</b></td><td><b>Type</b></td><td><b>Binding</b></td><td><b>Documentation</b></td></tr><tr><td>IN</td><td>subjectCanonical</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/6.0.0-ballot5/datatypes.html#canonical\">canonical</a> (<a href=\"StructureDefinition-ViewDefinition.html\" title=\"http://hl7.org/fhir/StructureDefinition/ViewDefinition\">View Definition</a>, <a href=\"StructureDefinition-SQLQuery.html\" title=\"http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/SQLQuery\">SQL Query Library</a>, <a href=\"StructureDefinition-SQLView.html\" title=\"http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/SQLView\">SQL View Library</a>)</td><td/><td><div><p>Canonical URL of the ViewDefinition, SQLQuery Library or SQLView Library to execute, optionally with a |version suffix pinning a version. Exactly one of subjectCanonical, subjectReference and subjectResource is supplied; supplying none, or more than one, is rejected with 400 Bad Request.</p>\n</div></td></tr><tr><td>IN</td><td>subjectReference</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/6.0.0-ballot5/references.html#Reference\">Reference</a> (<a href=\"StructureDefinition-ViewDefinition.html\" title=\"http://hl7.org/fhir/StructureDefinition/ViewDefinition\">View Definition</a>, <a href=\"StructureDefinition-SQLQuery.html\" title=\"http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/SQLQuery\">SQL Query Library</a>, <a href=\"StructureDefinition-SQLView.html\" title=\"http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/SQLView\">SQL View Library</a>)</td><td/><td><div><p>Literal location of the subject to execute: a relative URL on this server, or an absolute URL. Not a canonical URL; use subjectCanonical for that. Exactly one of subjectCanonical, subjectReference and subjectResource is supplied; supplying none, or more than one, is rejected with 400 Bad Request.</p>\n</div></td></tr><tr><td>IN</td><td>subjectResource</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/6.0.0-ballot5/canonicalresource.html\">CanonicalResource</a> (<a href=\"StructureDefinition-ViewDefinition.html\" title=\"http://hl7.org/fhir/StructureDefinition/ViewDefinition\">View Definition</a>, <a href=\"StructureDefinition-SQLQuery.html\" title=\"http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/SQLQuery\">SQL Query Library</a>, <a href=\"StructureDefinition-SQLView.html\" title=\"http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/SQLView\">SQL View Library</a>)</td><td/><td><div><p>Inline ViewDefinition, SQLQuery Library or SQLView Library to execute. Exactly one of subjectCanonical, subjectReference and subjectResource is supplied; supplying none, or more than one, is rejected with 400 Bad Request. Carries a resource, so it requires POST. The declared type is CanonicalResource because ViewDefinition is a logical model rather than a FHIR resource; see Common Operation Behavior (operations-common.html#declared-type).</p>\n</div></td></tr><tr><td>IN</td><td>parameters</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/6.0.0-ballot5/parameters.html\">Parameters</a></td><td/><td><div><p>Input parameter values for the subject, bound by name to the parameters the Library declares (Library.parameter.name), using the value[x] type matching each declared type. Permitted only where the subject is a SQLQuery or SQLView; supplying it where the subject is a ViewDefinition is rejected with 400 Bad Request, because a ViewDefinition declares no parameters. Carries a resource, so it requires POST.</p>\n</div></td></tr><tr><td>IN</td><td>context</td><td/><td>0..*</td><td><a href=\"http://hl7.org/fhir/6.0.0-ballot5/canonicalresource.html\">CanonicalResource</a> (<a href=\"StructureDefinition-ViewDefinition.html\" title=\"http://hl7.org/fhir/StructureDefinition/ViewDefinition\">View Definition</a>, <a href=\"StructureDefinition-SQLView.html\" title=\"http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/SQLView\">SQL View Library</a>)</td><td/><td><div><p>Supporting artifacts the server cannot itself resolve, supplied inline and matched by canonical URL against the dependencies in the subject's transitive relatedArtifact graph. Accepts inline resources only; there is no context by canonical URL, because a URL is exactly what the server has already failed to resolve. Carries a resource, so it requires POST. See Common Operation Behavior (operations-common.html#context).</p>\n</div></td></tr><tr><td>IN</td><td>resource</td><td/><td>0..*</td><td><a href=\"http://hl7.org/fhir/6.0.0-ballot5/resource.html\">Resource</a></td><td/><td><div><p>FHIR resources to transform instead of using server data. Repeatable. A Bundle supplied here is unwrapped: the view runs against each Bundle.entry[*].resource rather than against the Bundle itself. Permitted only where the subject is a ViewDefinition; supplying it where the subject is a SQLQuery or SQLView is rejected with 400 Bad Request, because how inline resources reach each dependency view is not specified. Carries a resource, so it requires POST. See OperationDefinition-SQLRun notes (Resource parameter and Bundle inputs).</p>\n</div></td></tr><tr><td>IN</td><td>_format</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/6.0.0-ballot5/datatypes.html#code\">code</a></td><td><a href=\"ValueSet-OutputFormatCodes.html\">Output Format Codes</a> (Extensible)</td><td><div><p>Output format for the result (json, ndjson, csv, parquet, fhir). Use fhir to return results as a FHIR Parameters resource. Optional; if omitted, the server returns ndjson by default. See Common Operation Behavior (operations-common.html).</p>\n</div></td></tr><tr><td>IN</td><td>header</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/6.0.0-ballot5/datatypes.html#boolean\">boolean</a></td><td/><td><div><p>Include CSV headers (default true). Applies only when csv output is requested.</p>\n</div></td></tr><tr><td>IN</td><td>patient</td><td/><td>0..*</td><td><a href=\"http://hl7.org/fhir/6.0.0-ballot5/references.html#Reference\">Reference</a></td><td/><td><div><p>Restrict the FHIR resources feeding the view, before projection, to the supplied patient(s). Where the subject is a SQLQuery or SQLView, that means before the SQL executes. An unresolvable patient is rejected with 400 Bad Request. See Common Operation Behavior (operations-common.html#patient-filter).</p>\n</div></td></tr><tr><td>IN</td><td>group</td><td/><td>0..*</td><td><a href=\"http://hl7.org/fhir/6.0.0-ballot5/references.html#Reference\">Reference</a></td><td/><td><div><p>Restrict the FHIR resources feeding the view, before projection, to members of the supplied group(s). Where the subject is a SQLQuery or SQLView, that means before the SQL executes. An unresolvable group is rejected with 400 Bad Request. See Common Operation Behavior (operations-common.html#group-filter).</p>\n</div></td></tr><tr><td>IN</td><td>_since</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/6.0.0-ballot5/datatypes.html#instant\">instant</a></td><td/><td><div><p>Include only resources whose state changed after this instant. See Common Operation Behavior (operations-common.html#since-filter).</p>\n</div></td></tr><tr><td>IN</td><td>source</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/6.0.0-ballot5/datatypes.html#string\">string</a></td><td/><td><div><p>External data source to read from instead of the server's own data (for example a URI or bucket name). Where the subject is a SQLQuery or SQLView, this is where the ViewDefinition tables the query selects from are found.</p>\n</div></td></tr><tr><td>IN</td><td>_limit</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/6.0.0-ballot5/datatypes.html#integer\">integer</a></td><td/><td><div><p>Maximum number of rows to return.</p>\n</div></td></tr><tr><td>OUT</td><td>return</td><td/><td>1..1</td><td><a href=\"http://hl7.org/fhir/6.0.0-ballot5/binary.html\">Binary</a></td><td/><td><div><p>Result rows in the requested output format, returned as a raw binary stream in the format's native media type, not a serialized Binary resource envelope. When _format=fhir is requested, the response is a Parameters resource instead. See Common Operation Behavior (operations-common.html).</p>\n</div></td></tr></table></div>"
  },
  "extension" : [
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg",
      "valueCode" : "fhir"
    },
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm",
      "valueInteger" : 2,
      "_valueInteger" : {
        "extension" : [
          {
            "url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-conformance-derivedFrom",
            "valueCanonical" : "http://hl7.org/fhir/uv/sql-on-fhir/ImplementationGuide/hl7.fhir.uv.sql-on-fhir"
          }
        ]
      }
    },
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status",
      "valueCode" : "trial-use",
      "_valueCode" : {
        "extension" : [
          {
            "url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-conformance-derivedFrom",
            "valueCanonical" : "http://hl7.org/fhir/uv/sql-on-fhir/ImplementationGuide/hl7.fhir.uv.sql-on-fhir"
          }
        ]
      }
    }
  ],
  "url" : "http://hl7.org/fhir/uv/sql-on-fhir/OperationDefinition/SQLRun",
  "identifier" : [
    {
      "system" : "urn:ietf:rfc:3986",
      "value" : "urn:oid:2.16.840.1.113883.4.642.40.77.33.6"
    }
  ],
  "version" : "3.0.0-ballot",
  "versionAlgorithmString" : "semver",
  "name" : "SQLRun",
  "title" : "SQL Run",
  "status" : "active",
  "kind" : "operation",
  "date" : "2026-08-13T15:42:34+00:00",
  "publisher" : "HL7 International / FHIR Infrastructure",
  "contact" : [
    {
      "name" : "HL7 International / FHIR Infrastructure",
      "telecom" : [
        {
          "system" : "url",
          "value" : "http://www.hl7.org/Special/committees/fiwg"
        }
      ]
    }
  ],
  "description" : "Execute a ViewDefinition, SQLQuery Library or SQLView Library and return the result in the requested output format.",
  "jurisdiction" : [
    {
      "coding" : [
        {
          "system" : "http://unstats.un.org/unsd/methods/m49/m49.htm",
          "code" : "001",
          "display" : "World"
        }
      ]
    }
  ],
  "code" : "sql-run",
  "system" : true,
  "type" : false,
  "instance" : false,
  "parameter" : [
    {
      "name" : "subjectCanonical",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "Canonical URL of the ViewDefinition, SQLQuery Library or SQLView Library to execute, optionally with a |version suffix pinning a version. Exactly one of subjectCanonical, subjectReference and subjectResource is supplied; supplying none, or more than one, is rejected with 400 Bad Request.",
      "type" : "canonical",
      "targetProfile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/ViewDefinition"🔗 ,
        "http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/SQLQuery"🔗 ,
        "http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/SQLView"
      ]
    },
    {
      "name" : "subjectReference",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "Literal location of the subject to execute: a relative URL on this server, or an absolute URL. Not a canonical URL; use subjectCanonical for that. Exactly one of subjectCanonical, subjectReference and subjectResource is supplied; supplying none, or more than one, is rejected with 400 Bad Request.",
      "type" : "Reference",
      "targetProfile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/ViewDefinition"🔗 ,
        "http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/SQLQuery"🔗 ,
        "http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/SQLView"
      ]
    },
    {
      "name" : "subjectResource",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "Inline ViewDefinition, SQLQuery Library or SQLView Library to execute. Exactly one of subjectCanonical, subjectReference and subjectResource is supplied; supplying none, or more than one, is rejected with 400 Bad Request. Carries a resource, so it requires POST. The declared type is CanonicalResource because ViewDefinition is a logical model rather than a FHIR resource; see Common Operation Behavior (operations-common.html#declared-type).",
      "type" : "CanonicalResource",
      "targetProfile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/ViewDefinition"🔗 ,
        "http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/SQLQuery"🔗 ,
        "http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/SQLView"
      ]
    },
    {
      "name" : "parameters",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "Input parameter values for the subject, bound by name to the parameters the Library declares (Library.parameter.name), using the value[x] type matching each declared type. Permitted only where the subject is a SQLQuery or SQLView; supplying it where the subject is a ViewDefinition is rejected with 400 Bad Request, because a ViewDefinition declares no parameters. Carries a resource, so it requires POST.",
      "type" : "Parameters"
    },
    {
      "name" : "context",
      "use" : "in",
      "min" : 0,
      "max" : "*",
      "documentation" : "Supporting artifacts the server cannot itself resolve, supplied inline and matched by canonical URL against the dependencies in the subject's transitive relatedArtifact graph. Accepts inline resources only; there is no context by canonical URL, because a URL is exactly what the server has already failed to resolve. Carries a resource, so it requires POST. See Common Operation Behavior (operations-common.html#context).",
      "type" : "CanonicalResource",
      "targetProfile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/ViewDefinition"🔗 ,
        "http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/SQLView"
      ]
    },
    {
      "name" : "resource",
      "use" : "in",
      "min" : 0,
      "max" : "*",
      "documentation" : "FHIR resources to transform instead of using server data. Repeatable. A Bundle supplied here is unwrapped: the view runs against each Bundle.entry[*].resource rather than against the Bundle itself. Permitted only where the subject is a ViewDefinition; supplying it where the subject is a SQLQuery or SQLView is rejected with 400 Bad Request, because how inline resources reach each dependency view is not specified. Carries a resource, so it requires POST. See OperationDefinition-SQLRun notes (Resource parameter and Bundle inputs).",
      "type" : "Resource"
    },
    {
      "name" : "_format",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "Output format for the result (json, ndjson, csv, parquet, fhir). Use fhir to return results as a FHIR Parameters resource. Optional; if omitted, the server returns ndjson by default. See Common Operation Behavior (operations-common.html).",
      "type" : "code",
      "binding" : {
        "strength" : "extensible",
        "valueSet" : "http://hl7.org/fhir/uv/sql-on-fhir/ValueSet/OutputFormatCodes"
      }
    },
    {
      "name" : "header",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "Include CSV headers (default true). Applies only when csv output is requested.",
      "type" : "boolean"
    },
    {
      "name" : "patient",
      "use" : "in",
      "min" : 0,
      "max" : "*",
      "documentation" : "Restrict the FHIR resources feeding the view, before projection, to the supplied patient(s). Where the subject is a SQLQuery or SQLView, that means before the SQL executes. An unresolvable patient is rejected with 400 Bad Request. See Common Operation Behavior (operations-common.html#patient-filter).",
      "type" : "Reference"
    },
    {
      "name" : "group",
      "use" : "in",
      "min" : 0,
      "max" : "*",
      "documentation" : "Restrict the FHIR resources feeding the view, before projection, to members of the supplied group(s). Where the subject is a SQLQuery or SQLView, that means before the SQL executes. An unresolvable group is rejected with 400 Bad Request. See Common Operation Behavior (operations-common.html#group-filter).",
      "type" : "Reference"
    },
    {
      "name" : "_since",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "Include only resources whose state changed after this instant. See Common Operation Behavior (operations-common.html#since-filter).",
      "type" : "instant"
    },
    {
      "name" : "source",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "External data source to read from instead of the server's own data (for example a URI or bucket name). Where the subject is a SQLQuery or SQLView, this is where the ViewDefinition tables the query selects from are found.",
      "type" : "string"
    },
    {
      "name" : "_limit",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "Maximum number of rows to return.",
      "type" : "integer"
    },
    {
      "name" : "return",
      "use" : "out",
      "min" : 1,
      "max" : "1",
      "documentation" : "Result rows in the requested output format, returned as a raw binary stream in the format's native media type, not a serialized Binary resource envelope. When _format=fhir is requested, the response is a Parameters resource instead. See Common Operation Behavior (operations-common.html).",
      "type" : "Binary"
    }
  ]
}