3984 rework immunization cql unit test (#4005)
* 3984 added test resources * 3984 added unit test for ontario immunization POC * #3084 reworking unit tests to showcase immunization evaluation POC Co-authored-by: Anna <anna@MacBook-Pro.local>
This commit is contained in:
parent
002a7dc670
commit
d22651a7c4
|
@ -2,234 +2,64 @@ package ca.uhn.fhir.cql.r4;
|
|||
|
||||
import ca.uhn.fhir.cql.BaseCqlR4Test;
|
||||
import ca.uhn.fhir.cql.r4.provider.MeasureOperationsProvider;
|
||||
import ca.uhn.fhir.util.BundleUtil;
|
||||
import org.apache.commons.collections.map.HashedMap;
|
||||
import org.hl7.fhir.instance.model.api.IBaseResource;
|
||||
import org.hl7.fhir.r4.model.Base64BinaryType;
|
||||
import org.hl7.fhir.r4.model.Bundle;
|
||||
import org.hl7.fhir.r4.model.DateTimeType;
|
||||
import org.hl7.fhir.r4.model.IdType;
|
||||
import org.hl7.fhir.r4.model.Library;
|
||||
import org.hl7.fhir.r4.model.Measure;
|
||||
import org.hl7.fhir.r4.model.MeasureReport;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Base64;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
/**
|
||||
* This testing class and the used resources are work in progress and will likely be subject to change.
|
||||
* This class tests the functionality of $evaluate-measure for the ImmunizationStatus use case
|
||||
* A full documentation of this use case as well as more information on the test data that is used can be found here:
|
||||
* https://gitlab.com/smilecdr-open-source/immunization-cql-poc/-/blob/main/documentation/Immunization-CQL-Guide.md
|
||||
*/
|
||||
public class CqlMeasureEvaluationR4ImmunizationTest extends BaseCqlR4Test {
|
||||
Logger ourLog = LoggerFactory.getLogger(CqlMeasureEvaluationR4ImmunizationTest.class);
|
||||
|
||||
@Autowired
|
||||
MeasureOperationsProvider myMeasureOperationsProvider;
|
||||
@Autowired
|
||||
MeasureOperationsProvider myMeasureOperationsProvider;
|
||||
|
||||
private static final String MY_TESTBUNDLE_MMR_SIMPLE = "r4/immunization/testdata-bundles/Testbundle_3Patients_1MMRVaccinated_1PVaccinated_1NoVaccination.json";
|
||||
private static final String MY_TESTBUNDLE_MMR_INCL_PRACTITIONER = "r4/immunization/testdata-bundles/Testbundle_Patients_By_Practitioner.json";
|
||||
private static final String MY_FHIR_COMMON = "r4/immunization/Fhir_Common.json";
|
||||
private static final String MY_FHIR_HELPERS = "r4/immunization/Fhir_Helper.json";
|
||||
private static final String MY_TEST_DATA = "r4/immunization/Patients_Encounters_Immunizations_Practitioners.json";
|
||||
private static final String MY_IMMUNIZATION_CQL_RESOURCES = "r4/immunization/Measure_Library_Ontario_ImmunizationStatus.json";
|
||||
private static final String MY_VALUE_SETS = "r4/immunization/Terminology_ValueSets.json";
|
||||
|
||||
|
||||
//overall testing function including bundle manipulation and evaluation and assertion
|
||||
protected void testMeasureScoresByBundleAndCQLLocation(String theBundleLocation, String theCQLMeasureLocation, String thePractitionerRef, Map<String, Double> theExpectedScores) throws IOException {
|
||||
|
||||
//load provided bundle and replace placeholder CQL content of Library with CQL content of provided file location
|
||||
Bundle bundle = loadBundleFromFileLocationAndManipulate(theBundleLocation, theCQLMeasureLocation);
|
||||
//we require at least one MeasureReport in the bundle
|
||||
List<MeasureReport> measureReports = findMeasureReportsOrThrowException(bundle);
|
||||
|
||||
//evaluate each measure report of the provided bundle
|
||||
for (MeasureReport report : measureReports) {
|
||||
double expectedScore = theExpectedScores.get(report.getIdentifierFirstRep().getValue());
|
||||
evaluateSingleReport(report, thePractitionerRef, expectedScore);
|
||||
}
|
||||
}
|
||||
|
||||
//overall testing function including bundle manipulation and evaluation and assertion
|
||||
protected void testMeasureScoresByBundleAndCQLLocation(String theBundleLocation, String theCQLMeasureLocation, String thePractitionerRef, double theExpectedScore) throws IOException {
|
||||
//load provided bundle and replace placeholder CQL content of Library with CQL content of provided file location
|
||||
Bundle bundle = loadBundleFromFileLocationAndManipulate(theBundleLocation, theCQLMeasureLocation);
|
||||
//we require at least one MeasureReport in the bundle
|
||||
List<MeasureReport> measureReports = findMeasureReportsOrThrowException(bundle);
|
||||
|
||||
//evaluate each measure report of the provided bundle
|
||||
for (MeasureReport report : measureReports) {
|
||||
evaluateSingleReport(report, thePractitionerRef, theExpectedScore);
|
||||
}
|
||||
//compare 2 double values to assert no difference between expected and actual measure score
|
||||
protected void assertMeasureScore(MeasureReport theReport, double theExpectedScore) {
|
||||
//find the predefined expected score by looking up the report identifier
|
||||
double epsilon = 0.000001d;
|
||||
double actualScore = theReport.getGroupFirstRep().getMeasureScore().getValue().doubleValue();
|
||||
assertEquals(theExpectedScore, actualScore, epsilon);
|
||||
}
|
||||
|
||||
protected void evaluateSingleReport (MeasureReport theReport, String thePractitionerRef, double theExpectedScore) {
|
||||
MeasureReport actualEvaluatedReport = this.evaluateMeasure(theReport, thePractitionerRef);
|
||||
ourLog.info("Score of evaluation: {}", actualEvaluatedReport.getGroupFirstRep().getMeasureScore().getValue());
|
||||
assertMeasureScore(actualEvaluatedReport, theExpectedScore);
|
||||
}
|
||||
//double compare to assert no difference between expected and actual measure score
|
||||
protected void assertMeasureScore(MeasureReport theReport, double theExpectedScore) {
|
||||
//find the predefined expected score by looking up the report identifier
|
||||
double epsilon = 0.000001d;
|
||||
double actualScore = theReport.getGroupFirstRep().getMeasureScore().getValue().doubleValue();
|
||||
assertEquals(theExpectedScore, actualScore, epsilon);
|
||||
}
|
||||
//evaluates a Measure to produce one certain MeasureReport
|
||||
protected MeasureReport evaluateMeasureByMeasure(String theMeasureId, String thePractitionerRef, String thePatientRef) {
|
||||
|
||||
//evaluates a Measure to produce one certain MeasureReport
|
||||
protected MeasureReport evaluateMeasure(MeasureReport theMeasureReport, String thePractitionerRef) {
|
||||
String measureId = this.getMeasureId(theMeasureReport);
|
||||
String patientId = null;
|
||||
//only when the type of the MeasureReport is set to 'individual', there is a patient required as a subject (i.e. not for a 'summary' report)
|
||||
if (theMeasureReport.getSubject().getReference() != null) {
|
||||
patientId = this.getPatientId(theMeasureReport);
|
||||
}
|
||||
String periodStart = this.getPeriodStart(theMeasureReport);
|
||||
String periodEnd = this.getPeriodEnd(theMeasureReport);
|
||||
String measureReportIdentifier = theMeasureReport.getIdentifierFirstRep().getValue();
|
||||
String measureReportType = theMeasureReport.getTypeElement().getValueAsString();
|
||||
|
||||
//only when the type of the MeasureReport is set to 'individual', there is a patient required as a subject (i.e. not for a 'summary' report)
|
||||
if (patientId == null) {
|
||||
ourLog.info("Evaluating Measure '{}' for MeasureReport '{}' of type '{}': [{} - {}]", measureId, measureReportIdentifier, measureReportType, periodStart, periodEnd);
|
||||
} else {
|
||||
ourLog.info("Evaluating Measure '{}' for MeasureReport '{}' of type '{}' for Patient '{}' [{} - {}]", measureId, measureReportIdentifier, measureReportType, patientId, periodStart, periodEnd);
|
||||
}
|
||||
|
||||
return this.myMeasureOperationsProvider.evaluateMeasure(new IdType("Measure", measureId),
|
||||
periodStart, periodEnd, null,
|
||||
|
||||
"subject", patientId,
|
||||
|
||||
null, thePractitionerRef, null, null, null, null, myRequestDetails);
|
||||
}
|
||||
|
||||
//helper function to manipulate a test bundle
|
||||
//loads a bundle from theBundleLocation: requirement: containing 1 exact FHIR Measure
|
||||
//finds the relevant measure, determines the related Library and replaces the CQL content of that Library with a separate CQL file
|
||||
//the CQL file defined by theCQLLocation contains regular CQL text and is automatically transformed into base64 content and automatically replaces the Library content
|
||||
//this process keeps manual testing simple, as the only place to change the CQL logic is by adding a new CQL file (containing no test resources and no other content) and writing a unit test with that CQL file path
|
||||
protected Bundle loadBundleFromFileLocationAndManipulate(String theBundleLocation, String theCQLLocation) throws IOException {
|
||||
Bundle bundle = parseBundle(theBundleLocation);
|
||||
//manipulate Bundle
|
||||
Measure measure = findExactlyOneMeasuresOrThrowException(bundle);
|
||||
Library libraryToManipulate = findLibraryById(bundle, measure.getLibrary().get(0).getValue());
|
||||
replaceCQLOfLibrary(libraryToManipulate, theCQLLocation);
|
||||
loadBundle(bundle, myRequestDetails);
|
||||
return bundle;
|
||||
}
|
||||
|
||||
//requirement: test bundle must contain exactly one Measure resource
|
||||
protected Measure findExactlyOneMeasuresOrThrowException(Bundle theBundle) {
|
||||
List<Measure> measures = BundleUtil.toListOfResourcesOfType(myFhirContext, theBundle, Measure.class);
|
||||
if (measures == null || measures.isEmpty()) {
|
||||
throw new IllegalArgumentException(String.format("No measures found for Bundle %s", theBundle.getId()));
|
||||
} else if (measures.size() > 1) {
|
||||
throw new IllegalArgumentException(String.format("Too many measures found for Bundle %s. Only one measure is allowed for this automated testing setup.", theBundle.getId()));
|
||||
}
|
||||
return measures.get(0);
|
||||
}
|
||||
|
||||
//requirement: test bundle must contain at least one MeasureReport resource
|
||||
protected List<MeasureReport> findMeasureReportsOrThrowException(Bundle theBundle) {
|
||||
List<MeasureReport> reports = BundleUtil.toListOfResourcesOfType(myFhirContext, theBundle, MeasureReport.class);
|
||||
if (reports == null || reports.isEmpty()) {
|
||||
throw new IllegalArgumentException(String.format("No measure reports found for Bundle %s", theBundle.getId()));
|
||||
}
|
||||
return reports;
|
||||
}
|
||||
|
||||
//returns a Library resource of a bundle by a given ID
|
||||
protected Library findLibraryById(Bundle theBundle, String theLibraryId) {
|
||||
List<Library> libraries = BundleUtil.toListOfResourcesOfType(myFhirContext, theBundle, Library.class);
|
||||
return libraries.stream().filter(lib -> lib.getId().equals(theLibraryId)).findFirst().orElse(null);
|
||||
}
|
||||
|
||||
//the provided Library resource only contains a placeholder CQL
|
||||
//this function replaces this placeholder CQL with the content of a specified file
|
||||
protected Library replaceCQLOfLibrary(Library theLibrary, String theCQLFileLocation) throws IOException {
|
||||
String decodedCQLString = stringFromResource(theCQLFileLocation);
|
||||
|
||||
//replace cql in library
|
||||
String encodedCQLString = Base64.getEncoder().encodeToString(decodedCQLString.getBytes(StandardCharsets.UTF_8));
|
||||
Base64BinaryType encodedCQLBinary = new Base64BinaryType();
|
||||
encodedCQLBinary.setValueAsString(encodedCQLString);
|
||||
theLibrary.getContentFirstRep().setDataElement(encodedCQLBinary);
|
||||
return theLibrary;
|
||||
}
|
||||
|
||||
// TODO: In R4 the Subject will not necessarily be a Patient.
|
||||
public String getPatientId(MeasureReport measureReport) {
|
||||
String[] subjectRefParts = measureReport.getSubject().getReference().split("/");
|
||||
String patientId = subjectRefParts[subjectRefParts.length - 1];
|
||||
return patientId;
|
||||
}
|
||||
|
||||
public String getMeasureId(MeasureReport measureReport) {
|
||||
String[] measureRefParts = measureReport.getMeasure().split("/");
|
||||
String measureId = measureRefParts[measureRefParts.length - 1];
|
||||
return measureId;
|
||||
}
|
||||
|
||||
public String getPeriodStart(MeasureReport measureReport) {
|
||||
Date periodStart = measureReport.getPeriod().getStart();
|
||||
if (periodStart != null) {
|
||||
return toDateString(periodStart);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getPeriodEnd(MeasureReport measureReport) {
|
||||
Date periodEnd = measureReport.getPeriod().getEnd();
|
||||
if (periodEnd != null) {
|
||||
return toDateString(periodEnd);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public String toDateString(Date date) {
|
||||
return new DateTimeType(date).getValueAsString();
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void test_Immunization_MMR_Individual_Vaccinated() throws IOException {
|
||||
Map<String, Double> expectedScoresByIdentifier = new HashedMap();
|
||||
|
||||
//expected result: individual should be in numerator because Patient is MMR vaccinated
|
||||
expectedScoresByIdentifier.put("measureReportIndividualVaccinatedPatient", 1.0);
|
||||
//expected result: individual should not be in numerator because Patient is not MMR vaccinated (only Pertussis)
|
||||
expectedScoresByIdentifier.put("measureReportIndividualNotMMRVaccinatedPatient", 0.0);
|
||||
//expected result: individual should not be in numerator because Patient is not at all vaccinated (no associated Immmunization resource)
|
||||
expectedScoresByIdentifier.put("measureReportIndividualNotAtAllVaccinatedPatient", 0.0);
|
||||
//expected result: summary confirms that 1 out of all 3 patients are MMR immunized
|
||||
expectedScoresByIdentifier.put("measureReportSummary", 1.0 / 3.0);
|
||||
|
||||
//note: all those CQL files specified as the second parameter produce the exact same outcome with the given test resources provided by the first parameter.
|
||||
//TODO: tests are dependent and will fail if the order is incorrect. --> clean up tests
|
||||
this.testMeasureScoresByBundleAndCQLLocation(MY_TESTBUNDLE_MMR_SIMPLE, "r4/immunization/cqls/3-Vaccine-Codes-Defined-By-ValueSet-MMR-Vaccine-Codes.cql", null, expectedScoresByIdentifier);
|
||||
this.testMeasureScoresByBundleAndCQLLocation(MY_TESTBUNDLE_MMR_SIMPLE, "r4/immunization/cqls/1-Explicit-Vaccine-Codes-From-Any-System.cql", null, expectedScoresByIdentifier);
|
||||
this.testMeasureScoresByBundleAndCQLLocation(MY_TESTBUNDLE_MMR_SIMPLE, "r4/immunization/cqls/2-Explicit-Vaccine-Codes-And-Systems.cql", null, expectedScoresByIdentifier);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void test_Immunization_ByPractitioner_MMR_Summary() throws IOException {
|
||||
//half of dreric' s patients (total of 2) are vaccinated, so 1/2 is vaccinated.
|
||||
this.testMeasureScoresByBundleAndCQLLocation(MY_TESTBUNDLE_MMR_INCL_PRACTITIONER, "r4/immunization/cqls/3-Vaccine-Codes-Defined-By-ValueSet-MMR-Vaccine-Codes.cql", "Practitioner/dreric", 1.0/2.0);
|
||||
//of drfrank's patients (total of 1), none are vaccinated
|
||||
this.testMeasureScoresByBundleAndCQLLocation(MY_TESTBUNDLE_MMR_INCL_PRACTITIONER, "r4/immunization/cqls/3-Vaccine-Codes-Defined-By-ValueSet-MMR-Vaccine-Codes.cql", "Practitioner/drfrank", 0.0/1.0);
|
||||
return this.myMeasureOperationsProvider.evaluateMeasure(new IdType("Measure", theMeasureId), null, null, null, "subject", thePatientRef, null, thePractitionerRef, null, null, null, null, myRequestDetails);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_Immunization_ByAge() throws IOException {
|
||||
//be aware that this test will fail eventually, because this patient will at some point become one years old (today - birthdate > 1 year)
|
||||
//this patient is not yet immunized, because too young. so it won't be counted as a denominator patient and therefore the measure score is corrected to have a higher percentage
|
||||
//of dreric' s patients, all are vaccinated, because the second patient who is not vaccinated yet doesn't meet the age criteria (denominator), so 1/1 is vaccinated.
|
||||
this.testMeasureScoresByBundleAndCQLLocation(MY_TESTBUNDLE_MMR_INCL_PRACTITIONER, "r4/immunization/cqls/4-Patients-ByAge.cql", "Practitioner/dreric", 1.0/1.0);
|
||||
}
|
||||
public void test_Immunization_Ontario_Schedule() throws IOException {
|
||||
//given
|
||||
loadBundle(MY_FHIR_COMMON);
|
||||
loadBundle(MY_FHIR_HELPERS);
|
||||
loadBundle(MY_TEST_DATA);
|
||||
loadBundle(MY_VALUE_SETS);
|
||||
loadBundle(MY_IMMUNIZATION_CQL_RESOURCES);
|
||||
|
||||
//when
|
||||
MeasureReport reportBasic = evaluateMeasureByMeasure("ImmunizationStatus", null, null);
|
||||
MeasureReport reportByPractitioner = evaluateMeasureByMeasure("ImmunizationStatus", "Practitioner/ImmunizationStatus-practitioner-3", null);
|
||||
MeasureReport reportIndividualImmunized = evaluateMeasureByMeasure("ImmunizationStatus", null, "ImmunizationStatus-1-year-patient-1");
|
||||
MeasureReport reportIndividualNotImmunized = evaluateMeasureByMeasure("ImmunizationStatus", null, "ImmunizationStatus-1-year-patient-2");
|
||||
|
||||
//then
|
||||
assertMeasureScore(reportBasic, 0.25);
|
||||
assertMeasureScore(reportByPractitioner, 0.285714);
|
||||
assertMeasureScore(reportIndividualImmunized, 1.0);
|
||||
assertMeasureScore(reportIndividualNotImmunized, 0.0);
|
||||
}
|
||||
}
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,344 +1,8 @@
|
|||
{
|
||||
"resourceType": "Bundle",
|
||||
"id": "bundle-mmr-single",
|
||||
"id": "bundle-fhir-helpers",
|
||||
"type": "transaction",
|
||||
"entry": [
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "ValueSet",
|
||||
"id": "mmr-vaccine-codes",
|
||||
"url": "http://hl7.org/fhir/ValueSet/mmr-vaccine-codes",
|
||||
"version": "4.0.1",
|
||||
"status": "active",
|
||||
"experimental": false,
|
||||
"date": "2019-11-01T09:29:23+11:00",
|
||||
"compose": {
|
||||
"include": [
|
||||
{
|
||||
"system": "http://hl7.org/fhir/sid/cvx",
|
||||
"concept": [
|
||||
{
|
||||
"code": "03",
|
||||
"display": "MMR"
|
||||
},
|
||||
{
|
||||
"code": "94",
|
||||
"display": "MMRV"
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"system": "urn:oid:1.2.36.1.2001.1005.17",
|
||||
"concept": [
|
||||
{
|
||||
"code": "MMR",
|
||||
"display": "MMR"
|
||||
},
|
||||
{
|
||||
"code": "MMRCSL",
|
||||
"display": "MMR II"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "ValueSet/mmr-vaccine-codes"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "Patient",
|
||||
"id": "mmrVaccinatedPatient",
|
||||
"name": [
|
||||
{
|
||||
"family": "Morrow",
|
||||
"given": [
|
||||
"Isaac"
|
||||
]
|
||||
}
|
||||
],
|
||||
"gender": "male",
|
||||
"birthDate": "1955-11-05"
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "Patient/mmrVaccinatedPatient"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "Patient",
|
||||
"id": "notMMRVaccinatedPatient",
|
||||
"name": [
|
||||
{
|
||||
"family": "Wills",
|
||||
"given": [
|
||||
"Eira"
|
||||
]
|
||||
}
|
||||
],
|
||||
"gender": "female",
|
||||
"birthDate": "2001-05-22"
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "Patient/notMMRVaccinatedPatient"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "Immunization",
|
||||
"status": "completed",
|
||||
"vaccineCode": {
|
||||
"coding": [
|
||||
{
|
||||
"system": "http://hl7.org/fhir/sid/cvx",
|
||||
"code": "03",
|
||||
"display": "MMR"
|
||||
}
|
||||
],
|
||||
"text": "MMR according to http://hl7.org/fhir/valueset-vaccine-code.html"
|
||||
},
|
||||
"patient": {
|
||||
"reference": "Patient/mmrVaccinatedPatient"
|
||||
},
|
||||
"occurrenceDateTime": "2017-04-25"
|
||||
},
|
||||
"request": {
|
||||
"method": "POST",
|
||||
"url": "Immunization"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "Immunization",
|
||||
"status": "completed",
|
||||
"vaccineCode": {
|
||||
"coding": [
|
||||
{
|
||||
"system": "urn:oid:1.2.36.1.2001.1005.17",
|
||||
"code": "Pe",
|
||||
"display": "Pertussis"
|
||||
}
|
||||
],
|
||||
"text": "MMR according to http://hl7.org/fhir/valueset-vaccine-code.html"
|
||||
},
|
||||
"patient": {
|
||||
"reference": "Patient/notMMRVaccinatedPatient"
|
||||
},
|
||||
"occurrenceDateTime": "2019-01-02"
|
||||
},
|
||||
"request": {
|
||||
"method": "POST",
|
||||
"url": "Immunization"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "Patient",
|
||||
"id": "notAtAllVaccinatedPatient",
|
||||
"name": [
|
||||
{
|
||||
"family": "Lee",
|
||||
"given": [
|
||||
"Jane"
|
||||
]
|
||||
}
|
||||
],
|
||||
"gender": "female",
|
||||
"birthDate": "1993-12-08"
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "Patient/notAtAllVaccinatedPatient"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "Measure",
|
||||
"id": "mmrImmunizationMeasure",
|
||||
"name": "mmrImmunizationMeasure",
|
||||
"title": "Is immunized for MMR",
|
||||
"status": "active",
|
||||
"group": [
|
||||
{
|
||||
"id": "group-1",
|
||||
"population": [
|
||||
{
|
||||
"code": {
|
||||
"coding": [
|
||||
{
|
||||
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
|
||||
"code": "initial-population",
|
||||
"display": "InitialPopulation"
|
||||
}
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"language": "text/cql",
|
||||
"expression": "InitialPopulation"
|
||||
}
|
||||
},
|
||||
{
|
||||
"code": {
|
||||
"coding": [
|
||||
{
|
||||
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
|
||||
"code": "numerator",
|
||||
"display": "Numerator"
|
||||
}
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"language": "text/cql",
|
||||
"expression": "Numerator"
|
||||
}
|
||||
},
|
||||
{
|
||||
"code": {
|
||||
"coding": [
|
||||
{
|
||||
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
|
||||
"code": "denominator",
|
||||
"display": "Denominator"
|
||||
}
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"language": "text/cql",
|
||||
"expression": "Denominator"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"relatedArtifact": [
|
||||
{
|
||||
"type": "depends-on",
|
||||
"resource": "Library/library-FHIRHelpers-4.0.1"
|
||||
}
|
||||
],
|
||||
"scoring": {
|
||||
"coding": [
|
||||
{
|
||||
"code": "ratio"
|
||||
}
|
||||
]
|
||||
},
|
||||
"library": [
|
||||
"Library/immunizationCQLLibrary"
|
||||
]
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "Measure/mmrImmunizationMeasure"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "MeasureReport",
|
||||
"status": "complete",
|
||||
"identifier": [
|
||||
{
|
||||
"value": "measureReportIndividualVaccinatedPatient"
|
||||
}
|
||||
],
|
||||
"type": "individual",
|
||||
"measure": "Measure/mmrImmunizationMeasure",
|
||||
"date": "2014-04-01",
|
||||
"subject": {
|
||||
"reference": "Patient/mmrVaccinatedPatient"
|
||||
},
|
||||
"period": {
|
||||
"start": "2022-01-01",
|
||||
"end": "2023-03-31"
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"method": "POST",
|
||||
"url": "MeasureReport"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "MeasureReport",
|
||||
"identifier":
|
||||
[
|
||||
{
|
||||
"value": "measureReportIndividualNotMMRVaccinatedPatient"
|
||||
}
|
||||
],
|
||||
"status": "complete",
|
||||
"type": "individual",
|
||||
"measure": "Measure/mmrImmunizationMeasure",
|
||||
"date": "2014-04-01",
|
||||
"subject": {
|
||||
"reference": "Patient/notMMRVaccinatedPatient"
|
||||
},
|
||||
"period": {
|
||||
"start": "2014-01-01",
|
||||
"end": "2014-03-31"
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"method": "POST",
|
||||
"url": "MeasureReport"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "MeasureReport",
|
||||
"identifier":
|
||||
[
|
||||
{
|
||||
"value": "measureReportIndividualNotAtAllVaccinatedPatient"
|
||||
}
|
||||
],
|
||||
"status": "complete",
|
||||
"type": "individual",
|
||||
"measure": "Measure/mmrImmunizationMeasure",
|
||||
"date": "2014-04-01",
|
||||
"subject": {
|
||||
"reference": "Patient/notAtAllVaccinatedPatient"
|
||||
},
|
||||
"period": {
|
||||
"start": "2014-01-01",
|
||||
"end": "2014-03-31"
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"method": "POST",
|
||||
"url": "MeasureReport"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "MeasureReport",
|
||||
"identifier":
|
||||
[
|
||||
{
|
||||
"value": "measureReportSummary"
|
||||
}
|
||||
],
|
||||
"status": "complete",
|
||||
"type": "summary",
|
||||
"measure": "Measure/mmrImmunizationMeasure",
|
||||
"date": "2014-04-01",
|
||||
"period": {
|
||||
"start": "2014-01-01",
|
||||
"end": "2014-03-31"
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"method": "POST",
|
||||
"url": "MeasureReport"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "Library",
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,612 @@
|
|||
{
|
||||
"resourceType": "Bundle",
|
||||
"id": "valuesets-ImmunizationStatus-bundle",
|
||||
"type": "transaction",
|
||||
"entry": [
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "ValueSet",
|
||||
"id": "2.16.840.1.113883.3.464.1003.196.11.1212",
|
||||
"meta": {
|
||||
"versionId": "27",
|
||||
"lastUpdated": "2021-09-14T01:00:46.000-04:00"
|
||||
},
|
||||
"url": "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.11.1212",
|
||||
"version": "20210914",
|
||||
"name": "DTaP Vaccine",
|
||||
"status": "active",
|
||||
"date": "2021-09-14T01:00:46-04:00",
|
||||
"publisher": "NCQA PHEMUR",
|
||||
"compose": {
|
||||
"include": [
|
||||
{
|
||||
"system": "http://hl7.org/fhir/sid/cvx",
|
||||
"version": "20220615",
|
||||
"concept": [
|
||||
{
|
||||
"code": "106",
|
||||
"display": "diphtheria, tetanus toxoids and acellular pertussis vaccine, 5 pertussis antigens"
|
||||
},
|
||||
{
|
||||
"code": "107",
|
||||
"display": "diphtheria, tetanus toxoids and acellular pertussis vaccine, unspecified formulation"
|
||||
},
|
||||
{
|
||||
"code": "110",
|
||||
"display": "DTaP-hepatitis B and poliovirus vaccine"
|
||||
},
|
||||
{
|
||||
"code": "120",
|
||||
"display": "diphtheria, tetanus toxoids and acellular pertussis vaccine, Haemophilus influenzae type b conjugate, and poliovirus vaccine, inactivated (DTaP-Hib-IPV)"
|
||||
},
|
||||
{
|
||||
"code": "146",
|
||||
"display": "Diphtheria and Tetanus Toxoids and Acellular Pertussis Adsorbed, Inactivated Poliovirus, Haemophilus b Conjugate (Meningococcal Protein Conjugate), and Hepatitis B (Recombinant) Vaccine."
|
||||
},
|
||||
{
|
||||
"code": "20",
|
||||
"display": "diphtheria, tetanus toxoids and acellular pertussis vaccine"
|
||||
},
|
||||
{
|
||||
"code": "50",
|
||||
"display": "DTaP-Haemophilus influenzae type b conjugate vaccine"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "ValueSet/2.16.840.1.113883.3.464.1003.196.11.1212"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "ValueSet",
|
||||
"id": "valuesets-HB",
|
||||
"url": "http://hl7.org/fhir/ValueSet/vaccine-HB",
|
||||
"version": "4.0.1",
|
||||
"status": "active",
|
||||
"experimental": false,
|
||||
"date": "2019-11-01T09:29:23+11:00",
|
||||
"compose": {
|
||||
"include": [
|
||||
{
|
||||
"system": "http://hl7.org/fhir/sid/cvx",
|
||||
"concept": [
|
||||
{
|
||||
"code": "08",
|
||||
"display": "hepatitis B vaccine, pediatric or pediatric/adolescent dosage"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "ValueSet/valuesets-HB"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "ValueSet",
|
||||
"id": "valuesets-HPV-9",
|
||||
"url": "http://hl7.org/fhir/ValueSet/vaccine-HPV-9",
|
||||
"version": "4.0.1",
|
||||
"status": "active",
|
||||
"experimental": false,
|
||||
"date": "2019-11-01T09:29:23+11:00",
|
||||
"compose": {
|
||||
"include": [
|
||||
{
|
||||
"system": "http://hl7.org/fhir/sid/cvx",
|
||||
"concept": [
|
||||
{
|
||||
"code": "137",
|
||||
"display": "HPV, unspecified formulation"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "ValueSet/valuesets-HPV-9"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "ValueSet",
|
||||
"id": "valuesets-HZ",
|
||||
"url": "http://hl7.org/fhir/ValueSet/vaccine-HZ",
|
||||
"version": "4.0.1",
|
||||
"status": "active",
|
||||
"experimental": false,
|
||||
"date": "2019-11-01T09:29:23+11:00",
|
||||
"compose": {
|
||||
"include": [
|
||||
{
|
||||
"system": "http://hl7.org/fhir/sid/cvx",
|
||||
"concept": [
|
||||
{
|
||||
"code": "121",
|
||||
"display": "zoster vaccine, live"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "ValueSet/valuesets-HZ"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "ValueSet",
|
||||
"id": "valuesets-Inf",
|
||||
"url": "http://hl7.org/fhir/ValueSet/vaccine-Inf",
|
||||
"version": "4.0.1",
|
||||
"status": "active",
|
||||
"experimental": false,
|
||||
"date": "2019-11-01T09:29:23+11:00",
|
||||
"compose": {
|
||||
"include": [
|
||||
{
|
||||
"system": "http://hl7.org/fhir/sid/cvx",
|
||||
"concept": [
|
||||
{
|
||||
"code": "135",
|
||||
"display": "influenza, high dose seasonal, preservative-free"
|
||||
},
|
||||
{
|
||||
"code": "140",
|
||||
"display": "Influenza, seasonal, injectable, preservative free"
|
||||
},
|
||||
{
|
||||
"code": "141",
|
||||
"display": "Influenza, seasonal, injectable"
|
||||
},
|
||||
{
|
||||
"code": "144",
|
||||
"display": "seasonal influenza, intradermal, preservative free"
|
||||
},
|
||||
{
|
||||
"code": "155",
|
||||
"display": "Seasonal, trivalent, recombinant, injectable influenza vaccine, preservative free"
|
||||
},
|
||||
{
|
||||
"code": "168",
|
||||
"display": "Seasonal trivalent influenza vaccine, adjuvanted, preservative free"
|
||||
},
|
||||
{
|
||||
"code": "185",
|
||||
"display": "Seasonal, quadrivalent, recombinant, injectable influenza vaccine, preservative free"
|
||||
},
|
||||
{
|
||||
"code": "197",
|
||||
"display": "influenza, high-dose seasonal, quadrivalent, .7mL dose, preservative free"
|
||||
},
|
||||
{
|
||||
"code": "205",
|
||||
"display": "influenza, seasonal vaccine, quadrivalent, adjuvanted, .5mL dose, preservative free"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "ValueSet/valuesets-Inf"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "ValueSet",
|
||||
"id": "valuesets-Men-C-ACYW",
|
||||
"url": "http://hl7.org/fhir/ValueSet/vaccine-Men-C-ACYW",
|
||||
"version": "4.0.1",
|
||||
"status": "active",
|
||||
"experimental": false,
|
||||
"date": "2019-11-01T09:29:23+11:00",
|
||||
"compose": {
|
||||
"include": [
|
||||
{
|
||||
"system": "http://hl7.org/fhir/sid/cvx",
|
||||
"concept": [
|
||||
{
|
||||
"code": "108",
|
||||
"display": "meningococcal ACWY vaccine, unspecified formulation"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "ValueSet/valuesets-Men-C-ACYW"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "ValueSet",
|
||||
"id": "valuesets-Men-C-C",
|
||||
"url": "http://hl7.org/fhir/ValueSet/vaccine-Men-C-C",
|
||||
"version": "4.0.1",
|
||||
"status": "active",
|
||||
"experimental": false,
|
||||
"date": "2019-11-01T09:29:23+11:00",
|
||||
"compose": {
|
||||
"include": [
|
||||
{
|
||||
"system": "http://hl7.org/fhir/sid/cvx",
|
||||
"concept": [
|
||||
{
|
||||
"code": "103",
|
||||
"display": "meningococcal C conjugate vaccine"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "ValueSet/valuesets-Men-C-C"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "ValueSet",
|
||||
"id": "2.16.840.1.113883.3.464.1003.196.11.1235",
|
||||
"meta": {
|
||||
"versionId": "17",
|
||||
"lastUpdated": "2021-02-02T15:59:43.000-05:00"
|
||||
},
|
||||
"url": "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.11.1235",
|
||||
"version": "20170504",
|
||||
"name": "Measles, Mumps and Rubella (MMR) Vaccine",
|
||||
"status": "active",
|
||||
"date": "2017-05-04T01:00:13-04:00",
|
||||
"publisher": "NCQA PHEMUR",
|
||||
"compose": {
|
||||
"include": [
|
||||
{
|
||||
"system": "http://hl7.org/fhir/sid/cvx",
|
||||
"version": "20220615",
|
||||
"concept": [
|
||||
{
|
||||
"code": "03",
|
||||
"display": "measles, mumps and rubella virus vaccine"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "ValueSet/2.16.840.1.113883.3.464.1003.196.11.1235"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "ValueSet",
|
||||
"id": "valuesets-MMRV",
|
||||
"url": "http://hl7.org/fhir/ValueSet/vaccine-MMRV",
|
||||
"name": "measles, mumps, rubella, and varicella virus vaccine",
|
||||
"status": "active",
|
||||
"date": "2017-05-04T01:00:13-04:00",
|
||||
"publisher": "NCQA PHEMUR",
|
||||
"compose": {
|
||||
"include": [
|
||||
{
|
||||
"system": "http://hl7.org/fhir/sid/cvx",
|
||||
"version": "20220615",
|
||||
"concept": [
|
||||
{
|
||||
"code": "94",
|
||||
"display": "measles, mumps, rubella, and varicella virus vaccine"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "ValueSet/vaccine-MMRV"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "ValueSet",
|
||||
"id": "2.16.840.1.113883.3.464.1003.1158",
|
||||
"meta": {
|
||||
"versionId": "5",
|
||||
"lastUpdated": "2022-02-02T01:02:05.000-05:00"
|
||||
},
|
||||
"url": "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1158",
|
||||
"version": "20220202",
|
||||
"name": "Adult Pneumococcal Vaccine",
|
||||
"status": "active",
|
||||
"date": "2022-02-02T01:02:05-05:00",
|
||||
"publisher": "NCQA PHEMUR",
|
||||
"compose": {
|
||||
"include": [
|
||||
{
|
||||
"system": "http://hl7.org/fhir/sid/cvx",
|
||||
"version": "20220615",
|
||||
"concept": [
|
||||
{
|
||||
"code": "109",
|
||||
"display": "pneumococcal vaccine, unspecified formulation"
|
||||
},
|
||||
{
|
||||
"code": "133",
|
||||
"display": "pneumococcal conjugate vaccine, 13 valent"
|
||||
},
|
||||
{
|
||||
"code": "152",
|
||||
"display": "Pneumococcal Conjugate, unspecified formulation"
|
||||
},
|
||||
{
|
||||
"code": "215",
|
||||
"display": "Pneumococcal conjugate vaccine 15-valent (PCV15), polysaccharide CRM197 conjugate, adjuvant, preservative free"
|
||||
},
|
||||
{
|
||||
"code": "216",
|
||||
"display": "Pneumococcal conjugate vaccine 20-valent (PCV20), polysaccharide CRM197 conjugate, adjuvant, preservative free"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "ValueSet/2.16.840.1.113883.3.464.1003.1158"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "ValueSet",
|
||||
"id": "valuesets-Pneu-P-23",
|
||||
"url": "http://hl7.org/fhir/ValueSet/vaccine-Pneu-P-23",
|
||||
"version": "4.0.1",
|
||||
"status": "active",
|
||||
"experimental": false,
|
||||
"date": "2019-11-01T09:29:23+11:00",
|
||||
"compose": {
|
||||
"include": [
|
||||
{
|
||||
"system": "http://hl7.org/fhir/sid/cvx",
|
||||
"concept": [
|
||||
{
|
||||
"code": "33",
|
||||
"display": "pneumococcal polysaccharide vaccine, 23 valent"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "ValueSet/valuesets-Pneu-P-23"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "ValueSet",
|
||||
"id": "valuesets-pregnancy-status",
|
||||
"url": "http://hl7.org/fhir/ValueSet/valuesets-pregnancy-status",
|
||||
"version": "4.0.1",
|
||||
"status": "active",
|
||||
"experimental": false,
|
||||
"date": "2019-11-01T09:29:23+11:00",
|
||||
"compose": {
|
||||
"include": [
|
||||
{
|
||||
"system": "http://loinc.org",
|
||||
"concept": [
|
||||
{
|
||||
"code": "82810-3",
|
||||
"display": "Pregnancy status"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "ValueSet/valuesets-pregnancy-status"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "ValueSet",
|
||||
"id": "2.16.840.1.113883.3.464.1003.196.11.1232",
|
||||
"meta": {
|
||||
"versionId": "21",
|
||||
"lastUpdated": "2021-02-02T10:34:28.000-05:00"
|
||||
},
|
||||
"url": "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.11.1232",
|
||||
"version": "20180310",
|
||||
"name": "Rotavirus Vaccine (3 dose schedule)",
|
||||
"status": "active",
|
||||
"date": "2018-03-10T01:00:08-05:00",
|
||||
"publisher": "NCQA PHEMUR",
|
||||
"compose": {
|
||||
"include": [
|
||||
{
|
||||
"system": "http://hl7.org/fhir/sid/cvx",
|
||||
"version": "20220615",
|
||||
"concept": [
|
||||
{
|
||||
"code": "116",
|
||||
"display": "rotavirus, live, pentavalent vaccine"
|
||||
},
|
||||
{
|
||||
"code": "122",
|
||||
"display": "rotavirus vaccine, unspecified formulation"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "ValueSet/2.16.840.1.113883.3.464.1003.196.11.1232"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "ValueSet",
|
||||
"id": "valuesets-Tdap",
|
||||
"url": "http://hl7.org/fhir/ValueSet/vaccine-Tdap",
|
||||
"version": "4.0.1",
|
||||
"status": "active",
|
||||
"experimental": false,
|
||||
"date": "2019-11-01T09:29:23+11:00",
|
||||
"compose": {
|
||||
"include": [
|
||||
{
|
||||
"system": "http://hl7.org/fhir/sid/cvx",
|
||||
"concept": [
|
||||
{
|
||||
"code": "115",
|
||||
"display": "tetanus toxoid, reduced diphtheria toxoid, and acellular pertussis vaccine, adsorbed"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "ValueSet/valuesets-Tdap"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "ValueSet",
|
||||
"id": "valuesets-Tdap-IPV",
|
||||
"url": "http://hl7.org/fhir/ValueSet/vaccine-Tdap-IPV",
|
||||
"version": "4.0.1",
|
||||
"status": "active",
|
||||
"experimental": false,
|
||||
"date": "2019-11-01T09:29:23+11:00",
|
||||
"compose": {
|
||||
"include": [
|
||||
{
|
||||
"system": "http://hl7.org/fhir/sid/cvx",
|
||||
"concept": [
|
||||
{
|
||||
"code": "115",
|
||||
"display": "tetanus toxoid, reduced diphtheria toxoid, and acellular pertussis vaccine, adsorbed"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "ValueSet/valuesets-Tdap-IPV"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "ValueSet",
|
||||
"id": "valuesets-Td",
|
||||
"url": "http://hl7.org/fhir/ValueSet/vaccine-Td",
|
||||
"version": "4.0.1",
|
||||
"status": "active",
|
||||
"experimental": false,
|
||||
"date": "2019-11-01T09:29:23+11:00",
|
||||
"compose": {
|
||||
"include": [
|
||||
{
|
||||
"system": "http://hl7.org/fhir/sid/cvx",
|
||||
"concept": [
|
||||
{
|
||||
"code": "139",
|
||||
"display": "Td(adult) unspecified formulation"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "ValueSet/valuesets-Td"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "ValueSet",
|
||||
"id": "valuesets-vaccine-Var",
|
||||
"url": "http://hl7.org/fhir/ValueSet/vaccine-Var",
|
||||
"version": "4.0.1",
|
||||
"status": "active",
|
||||
"experimental": false,
|
||||
"date": "2019-11-01T09:29:23+11:00",
|
||||
"compose": {
|
||||
"include": [
|
||||
{
|
||||
"system": "http://hl7.org/fhir/sid/cvx",
|
||||
"concept": [
|
||||
{
|
||||
"code": "21",
|
||||
"display": "varicella virus vaccine"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "ValueSet/valuesets-vaccine-Var"
|
||||
}
|
||||
},
|
||||
{
|
||||
"resource": {
|
||||
"resourceType": "ValueSet",
|
||||
"id": "valuesets-weeks-of-gestation",
|
||||
"url": "http://hl7.org/fhir/ValueSet/valuesets-weeks-of-gestation",
|
||||
"version": "4.0.1",
|
||||
"status": "active",
|
||||
"experimental": false,
|
||||
"date": "2019-11-01T09:29:23+11:00",
|
||||
"compose": {
|
||||
"include": [
|
||||
{
|
||||
"system": "http://loinc.org",
|
||||
"concept": [
|
||||
{
|
||||
"code": "49051-6",
|
||||
"display": "Gestational age in weeks"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"method": "PUT",
|
||||
"url": "ValueSet/valuesets-weeks-of-gestation"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
library Retrieve
|
||||
using FHIR version '4.0.1'
|
||||
include FHIRHelpers version '4.0.1'
|
||||
|
||||
context Patient
|
||||
|
||||
define "MMR Vaccinated":
|
||||
[Immunization] Immu where
|
||||
(Immu.vaccineCode.coding[0].code=('03')) or
|
||||
(Immu.vaccineCode.coding[0].code=('94')) or
|
||||
(Immu.vaccineCode.coding[0].code=('MMR')) or
|
||||
(Immu.vaccineCode.coding[0].code=('MMRV')) or
|
||||
(Immu.vaccineCode.coding[0].code=('MMRCSL'))
|
||||
|
||||
define "InitialPopulation":
|
||||
true
|
||||
|
||||
define "Denominator":
|
||||
true
|
||||
|
||||
define "Numerator":
|
||||
exists("MMR Vaccinated")
|
|
@ -1,32 +0,0 @@
|
|||
library Retrieve
|
||||
using FHIR version '4.0.1'
|
||||
include FHIRHelpers version '4.0.1'
|
||||
|
||||
codesystem VaccineCVX: 'http://hl7.org/fhir/sid/cvx'
|
||||
codesystem VaccineOID: 'urn:oid:1.2.36.1.2001.1005.17'
|
||||
|
||||
context Patient
|
||||
|
||||
define "MMR Vaccinated 03":
|
||||
[Immunization: Code '03' from VaccineCVX] Immu where Immu.status in {'completed'}
|
||||
|
||||
define "MMR Vaccinated 94":
|
||||
[Immunization: Code '94' from VaccineCVX] Immu where Immu.status in {'completed'}
|
||||
|
||||
define "MMR Vaccinated MMR":
|
||||
[Immunization: Code 'MMR' from VaccineOID] Immu where Immu.status in {'completed'}
|
||||
|
||||
define "MMR Vaccinated MMRCSL":
|
||||
[Immunization: Code 'MMRCSL' from VaccineOID] Immu where Immu.status in {'completed'}
|
||||
|
||||
define "InitialPopulation":
|
||||
true
|
||||
|
||||
define "Denominator":
|
||||
true
|
||||
|
||||
define "Numerator":
|
||||
exists("MMR Vaccinated 03") or
|
||||
exists("MMR Vaccinated 94") or
|
||||
exists("MMR Vaccinated MMR") or
|
||||
exists("MMR Vaccinated MMRCSL")
|
|
@ -1,20 +0,0 @@
|
|||
library Retrieve
|
||||
using FHIR version '4.0.1'
|
||||
include FHIRHelpers version '4.0.1'
|
||||
|
||||
valueset "MMR Vaccinated": 'http://hl7.org/fhir/ValueSet/mmr-vaccine-codes'
|
||||
|
||||
context Patient
|
||||
|
||||
define "InitialPopulation":
|
||||
[Patient]
|
||||
|
||||
define "Denominator":
|
||||
[Patient]
|
||||
|
||||
define "Numerator":
|
||||
"Qualifying Immunizations"
|
||||
|
||||
define "Qualifying Immunizations":
|
||||
[Immunization: "MMR Vaccinated"] ValidImmunization
|
||||
where ValidImmunization.status = 'completed'
|
|
@ -1,20 +0,0 @@
|
|||
library Retrieve
|
||||
using FHIR version '4.0.1'
|
||||
include FHIRHelpers version '4.0.1'
|
||||
|
||||
valueset "MMRVaccinated": 'http://hl7.org/fhir/ValueSet/mmr-vaccine-codes'
|
||||
|
||||
context Patient
|
||||
|
||||
define "InitialPopulation":
|
||||
[Patient]
|
||||
|
||||
define "Denominator":
|
||||
[Patient] myPatient where (myPatient.birthDate before (Today() - 1 year))
|
||||
|
||||
define "Numerator":
|
||||
"QualifyingImmunizations"
|
||||
|
||||
define "QualifyingImmunizations":
|
||||
[Immunization: "MMRVaccinated"] myImmunization
|
||||
where myImmunization.status = 'completed'
|
Loading…
Reference in New Issue