CQL use cases
Use Case 1: G6PD Threshold management
Plasmodium (P.) vivax is the most common species of malaria in countries close to eliminating the disease. The two commercially available drugs that can cure P. vivax are contraindicated for individuals with low levels of an enzyme called glucose-6-phosphate dehydrogenase (G6PD). G6PD deficiency is a genetic condition shared by 400 million people globally. Patients with G6PD deficiency are at risk of severe hemolysis upon exposure to tafenoquine or high primaquine doses required for cure of P. vivax malaria. PATH and our partners have advanced a point-of-care diagnostic device to measure G6PD activity. This test device, known as the STANDARD™ G6PD Test, is manufactured by SD Biosensor (South Korea) and is now commercially available in several malaria-endemic countries. This product could be enhanced through digital connectivity to improve its use and workflow including patient data management, accurate results interpretation, quality control, and patient referral and monitoring.
We developed a digital solution to successfully transfer and interpret data from the STANDARD G6PD Test device into a digital solution. Successful data transfer and interpretation is defined as user-friendly, accurate, and comprehensive. The digital solution will improve the test’s use and workflow and support clinical case management of malaria.
We implemented the following workflows for G6PD
-
Manual based input approach : The first workflow entails using a FHIR questionnaire and extracting it to multiple FHIR resources (Patient, Practitioner, Location, Observation, ServiceRequest, Diagnostic report).
-
CQL Workflow : The second workflow supports the full request, evaluation, and response workflow using FHIR standards. This workflow provides native FHIR support on the Android device where available. The FHIR workflow will utilize the ServiceRequest and DiagnosticReport resources, as well as Clinical Quality Language (CQL) evaluation.
The following feature and modules were implemented
- Authentication & Authorization
- Patient Registration
- Patient Search
- Offline Support
- Multi-language support
Additional context
For patient Diagnosis we used the following table to map the threshold evaluation
Post evaluation you get a results page with diagnosis and Medication regimen recommendation
Sample G6PD threshold evaluation CQL
//Declare name and version of lib
library TestArtifact version '1'
//FHIR as a data model and version of FHIR
using FHIR version '4.0.1'
//functions to help FHIR vs CQL primitives
include "FHIRHelpers" version '4.0.1' called FHIRHelpers
//System declarations : Codable concept codes systems
codesystem "SNOMED": 'http://snomed.info/sct'
codesystem "ConditionClinicalStatusCodes": 'http://terminology.hl7.org/CodeSystem/condition-clinical'
codesystem "ConditionVerificationStatusCodes": 'http://hl7.org/fhir/ValueSet/condition-ver-status'
codesystem "ServiceReqCategoryCodes": 'http://hl7.org/fhir/ValueSet/servicerequest-category'
codesystem "DiagReportCategoryCodes": 'http://hl7.org/fhir/ValueSet/diagnostic-service-sections'
//Code used as identifers
code "Pregnancy code": '77386006' from "SNOMED" display 'Pregnant'
code "G6PD code": '86859003' from "SNOMED" display 'G6PD Enzyme'
code "Haemoglobin code": '259695003' from "SNOMED" display 'Haemoglobin'
code "active": 'active' from "ConditionClinicalStatusCodes"
code "confirmed": 'confirmed' from "ConditionVerificationStatusCodes"
code "g6pdStatusCode": '9024005' from "SNOMED" display 'G6PD Status'
code "normalResultCode": '280413001' from "SNOMED" display 'Normal'
code "deficientResultCode": '260372006' from "SNOMED" display 'Deficient'
code "intermediateResultCode": '11896004' from "SNOMED" display 'Intermediate'
code "serviceReqCategory": '108252007' from "ServiceReqCategoryCodes" display 'Laboratory procedure'
code "diagReportCategory": 'HM' from "DiagReportCategoryCodes" display 'Hematology'
//CQL is written from a perspective of a single patient
//can be run in a context for a Single patient or population
context Patient
// TODO see if we need to do any more filtering and sorting; rightnow only one encounter is passed
define "Encounter":
Last([Encounter] E
where E.status ~ 'finished' )
define "AgeRange":
AgeInYears() >= 16
define "Female":
Patient.gender = 'female'
define "Male":
Patient.gender = 'male'
define "is Pregnant":
Last([Condition: "Pregnancy code"] O
where O.clinicalStatus ~ "active"
sort by recordedDate) is not null
define "Registerd Haem":
Last([Observation: "Haemoglobin code"] H
where H.status ~ 'registered')
define "Registerd G6PD":
Last([Observation: "G6PD code"] G
where G.status ~ 'registered')
define "Hi G6PD":
Last([Observation: "G6PD code"] H
where H.value.value > 20.0
return true)
define "Abnormal Haemoglobin":
Last([Observation: "Haemoglobin code"] H
where H.value.value <= 8.0
return true)
define "NA Lo G6PD":
Last([Observation: "Haemoglobin code"] H
where H.value.value < 4.0
return true)
define "NA Hi G6PD":
Last([Observation: "Haemoglobin code"] H
where H.value.value > 25.0
return true)
//Define Thresholds
define "Deficient":
Last([Observation: "G6PD code"] G
where G.value.value <= 3.9
return true)
define "Intermediate":
Last([Observation: "G6PD code"] G
where "Female" and G.value.value >= 4.1 and G.value.value <= 6.0
return true)
define "Normal Male":
Last([Observation: "G6PD code"] G
where "Male" and G.value.value >= 4.1
return true)
define "Normal Female":
Last([Observation: "G6PD code"] G
where "Female" and G.value.value >= 6.1
return true)
define "g6pdTestResultCode":
if "Deficient" then "deficientResultCode"
else if "Intermediate" then "intermediateResultCode"
else if "Normal Male" or "Normal Female" then "normalResultCode"
else null
define "patientRef": ReplaceMatches('Patient/'+Patient.id,'#','')
define "encounterRef": ReplaceMatches('Encounter/'+Encounter.id,'#','')
define "condition": if "g6pdTestResultCode" is not null
then Condition {
subject: Reference {reference: string { value: "patientRef" } },
encounter: Reference {reference: string { value: "encounterRef" } },
clinicalStatus: CodeableConcept { coding: {
Coding {
code: code {value: "active".code },
system: uri {value: "active".system }
}
} },
verificationStatus: CodeableConcept { coding: {
Coding {
code: code {value: "confirmed".code },
system: uri {value: "confirmed".system }
}
} },
category: { CodeableConcept { coding: {
Coding {
code: code {value: "g6pdStatusCode".code },
system: uri {value: "g6pdStatusCode".system },
display: string {value: "g6pdStatusCode".display }
}
} } },
code: CodeableConcept { coding: {
Coding {
code: code {value: "g6pdTestResultCode".code },
system: uri {value: "g6pdTestResultCode".system },
display: string {value: "g6pdTestResultCode".display }
}
} },
onset: dateTime{ value: Today() },
recordedDate: dateTime{ value: Today() }
} else null
define "serviceRequest": if "g6pdTestResultCode" is not null
then ServiceRequest{
subject: Reference {reference: string { value: "patientRef" } },
encounter: Reference {reference: string { value: "encounterRef" } },
status: ServiceRequestStatus { value: 'completed'},
intent: ServiceRequestIntent {value: 'order' },
category: { CodeableConcept { coding: {
Coding {
code: code {value: "serviceReqCategory".code },
system: uri {value: "serviceReqCategory".system },
display: string {value: "serviceReqCategory".display }
}
} } },
code: CodeableConcept { coding: {
Coding {
code: code {value: "G6PD code".code },
system: uri {value: "G6PD code".system },
display: string {value: "G6PD code".display }
}
} },
authoredOn: dateTime{ value: Today() }
} else null
define "diagnosticReport": if "g6pdTestResultCode" is not null
then DiagnosticReport{
subject: Reference {reference: string { value: "patientRef" } },
encounter: Reference {reference: string { value: "encounterRef" } },
status: DiagnosticReportStatus { value: 'final'},
category: { CodeableConcept { coding: {
Coding {
code: code {value: "diagReportCategory".code },
system: uri {value: "diagReportCategory".system },
display: string {value: "diagReportCategory".display }
}
} } },
code: CodeableConcept { coding: {
Coding {
code: code {value: "G6PD code".code },
system: uri {value: "G6PD code".system },
display: string {value: "G6PD code".display }
}
} },
effective: dateTime{ value: Today() }
} else null
define "OUTPUT": List { "condition", "serviceRequest", "diagnosticReport" }
MedicationRequest Output from above CQL evaluation
{
"resourceType": "MedicationRequest",
"status": "active",
"intent": "proposal",
"subject": {
"reference": "Patient/P1"
},
"encounter": {
"reference": "Encounter/E1"
},
"authoredOn": "#NOW",
"category": [
{
"coding": [
{
"system": "http://snomed.info/sct",
"code": "86859003",
"display": "Glucose-6-phosphatedehydrogenasedeficiencyanaemia"
}
]
}
],
"medicationCodeableConcept": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "429663004",
"display": "Primaquine(substance)"
}
]
},
"dosageInstruction": [
{
"timing": {
"repeat": {
"frequency": 1,
"period": 8,
"periodUnit": "wk"
}
},
"route": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "26643006",
"display": "Oraluse"
}
]
},
"doseAndRate": [
{
"type": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/dose-rate-type",
"code": "ordered",
"display": "Ordered"
}
]
},
"doseQuantity": {
"value": 0.75,
"unit": "mg/kg",
"system": "http://unitsofmeasure.org"
}
}
]
}
]
}
G6PD Test Device Calibration
In the second use case, as a G6PD app user, I would like to check if the device is properly calibrated in either Control Mode 1 or Control Mode 2
First we added both UI/UX for control mode user journey and leverage current CQL evaluation that can allow us to reuse the current CQL implementation for G6PD evaluation.
We then added a Questionnaire for test calibration that is independent of the Patient/Clinical workflow.
Control mode table
Test Kit in normal mode
Test kit in control mode
More details on testing and control mode can be found in this manual.
User Journey Description
- Add a menu item to initiate the control mode test
- Add a Questionnaire to be able to conduct control mode, similar to the Test Questionnaire, an image of control mode and the 2 entry points for G6PD and Haemoglobin level. This should have the following fields
Chip No Device Serial number G6PD level Haemoglobin level
- Author and load a CQL Library evaluation for control mode evaluation
- Initiate the control mode evaluation on press submit
- Add a test result page for Control mode level 1 or control mode level 2
- Terminate control mode flow once the user has calibrated the device
Sample G6PD RDT Calibration (Control mode) CQL
//Declare name and version of lib
library ControlTest version '1'
//FHIR as a data model and version of FHIR
using FHIR version '4.0.1'
//functions to help FHIR vs CQL primitives
include "FHIRHelpers" version '4.0.1' called FHIRHelpers
//System declarations : Codable concept codes systems
codesystem "SNOMED": 'http://snomed.info/sct'
//Code used as identifers
code "g6pdControl1": '410680006' from "SNOMED" display 'Control-mode 1'
code "g6pdControl2": '405358009' from "SNOMED" display 'Control-mode 2'
define "QR" : Last([QuestionnaireResponse] H)
define "Control1Obs": "QR".item.where(linkId='result_type').answer.value ~ "g6pdControl1"
define "Control2Obs": "QR".item.where(linkId='result_type').answer.value ~ "g6pdControl2"
define "HaemoglobinObs": "QR".item.where(linkId='haemoglobin').answer.first().value
define "G6PDObs": "QR".item.where(linkId='g6pd').answer.first().value
define "G6PDTemp": decimal {value: "G6PDObs".value}
define "G6PDValue": ToString("G6PDTemp")
define "HaemoglobinTemp": decimal {value: "HaemoglobinObs".value}
define "HaemoglobinValue": ToString("HaemoglobinTemp")
define "G6PD Normal":
if "Control1Obs" is not null and "G6PDObs" between 0.0 and 3.0
then true
else if "Control2Obs" is not null and "G6PDObs" between 6.0 and 10.0
then true
else false
define "G6PD Conclusion":
if "Control1Obs" is not null and "G6PD Normal"
then 'Value ('+ "G6PDValue"+') is in Normal G6PD Range 0-3'
else if "Control2Obs" is not null and "G6PD Normal"
then 'Value ('+ "G6PDValue"+') is in Normal G6PD Range 6-12'
else 'Value('+"G6PDValue"+') is Non Deterministic G6PD result'
define "Haemoglobin Normal":
if "Control1Obs" is not null and "HaemoglobinObs" between 8.0 and 12.0
then true
else if "Control2Obs" is not null and "HaemoglobinObs" between 13.0 and 17.0
then true
else false
define "Haemoglobin Conclusion":
if "Control1Obs" is not null and "Haemoglobin Normal"
then 'Value ('+ "HaemoglobinValue"+') is in Normal Haemoglobin Range 8-12'
else if "Control2Obs" is not null and "Haemoglobin Normal"
then 'Value ('+ "HaemoglobinValue"+') is in Normal Haemoglobin Range 13-17'
else 'Value('+"HaemoglobinValue"+') is Non Deterministic Haemoglobin result'
define "Conclusion":
if "G6PD Normal" and "Haemoglobin Normal" then 'Correct result'
else 'Invalid result'
define "Conclusion Details": '\nDetails:\n'+ "G6PD Conclusion" + '\n' + "Haemoglobin Conclusion"
define "OUTPUT": List { "Conclusion" , "Conclusion Details"}
In app reporting of Indicators
Based on the WHO Implementation Guide (IG) for ANC and the WHO SMART ANC Indicators. These indicators are based on the Global ANC monitoring framework (25) and the WHO–UNICEF guidance for RMNCAH programme managers on the analysis and use of health facility data (10). These indicators may be aggregated automatically from the digital tracking tool to populate a digital HMIS, such as DHIS2.
Indicator definitions are represented using the FHIR Measure resource (CPGMetric profile) and is available here These indicators are based on the Global ANC monitoring framework (25) and the WHO–UNICEF guidance for RMNCAH programme managers on the analysis and use of health facility data (10). These indicators may be aggregated automatically from the digital tracking tool to populate a digital HMIS, such as DHIS2.
Indicator definitions are represented using the FHIR Measure Resource CPGMetric profile.
Using Measure Reporting to define Indicators
Below are Sample Measure Reporting CQL for aggregate counts for households.
Family Group
{
"resourceType": "Group",
"id": "107759",
"meta": {
"versionId": "3",
"lastUpdated": "2022-04-14T13:54:41.656+00:00",
"source": "#2f77c0c4a5d11f1e"
},
"identifier": [ {
"use": "official",
"value": "7bb7fa82-59e4-4744-a6d2-96722afca23b"
}, {
"use": "secondary",
"value": "656766"
} ],
"active": true,
"type": "person",
"code": {
"coding": [ {
"system": "https://www.snomed.org",
"code": "35359004",
"display": "Family"
} ]
},
"name": "Kamwana Rao",
"managingEntity": {
"reference": "RelatedPerson/2e2c9d4e-b67f-4673-8e83-e3f576046296"
},
"member": [ {
"entity": {
"reference": "Patient/c535f2e6-a17a-4b2a-913e-30e8b42553d0",
"display": "Rao Kamwana"
},
"inactive": false
}, {
"entity": {
"reference": "Patient/d0612f01-01c3-467e-9fbc-4e6ebe8bf9e6",
"display": "Magarita Rao"
},
"inactive": false
} ]
}
Measure Reporting CQL Expression
//Declare name and version of lib
library PQMedication version '1'
//FHIR as a data model and version of FHIR
using FHIR version '4.0.1'
//functions to help FHIR vs CQL primitives
include "FHIRHelpers" version '4.0.1' called FHIRHelpers
context Patient
define "All Groups": [Group] G
define "All Person Groups": "All Groups" G where G.type = 'person'
define "All Group Members": flatten("All Person Groups" G return (G.member M return M.entity))
define "All Patients": [Patient] P
with "All Group Members" G
such that P.id = Split(G.reference, '/')[1]
define "Males": "All Patients" M where M.gender='male'
define "Females": "All Patients" F where F.gender='female'
define "Age": CalculateAgeInYears(Patient.birthDate)
define "Age Stratifier":
case
when "Age" < 1 then 'P0Y'
when "Age" in Interval[1,5] then 'P1-5Y'
when "Age" in Interval[6, 14] then 'P6-14Y'
when "Age" in Interval[15, 49] then 'P15-49Y'
when "Age" >= 50 then 'P50Y'
else 'Unspecified'
end
Measure Report Generated
{
"resourceType": "MeasureReport",
"extension": [
{
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.population.description",
"valueString": "???????????"
}
],
"status": "complete",
"type": "summary",
"measure": "Measure/group-measure",
"date": "2022-05-20T14:17:20+03:00",
"period": {
"start": "2019-01-01T00:00:00+03:00",
"end": "2022-12-31T23:59:59+03:00"
},
"improvementNotation": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-improvement-notation",
"code": "increase"
}
]
},
"group": [
{
"id": "groups",
"population": [
{
"id": "initial-population",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "initial-population"
}
]
},
"count": 17
},
{
"id": "denominator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "denominator"
}
]
},
"count": 17
},
{
"id": "numerator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "numerator"
}
]
},
"count": 17
}
],
"measureScore": {
"value": 1
}
},
{
"id": "males",
"population": [
{
"id": "initial-population",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "initial-population"
}
]
},
"count": 17
},
{
"id": "denominator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "denominator"
}
]
},
"count": 17
},
{
"id": "numerator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "numerator"
}
]
},
"count": 7
}
],
"measureScore": {
"value": 0.4117647058823529
},
"stratifier": [
{
"id": "by-age",
"stratum": [
{
"value": {
"text": "P0Y"
},
"population": [
{
"id": "initial-population",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "initial-population"
}
]
},
"count": 1
},
{
"id": "denominator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "denominator"
}
]
},
"count": 1
},
{
"id": "numerator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "numerator"
}
]
},
"count": 1
}
],
"measureScore": {
"value": 1
}
},
{
"value": {
"text": "P50Y"
},
"population": [
{
"id": "initial-population",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "initial-population"
}
]
},
"count": 1
},
{
"id": "denominator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "denominator"
}
]
},
"count": 1
},
{
"id": "numerator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "numerator"
}
]
},
"count": 0
}
],
"measureScore": {
"value": 0
}
},
{
"value": {
"text": "P15-49Y"
},
"population": [
{
"id": "initial-population",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "initial-population"
}
]
},
"count": 2
},
{
"id": "denominator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "denominator"
}
]
},
"count": 2
},
{
"id": "numerator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "numerator"
}
]
},
"count": 1
}
],
"measureScore": {
"value": 0.5
}
},
{
"value": {
"text": "P6-14Y"
},
"population": [
{
"id": "initial-population",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "initial-population"
}
]
},
"count": 2
},
{
"id": "denominator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "denominator"
}
]
},
"count": 2
},
{
"id": "numerator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "numerator"
}
]
},
"count": 0
}
],
"measureScore": {
"value": 0
}
},
{
"value": {
"text": "P1-5Y"
},
"population": [
{
"id": "initial-population",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "initial-population"
}
]
},
"count": 11
},
{
"id": "denominator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "denominator"
}
]
},
"count": 11
},
{
"id": "numerator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "numerator"
}
]
},
"count": 5
}
],
"measureScore": {
"value": 0.45454545454545453
}
}
]
}
]
},
{
"id": "females",
"population": [
{
"id": "initial-population",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "initial-population"
}
]
},
"count": 17
},
{
"id": "denominator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "denominator"
}
]
},
"count": 17
},
{
"id": "numerator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "numerator"
}
]
},
"count": 10
}
],
"measureScore": {
"value": 0.5882352941176471
},
"stratifier": [
{
"id": "by-age",
"stratum": [
{
"value": {
"text": "P0Y"
},
"population": [
{
"id": "initial-population",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "initial-population"
}
]
},
"count": 1
},
{
"id": "denominator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "denominator"
}
]
},
"count": 1
},
{
"id": "numerator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "numerator"
}
]
},
"count": 0
}
],
"measureScore": {
"value": 0
}
},
{
"value": {
"text": "P50Y"
},
"population": [
{
"id": "initial-population",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "initial-population"
}
]
},
"count": 1
},
{
"id": "denominator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "denominator"
}
]
},
"count": 1
},
{
"id": "numerator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "numerator"
}
]
},
"count": 1
}
],
"measureScore": {
"value": 1
}
},
{
"value": {
"text": "P15-49Y"
},
"population": [
{
"id": "initial-population",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "initial-population"
}
]
},
"count": 2
},
{
"id": "denominator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "denominator"
}
]
},
"count": 2
},
{
"id": "numerator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "numerator"
}
]
},
"count": 1
}
],
"measureScore": {
"value": 0.5
}
},
{
"value": {
"text": "P6-14Y"
},
"population": [
{
"id": "initial-population",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "initial-population"
}
]
},
"count": 2
},
{
"id": "denominator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "denominator"
}
]
},
"count": 2
},
{
"id": "numerator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "numerator"
}
]
},
"count": 2
}
],
"measureScore": {
"value": 1
}
},
{
"value": {
"text": "P1-5Y"
},
"population": [
{
"id": "initial-population",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "initial-population"
}
]
},
"count": 11
},
{
"id": "denominator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "denominator"
}
]
},
"count": 11
},
{
"id": "numerator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "numerator"
}
]
},
"count": 6
}
],
"measureScore": {
"value": 0.5454545454545454
}
}
]
}
]
}
]
}