Closed f-odhiambo closed 2 years ago
Individual Measure Report
{
"date": "2022-02-03T10:27:18+03:00",
"evaluatedResource": [
{
"extension": [
{
"url": "http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-populationReference",
"valueString": "denominator"
}
],
"reference": "Encounter/anc-encounter-charity-otala-1"
},
{
"extension": [
{
"url": "http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-populationReference",
"valueString": "initial-population"
}
],
"reference": "EpisodeOfCare/charity-otala-1-pregnancy-episode"
},
{
"extension": [
{
"url": "http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-populationReference",
"valueString": "initial-population"
},
{
"url": "http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-populationReference",
"valueString": "denominator"
}
],
"reference": "Patient/charity-otala-1"
}
],
"extension": [
{
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.population.description",
"valueString": "Percentage of pregnant women with first ANC contact in the first trimester (before 12 weeks of gestation)"
}
],
"group": [
{
"id": "group-1",
"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": 0
},
{
"id": "numerator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "numerator"
}
]
},
"count": 0
}
],
"stratifier": [
{
"id": "by-age",
"stratum": [
{
"value": {
"text": "P20Y--P9999Y"
},
"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": 0
},
{
"id": "numerator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "numerator"
}
]
},
"count": 0
}
]
}
]
},
{
"id": "by-education-level",
"stratum": [
{
"value": {
"coding": [
{
"system": "http://fhir.org/guides/who/anc-cds/CodeSystem/anc-custom-codes",
"code": "ANC.B6.DE4",
"display": "Primary school"
}
]
},
"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": 0
},
{
"id": "numerator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "numerator"
}
]
},
"count": 0
}
]
}
]
}
]
}
],
"improvementNotation": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-improvement-notation",
"code": "increase"
}
]
},
"measure": "http://fhir.org/guides/who/anc-cds/Measure/ANCIND01",
"period": {
"start": "2020-01-01T00:00:00+03:00",
"end": "2020-01-31T00:00:00+03:00"
},
"resourceType": "MeasureReport",
"status": "complete",
"subject": {
"reference": "Patient/charity-otala-1"
},
"type": "individual"
}
Population MeasureReport
{
"resourceType": "MeasureReport",
"extension": [
{
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.population.description",
"valueString": "Percentage of pregnant women with first ANC contact in the first trimester (before 12 weeks of gestation)"
}
],
"status": "complete",
"type": "summary",
"measure": "http://fhir.org/guides/who/anc-cds/Measure/ANCIND01",
"date": "2022-02-02T17:27:15+03:00",
"period": {
"start": "2020-01-01T00:00:00+03:00",
"end": "2020-01-31T00:00:00+03:00"
},
"improvementNotation": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-improvement-notation",
"code": "increase"
}
]
},
"group": [
{
"id": "group-1",
"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": 0
},
{
"id": "numerator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "numerator"
}
]
},
"count": 0
}
],
"stratifier": [
{
"id": "by-age",
"stratum": [
{
"value": {
"text": "P20Y--P9999Y"
},
"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": 0
},
{
"id": "numerator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "numerator"
}
]
},
"count": 0
}
]
}
]
},
{
"id": "by-education-level",
"stratum": [
{
"value": {
"coding": [
{
"system": "http://fhir.org/guides/who/anc-cds/CodeSystem/anc-custom-codes",
"code": "ANC.B6.DE4",
"display": "Primary school"
}
]
},
"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": 0
},
{
"id": "numerator",
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-population",
"code": "numerator"
}
]
},
"count": 0
}
]
}
]
}
]
}
]
}
@f-odhiambo , is there someone working on this issue or has it been put on hold?
I am working on this @Tarun-Bhardwaj
Updated Mar 28th, 2022
The @evaluate_measure API is not picking referenced Observation resource from where the Indicator can be computed.
In the case of the 1st ANC Indicator: Percentage of pregnant women with first ANC contact in the first trimester (before 12 weeks of gestation), The observation resource is not referenced in the list of evaluated resources. The detail we need to fetch in Observation resource is Gestational age should be <=12 weeks
Observation resource sample
{
"resourceType": "Observation",
"id": "anc-b6-de17-example",
"meta": {
"profile": [ "http://fhir.org/guides/who/anc-cds/StructureDefinition/anc-b6-de17" ]
},
"status": "final",
"code": {
"coding": [ {
"system": "http://fhir.org/guides/who/anc-cds/CodeSystem/anc-custom-codes",
"code": "ANC.B6.DE17",
"display": "Gestational age"
}, {
"system": "http://hl7.org/fhir/sid/icd-11",
"code": "XT3X",
"display": "Agreed that Back end to map answer to these codes??Duration of pregnancy less than 5 completed weeks"
}, {
"system": "http://snomed.info/sct",
"code": "57036006",
"display": "Fetal gestational age (observable entity)"
}, {
"system": "http://loinc.org",
"code": "18185-9"
} ]
},
"subject": {
"reference": "Patient/anc-patient-example"
},
"encounter": {
"reference": "Encounter/First-antenatal-care-contact-example"
},
"performer": [ {
"reference": "PractitionerRole/anc-practitionerrole-example"
} ],
"valueQuantity": {
"value": 9.0,
"unit": "weeks"
}
}
The generated measure report not references in the above observation with "id": "anc-b6-de17-example" in the evaluatedResource section of the MeasureReport
{
"resourceType": "MeasureReport",
"extension": [
{
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.population.description",
"valueString": "Percentage of pregnant women with first ANC contact in the first trimester (before 12 weeks of gestation)"
}
],
"status": "complete",
"type": "individual",
"measure": "http://fhir.org/guides/who/anc-cds/Measure/ANCIND01",
"subject": {
"reference": "Patient/anc-patient-example"
},
"date": "2022-03-28T11:51:45+03:00",
"period": {
"start": "2020-01-01T00:00:00+03:00",
"end": "2020-12-31T00:00:00+03:00"
},
"improvementNotation": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/measure-improvement-notation",
"code": "increase"
}
]
},
"group": [
{
"id": "group-1",
"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
},
"stratifier": [
{
"id": "by-age"
},
{
"id": "by-education-level",
"stratum": [
{
"value": {
"coding": [
{
"system": "http://fhir.org/guides/who/anc-cds/CodeSystem/anc-custom-codes",
"code": "ANC.B6.DE4",
"display": "Primary school"
}
]
},
"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
}
}
]
}
]
}
],
"evaluatedResource": [
{
"extension": [
{
"url": "http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-populationReference",
"valueString": "denominator"
}
],
"reference": "Encounter/First-antenatal-care-contact-example"
},
{
"extension": [
{
"url": "http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-populationReference",
"valueString": "initial-population"
}
],
"reference": "EpisodeOfCare/antenatal-care-case-example"
},
{
"extension": [
{
"url": "http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-populationReference",
"valueString": "initial-population"
},
{
"url": "http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-populationReference",
"valueString": "denominator"
}
],
"reference": "Patient/anc-patient-example"
}
]
}
Here is a link to the test resources https://drive.google.com/drive/folders/1ZS9z-jKqzAG4qLQ5L3vBmSNiXnNUq3d4?usp=sharing
You can add these to the FhirOperatorTest
class
loadBundle("/ANCIND01-bundle.json")
loadFile("/validated-test/anc-patient-example.json")
loadFile("/validated-test/Antenatal-care-case.json")
loadFile("/validated-test/First-antenatal-care-contact.json")
loadFile("/validated-test/observation-anc-b6-de17-example.json")
loadFile("/validated-test/Practitioner.xml")
loadFile("/validated-test/PractitionerRole.xml")
CC @jingtang10 @ktarasenko
@ktarasenko here is the link to the test data : https://drive.google.com/drive/folders/1eTyUXZbmYgqZ7k35-5pI4pGBiWONaHGv?usp=sharing
To test on Android Studion
loadBundle("/ANCIND01-bundle.json")
loadBundle("/RuleFilters-1.0.0-bundle.json")
loadBundle("/tests-Reportable-bundle.json")
loadBundle("/tests-NotReportable-bundle.json")
// loadFile("/first-contact/01-registration/patient-charity-otala-1.json") // loadFile("/first-contact/02-enrollment/careplan-charity-otala-1-pregnancy-plan.xml") // loadFile("/first-contact/02-enrollment/episodeofcare-charity-otala-1-pregnancy-episode.xml") // loadFile("/first-contact/03-contact/encounter-anc-encounter-charity-otala-1.xml")
loadFile("/PlanDefinition.fhir.json")
loadFile("/PlanDefinitionTest.fhir.json")
loadFile("/ActivityDefinition.fhir.json")
loadFile("/anc-patient-example/anc-patient-example.json")
loadFile("/anc-patient-example/Antenatal-care-case.json")
loadFile("/anc-patient-example/First-antenatal-care-contact.json")
loadFile("/anc-patient-example/observation-anc-b6-de17-example.json")
5. Debug the FhirOperatorTest
To test this on Visual Studio Code by following the steps below
1. Download Visual Studio Code: https://code.visualstudio.com/download
6. Add the CQL Plugin: https://marketplace.visualstudio.com/items?itemName=cqframework.cql
7. Download the following repo: https://github.com/WorldHealthOrganization/smart-anc and open it in Visual Studio Code:
8. Add the above test data to the folder input/tests/library/ANCIND01
9. Go to input/cql/ANCIND01.cql
10. Right-click inside file and 'Run CQL' command
11. Expected output
Running tests. Data path: /Users/fodhiambo/Sites/smart-anc/input/tests/library/ANCIND01 Terminology path: /Users/fodhiambo/Sites/smart-anc/input/vocabulary/valueset Patient=Patient(id=anc-patient-example) Initial Population=true First antenatal care contact=[Encounter(id=First-antenatal-care-contact-example)] Gestational age=Quantity Numerator=true Denominator=true Age Stratifier=Code { code: P20Y--P9999Y, system: http://ohie.org/CodeSystem/iso-8601-derived-periods, version: null, display: 20+ years } Education Level Stratifier=[CodeableConcept] Most Recent Encounter Location Reference=null Location Code=null
Patient=Patient(id=charity-otala-1) Initial Population=true First antenatal care contact=[Encounter(id=anc-encounter-charity-otala-1)] Gestational age=Quantity Numerator=true Denominator=true Age Stratifier=Code { code: P20Y--P9999Y, system: http://ohie.org/CodeSystem/iso-8601-derived-periods, version: null, display: 20+ years } Education Level Stratifier=[CodeableConcept] Most Recent Encounter Location Reference=null Location Code=null
**Current output with Numerator count : 0**
{ "resourceType": "MeasureReport", "extension": [ { "url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.population.description", "valueString": "Percentage of pregnant women with first ANC contact in the first trimester (before 12 weeks of gestation)" } ], "status": "complete", "type": "individual", "measure": "http://fhir.org/guides/who/anc-cds/Measure/ANCIND01", "subject": { "reference": "Patient/anc-patient-example" }, "date": "2022-03-30T15:36:45+03:00", "period": { "start": "2020-01-01T00:00:00+03:00", "end": "2020-12-31T00:00:00+03:00" }, "improvementNotation": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/measure-improvement-notation", "code": "increase" } ] }, "group": [ { "id": "group-1", "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 }, "stratifier": [ { "id": "by-age", "stratum": [ { "value": { "text": "P20Y--P9999Y" }, "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 } } ] }, { "id": "by-education-level", "stratum": [ { "value": { "coding": [ { "system": "http://fhir.org/guides/who/anc-cds/CodeSystem/anc-custom-codes", "code": "ANC.B6.DE4", "display": "Primary school" } ] }, "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 } } ] } ] } ], "evaluatedResource": [ { "extension": [ { "url": "http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-populationReference", "valueString": "denominator" } ], "reference": "Encounter/First-antenatal-care-contact-example" }, { "extension": [ { "url": "http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-populationReference", "valueString": "initial-population" } ], "reference": "EpisodeOfCare/antenatal-care-case-example" }, { "extension": [ { "url": "http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-populationReference", "valueString": "initial-population" }, { "url": "http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-populationReference", "valueString": "denominator" } ], "reference": "Patient/anc-patient-example" } ] }
**Expected output with Numerator count : 1**
{ "resourceType": "MeasureReport", "extension": [ { "url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.population.description", "valueString": "Percentage of pregnant women with first ANC contact in the first trimester (before 12 weeks of gestation)" } ], "status": "complete", "type": "individual", "measure": "http://fhir.org/guides/who/anc-cds/Measure/ANCIND01", "subject": { "reference": "Patient/anc-patient-example" }, "date": "2022-03-30T15:36:45+03:00", "period": { "start": "2020-01-01T00:00:00+03:00", "end": "2020-12-31T00:00:00+03:00" }, "improvementNotation": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/measure-improvement-notation", "code": "increase" } ] }, "group": [ { "id": "group-1", "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 }, "stratifier": [ { "id": "by-age", "stratum": [ { "value": { "text": "P20Y--P9999Y" }, "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 } } ] }, { "id": "by-education-level", "stratum": [ { "value": { "coding": [ { "system": "http://fhir.org/guides/who/anc-cds/CodeSystem/anc-custom-codes", "code": "ANC.B6.DE4", "display": "Primary school" } ] }, "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 } } ] } ] } ], "evaluatedResource": [ { "extension": [ { "url": "http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-populationReference", "valueString": "denominator" } ], "reference": "Encounter/First-antenatal-care-contact-example" }, { "extension": [ { "url": "http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-populationReference", "valueString": "initial-population" } ], "reference": "EpisodeOfCare/antenatal-care-case-example" }, { "extension": [ { "url": "http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-populationReference", "valueString": "initial-population" }, { "url": "http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-populationReference", "valueString": "denominator" } ], "reference": "Patient/anc-patient-example" }, { "extension": [ { "url": "http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-populationReference", "valueString": "numerator" } ], "reference": "Observation/anc-b6-de17-example" }, ] }
CC @jingtang10
Thanks @f-odhiambo for the detailed instruction, but I still can't make the test work. I might miss something obvious and I need a walktrough. What's the best way to chat with you directly?
Kindly share with me your availability and you can do a google chat directly and schedule a call here is my email f****@ona.io.
messaged you in the chat
Describe the bug Measure reporting giving 0 for denominator and numerator for measure report generation
Component Workflow
To Reproduce Steps to reproduce the behavior:
update-evaluate-measure
Expected behavior A clear and concise description of what you expected to happen.
Screenshots N/A
Smartphone (please complete the following information): N/A
Additional context
Would you like to work on the issue? N/A