Common CQL Artifacts for FHIR (US-Based)
1.0.0-ballot - STU 1 Ballot
Common CQL Artifacts for FHIR (US-Based), published by HL7 International / Clinical Decision Support. This guide is not an authorized publication; it is the continuous build for version 1.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/us-cql-ig/ and changes regularly. See the Directory of published versions
Page standards status: Informative | Maturity Level: 3 |
<Library xmlns="http://hl7.org/fhir">
<id value="ExamplePatientAndCoverageInitialExpressions"/>
<text>
<status value="extensions"/>
<div xmlns="http://www.w3.org/1999/xhtml">
<div>
<table class="grid dict">
<tr>
<th scope="row"><b>Title: </b></th>
<td style="padding-left: 4px;">Expression Library for the Example Patient And Coverage Questionnaire</td>
</tr>
<tr>
<th scope="row"><b>Id: </b></th>
<td style="padding-left: 4px;">ExamplePatientAndCoverageInitialExpressions</td>
</tr>
<tr>
<th scope="row"><b>Version: </b></th>
<td style="padding-left: 4px;">1.0.0-ballot</td>
</tr>
<tr>
<th scope="row"><b>Url: </b></th>
<td style="padding-left: 4px;"><a href="Library-ExamplePatientAndCoverageInitialExpressions.html">Expression Library for the Example Patient And Coverage Questionnaire</a></td>
</tr>
<tr>
<th scope="row"><b>Status: </b></th>
<td style="padding-left: 4px;">draft</td>
</tr>
<tr>
<th scope="row"><b>Experimental: </b></th>
<td style="padding-left: 4px;">true</td>
</tr>
<tr>
<th scope="row"><b>Type: </b></th>
<td style="padding-left: 4px;">
<p style="margin-bottom: 5px;">
<b>system: </b> <span><a href="http://terminology.hl7.org/6.5.0/CodeSystem-library-type.html">http://terminology.hl7.org/CodeSystem/library-type</a></span>
</p>
<p style="margin-bottom: 5px;">
<b>code: </b> <span>logic-library</span>
</p>
</td>
</tr>
<tr>
<th scope="row"><b>Date: </b></th>
<td style="padding-left: 4px;">2025-09-10 20:00:05+0000</td>
</tr>
<tr>
<th scope="row"><b>Publisher: </b></th>
<td style="padding-left: 4px;">HL7 International / Clinical Decision Support</td>
</tr>
<tr>
<th scope="row"><b>Description: </b></th>
<td style="padding-left: 4px;"><div><p>This library defines initial expressions for use in populating answers to questions in the Example Patient And Coverage questionnaire.</p>
</div></td>
</tr>
<tr>
<th scope="row"><b>Jurisdiction: </b></th>
<td style="padding-left: 4px;">US</td>
</tr>
<tr>
<td colspan="2">
<table>
<tr><th><a id="cql-content"><b>Content: </b></a> text/cql</th></tr>
<tr><td><pre><code class="language-cql">library ExamplePatientAndCoverageInitialExpressions
using USCore version '7.0.0'
using FHIR version '4.0.1'
include hl7.fhir.uv.cql.FHIRHelpers version '4.0.1'
include USCoreCommon called UC
include USCoreElements called UCE
codesystem "Identifier Type": 'http://terminology.hl7.org/CodeSystem/v2-0203'
code "Member Number": 'MB' from "Identifier Type"
code "Subscriber Number": 'SN' from "Identifier Type"
parameter "Coverage" FHIR.Coverage
parameter "ServiceRequest" FHIR.ServiceRequest
context Patient
define "Retrieve Service Request test parameter":
// The VSCode extension doesn't support parameters
// When executing CQL with the VSCode extension retrieve the resource specific for the test case
// the list of resource ids match the resources from the test case folders
singleton from ([FHIR.ServiceRequest] SR where SR.id in {
'minimal-service-request-example'
})
define "Service Request":
Coalesce(
ServiceRequest,
"Retrieve Service Request test parameter"
)
define "Retrieve Coverage test parameter":
// The VSCode extension doesn't support parameters
// When executing CQL with the VSCode extension retrieve the resource specific for the test case
// the list of resource ids match the resources from the test case folders
singleton from ([FHIR.Coverage] CV where CV.id in {
'minimal-coverage-example'
})
define "Member Coverage":
Coalesce(
Coverage,
"Retrieve Coverage test parameter"
)
define "Patient Name":
UCE."Name - First Middle(s) Last"
define "Date of Birth":
Patient.birthDate
define "Birth Sex":
Patient.birthsex
define "Medical Record Number":
UCE."Medical Record Number"
define "Phone Number":
UC.Mobile(Patient.telecom).value
define "Email Address":
UC.Email(Patient.telecom).value
define "Address":
(singleton from Patient.address).line
define "City":
Patient.address.city
define "State":
Patient.address.state
define "Postal Code":
Patient.address.postalCode
// Coverage
// define "Coverage":
// First(clinical C where C is FHIR.Coverage)
// TODO: is there a need to check for coverage period and order?
// also, do we need to check that the payor organization is the same as the source of the prior auth form?
define "Member ID":
UCE.MemberID("Member Coverage").value
// TODO: is there a need to check for coverage period and order?
// also do we need to check that the payor organization is the same as the source of the prior auth form?
define "Policy Number":
UCE.PolicyNumber("Member Coverage").value
define "Requesting Provider":
UCE.RequestingProvider("Service Request")
define "Requesting Provider Name":
"Requesting Provider".name.family
define "Requesting Provider Phone":
UC.Work("Requesting Provider".telecom).value
define "Requesting Provider Address":
(singleton from "Requesting Provider".address).line
define "Requesting Provider NPI":
"Requesting Provider".identifier I
where I.system = 'http://hl7.org/fhir/sid/us-npi'
return I.value
define "Requesting Provider Fax":
"Requesting Provider".telecom T
where T.system = 'fax'
return T.value
define "Servicing Provider":
UCE.ServicingProvider("Service Request")
define "Servicing Provider Name":
"Servicing Provider".name
define "Servicing Provider Phone":
UC.Work("Servicing Provider".telecom).value
define "Servicing Provider Address":
(singleton from "Servicing Provider".address).text
define "Servicing Provider NPI":
"Servicing Provider".identifier I
where I.system = 'http://hl7.org/fhir/sid/us-npi'
return I.value
define "Servicing Provider Fax":
"Servicing Provider".telecom T
where T.system = 'fax'
return T.value</code></pre></td></tr>
</table>
</td>
</tr>
<tr>
<td colspan="2">
<table>
<tr><th><b>Content: </b> application/elm+xml</th></tr>
<tr><td><pre><code/></pre></td></tr>
</table>
</td>
</tr>
</table>
</div>
</div>
</text>
<extension
url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm">
<valueInteger value="3"/>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/structuredefinition-wg">
<valueCode value="cds"/>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status">
<valueCode value="informative"/>
</extension>
<url
value="http://hl7.org/fhir/us/cql/Library/ExamplePatientAndCoverageInitialExpressions"/>
<version value="1.0.0-ballot"/>
<name value="ExamplePatientAndCoverageInitialExpressions"/>
<title
value="Expression Library for the Example Patient And Coverage Questionnaire"/>
<status value="draft"/>
<experimental value="true"/>
<type>
<coding>
<system value="http://terminology.hl7.org/CodeSystem/library-type"/>
<code value="logic-library"/>
</coding>
</type>
<date value="2025-09-10T20:00:05+00:00"/>
<publisher value="HL7 International / Clinical Decision Support"/>
<contact>
<telecom>
<system value="url"/>
<value value="http://www.hl7.org/Special/committees/dss"/>
</telecom>
</contact>
<description
value="This library defines initial expressions for use in populating answers to questions in the Example Patient And Coverage questionnaire."/>
<jurisdiction>
<coding>
<system value="urn:iso:std:iso:3166"/>
<code value="US"/>
<display value="United States of America"/>
</coding>
</jurisdiction>
<content>
<contentType value="text/cql"/>
<data
value="bGlicmFyeSBFeGFtcGxlUGF0aWVudEFuZENvdmVyYWdlSW5pdGlhbEV4cHJlc3Npb25zCgp1c2luZyBVU0NvcmUgdmVyc2lvbiAnNy4wLjAnCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIGhsNy5maGlyLnV2LmNxbC5GSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScKaW5jbHVkZSBVU0NvcmVDb21tb24gY2FsbGVkIFVDCmluY2x1ZGUgVVNDb3JlRWxlbWVudHMgY2FsbGVkIFVDRQoKY29kZXN5c3RlbSAiSWRlbnRpZmllciBUeXBlIjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vdjItMDIwMycKCmNvZGUgIk1lbWJlciBOdW1iZXIiOiAnTUInIGZyb20gIklkZW50aWZpZXIgVHlwZSIKY29kZSAiU3Vic2NyaWJlciBOdW1iZXIiOiAnU04nIGZyb20gIklkZW50aWZpZXIgVHlwZSIKCnBhcmFtZXRlciAiQ292ZXJhZ2UiIEZISVIuQ292ZXJhZ2UKcGFyYW1ldGVyICJTZXJ2aWNlUmVxdWVzdCIgRkhJUi5TZXJ2aWNlUmVxdWVzdAoKY29udGV4dCBQYXRpZW50CgpkZWZpbmUgIlJldHJpZXZlIFNlcnZpY2UgUmVxdWVzdCB0ZXN0IHBhcmFtZXRlciI6CiAgLy8gVGhlIFZTQ29kZSBleHRlbnNpb24gZG9lc24ndCBzdXBwb3J0IHBhcmFtZXRlcnMKICAvLyBXaGVuIGV4ZWN1dGluZyBDUUwgd2l0aCB0aGUgVlNDb2RlIGV4dGVuc2lvbiByZXRyaWV2ZSB0aGUgcmVzb3VyY2Ugc3BlY2lmaWMgZm9yIHRoZSB0ZXN0IGNhc2UKICAvLyAgIHRoZSBsaXN0IG9mIHJlc291cmNlIGlkcyBtYXRjaCB0aGUgcmVzb3VyY2VzIGZyb20gdGhlIHRlc3QgY2FzZSBmb2xkZXJzCiAgc2luZ2xldG9uIGZyb20gKFtGSElSLlNlcnZpY2VSZXF1ZXN0XSBTUiB3aGVyZSBTUi5pZCBpbiB7IAogICAgJ21pbmltYWwtc2VydmljZS1yZXF1ZXN0LWV4YW1wbGUnCiAgfSkKCmRlZmluZSAiU2VydmljZSBSZXF1ZXN0IjoKICBDb2FsZXNjZSgKICAgIFNlcnZpY2VSZXF1ZXN0LAogICAgIlJldHJpZXZlIFNlcnZpY2UgUmVxdWVzdCB0ZXN0IHBhcmFtZXRlciIKICApCgpkZWZpbmUgIlJldHJpZXZlIENvdmVyYWdlIHRlc3QgcGFyYW1ldGVyIjoKICAvLyBUaGUgVlNDb2RlIGV4dGVuc2lvbiBkb2Vzbid0IHN1cHBvcnQgcGFyYW1ldGVycwogIC8vIFdoZW4gZXhlY3V0aW5nIENRTCB3aXRoIHRoZSBWU0NvZGUgZXh0ZW5zaW9uIHJldHJpZXZlIHRoZSByZXNvdXJjZSBzcGVjaWZpYyBmb3IgdGhlIHRlc3QgY2FzZQogIC8vICAgdGhlIGxpc3Qgb2YgcmVzb3VyY2UgaWRzIG1hdGNoIHRoZSByZXNvdXJjZXMgZnJvbSB0aGUgdGVzdCBjYXNlIGZvbGRlcnMKICBzaW5nbGV0b24gZnJvbSAoW0ZISVIuQ292ZXJhZ2VdIENWIHdoZXJlIENWLmlkIGluIHsgCiAgICAnbWluaW1hbC1jb3ZlcmFnZS1leGFtcGxlJwogIH0pCgpkZWZpbmUgIk1lbWJlciBDb3ZlcmFnZSI6CiAgQ29hbGVzY2UoCiAgICBDb3ZlcmFnZSwKICAgICJSZXRyaWV2ZSBDb3ZlcmFnZSB0ZXN0IHBhcmFtZXRlciIKICApCgpkZWZpbmUgIlBhdGllbnQgTmFtZSI6CiAgVUNFLiJOYW1lIC0gRmlyc3QgTWlkZGxlKHMpIExhc3QiCgpkZWZpbmUgIkRhdGUgb2YgQmlydGgiOgogIFBhdGllbnQuYmlydGhEYXRlCgpkZWZpbmUgIkJpcnRoIFNleCI6CiAgUGF0aWVudC5iaXJ0aHNleAoKZGVmaW5lICJNZWRpY2FsIFJlY29yZCBOdW1iZXIiOgogIFVDRS4iTWVkaWNhbCBSZWNvcmQgTnVtYmVyIgoKZGVmaW5lICJQaG9uZSBOdW1iZXIiOgogIFVDLk1vYmlsZShQYXRpZW50LnRlbGVjb20pLnZhbHVlCgpkZWZpbmUgIkVtYWlsIEFkZHJlc3MiOgogIFVDLkVtYWlsKFBhdGllbnQudGVsZWNvbSkudmFsdWUKCmRlZmluZSAiQWRkcmVzcyI6CiAgKHNpbmdsZXRvbiBmcm9tIFBhdGllbnQuYWRkcmVzcykubGluZQoKZGVmaW5lICJDaXR5IjoKICBQYXRpZW50LmFkZHJlc3MuY2l0eQoKZGVmaW5lICJTdGF0ZSI6CiAgUGF0aWVudC5hZGRyZXNzLnN0YXRlCgpkZWZpbmUgIlBvc3RhbCBDb2RlIjoKICBQYXRpZW50LmFkZHJlc3MucG9zdGFsQ29kZQoKLy8gQ292ZXJhZ2UKLy8gZGVmaW5lICJDb3ZlcmFnZSI6Ci8vICAgRmlyc3QoY2xpbmljYWwgQyB3aGVyZSBDIGlzIEZISVIuQ292ZXJhZ2UpCgovLyBUT0RPOiBpcyB0aGVyZSBhIG5lZWQgdG8gY2hlY2sgZm9yIGNvdmVyYWdlIHBlcmlvZCBhbmQgb3JkZXI/IAovLyAgICAgICBhbHNvLCBkbyB3ZSBuZWVkIHRvIGNoZWNrIHRoYXQgdGhlIHBheW9yIG9yZ2FuaXphdGlvbiBpcyB0aGUgc2FtZSBhcyB0aGUgc291cmNlIG9mIHRoZSBwcmlvciBhdXRoIGZvcm0/CmRlZmluZSAiTWVtYmVyIElEIjoKICBVQ0UuTWVtYmVySUQoIk1lbWJlciBDb3ZlcmFnZSIpLnZhbHVlCgovLyBUT0RPOiBpcyB0aGVyZSBhIG5lZWQgdG8gY2hlY2sgZm9yIGNvdmVyYWdlIHBlcmlvZCBhbmQgb3JkZXI/Ci8vICAgICAgIGFsc28gZG8gd2UgbmVlZCB0byBjaGVjayB0aGF0IHRoZSBwYXlvciBvcmdhbml6YXRpb24gaXMgdGhlIHNhbWUgYXMgdGhlIHNvdXJjZSBvZiB0aGUgcHJpb3IgYXV0aCBmb3JtPwpkZWZpbmUgIlBvbGljeSBOdW1iZXIiOgogIFVDRS5Qb2xpY3lOdW1iZXIoIk1lbWJlciBDb3ZlcmFnZSIpLnZhbHVlCgpkZWZpbmUgIlJlcXVlc3RpbmcgUHJvdmlkZXIiOgogIFVDRS5SZXF1ZXN0aW5nUHJvdmlkZXIoIlNlcnZpY2UgUmVxdWVzdCIpCgpkZWZpbmUgIlJlcXVlc3RpbmcgUHJvdmlkZXIgTmFtZSI6CiAgIlJlcXVlc3RpbmcgUHJvdmlkZXIiLm5hbWUuZmFtaWx5CgpkZWZpbmUgIlJlcXVlc3RpbmcgUHJvdmlkZXIgUGhvbmUiOgogIFVDLldvcmsoIlJlcXVlc3RpbmcgUHJvdmlkZXIiLnRlbGVjb20pLnZhbHVlCgpkZWZpbmUgIlJlcXVlc3RpbmcgUHJvdmlkZXIgQWRkcmVzcyI6CiAgKHNpbmdsZXRvbiBmcm9tICJSZXF1ZXN0aW5nIFByb3ZpZGVyIi5hZGRyZXNzKS5saW5lCgpkZWZpbmUgIlJlcXVlc3RpbmcgUHJvdmlkZXIgTlBJIjoKICAiUmVxdWVzdGluZyBQcm92aWRlciIuaWRlbnRpZmllciBJIAogIHdoZXJlIEkuc3lzdGVtID0gJ2h0dHA6Ly9obDcub3JnL2ZoaXIvc2lkL3VzLW5waScKICByZXR1cm4gSS52YWx1ZQoKZGVmaW5lICJSZXF1ZXN0aW5nIFByb3ZpZGVyIEZheCI6CiAgIlJlcXVlc3RpbmcgUHJvdmlkZXIiLnRlbGVjb20gVAogIHdoZXJlIFQuc3lzdGVtID0gJ2ZheCcKICByZXR1cm4gVC52YWx1ZQoKZGVmaW5lICJTZXJ2aWNpbmcgUHJvdmlkZXIiOgogIFVDRS5TZXJ2aWNpbmdQcm92aWRlcigiU2VydmljZSBSZXF1ZXN0IikKCmRlZmluZSAiU2VydmljaW5nIFByb3ZpZGVyIE5hbWUiOgogICJTZXJ2aWNpbmcgUHJvdmlkZXIiLm5hbWUKCmRlZmluZSAiU2VydmljaW5nIFByb3ZpZGVyIFBob25lIjoKICBVQy5Xb3JrKCJTZXJ2aWNpbmcgUHJvdmlkZXIiLnRlbGVjb20pLnZhbHVlCgpkZWZpbmUgIlNlcnZpY2luZyBQcm92aWRlciBBZGRyZXNzIjoKICAoc2luZ2xldG9uIGZyb20gIlNlcnZpY2luZyBQcm92aWRlciIuYWRkcmVzcykudGV4dAoKZGVmaW5lICJTZXJ2aWNpbmcgUHJvdmlkZXIgTlBJIjoKICAiU2VydmljaW5nIFByb3ZpZGVyIi5pZGVudGlmaWVyIEkgCiAgd2hlcmUgSS5zeXN0ZW0gPSAnaHR0cDovL2hsNy5vcmcvZmhpci9zaWQvdXMtbnBpJwogIHJldHVybiBJLnZhbHVlCgpkZWZpbmUgIlNlcnZpY2luZyBQcm92aWRlciBGYXgiOgogICJTZXJ2aWNpbmcgUHJvdmlkZXIiLnRlbGVjb20gVAogIHdoZXJlIFQuc3lzdGVtID0gJ2ZheCcKICByZXR1cm4gVC52YWx1ZQ=="/>
</content>
<content>
<contentType value="application/elm+xml"/>
</content>
</Library>