Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,18 @@ public class SdeDef {
private final String id;
private final ConceptDef code;
private final String expression;
private final String description;
private Map<String, CriteriaResult> results;

public SdeDef(String id, ConceptDef code, String expression) {
this(id, code, expression, null);
}

public SdeDef(String id, ConceptDef code, String expression, String description) {
this.id = id;
this.code = code;
this.expression = expression;
this.description = description;
}

public String id() {
Expand All @@ -29,6 +35,10 @@ public ConceptDef code() {
return this.code;
}

public String description() {
return this.description;
}

public void putResult(String subject, Object value, Set<Object> evaluatedResources) {
this.getResults().put(subject, new CriteriaResult(value, evaluatedResources));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,16 @@ private MeasureConstants() {}
"http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-supplementalData";
public static final String EXT_SUPPORTING_EVIDENCE_DEFINITION_URL =
"http://hl7.org/fhir/StructureDefinition/cqf-supportingEvidenceDefinition";
// http://hl7.org/fhir/us/davinci-deqm/2023Jan/StructureDefinition-extension-criteriaReference.html
// DEQM STU5 deprecated extension-criteriaReference in favor of cqf-criteriaReference
public static final String EXT_CRITERIA_REFERENCE_URL =
"http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-criteriaReference";
"http://hl7.org/fhir/StructureDefinition/cqf-criteriaReference";
public static final String EXT_SDE_DISAGGREGATE_URL =
"http://hl7.org/fhir/5.0/StructureDefinition/extension-Measure.supplementalDataElement.disaggregate";
public static final String EXT_POPULATION_DESCRIPTION_URL =
"http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.population.description";
"http://hl7.org/fhir/StructureDefinition/measurereport-populationDescription";
// DEQM STU5: R5 cross-version extension for MeasureReport.supplementalData
public static final String EXT_SDE_REFERENCE_URL =
"http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalDataElement.reference";
"http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalData";
public static final String EXT_OPERATION_OUTCOME_REFERENCE_URL =
"http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.operationOutcome.reference";
public static final String MEASUREMENT_PERIOD_PARAMETER_NAME = "Measurement Period";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,9 @@ private MeasureReportConstants() {}
"http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-improvementNotation";
public static final String MEASUREREPORT_MEASURE_POPULATION_SYSTEM =
"http://terminology.hl7.org/CodeSystem/measure-population";
// DEQM STU5: R5 cross-version extension for MeasureReport.supplementalData
public static final String MEASUREREPORT_MEASURE_SUPPLEMENTALDATA_EXTENSION =
"http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-supplementalData";
"http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalData";
public static final String MEASUREREPORT_SUPPLEMENTALDATA_SEARCHPARAMETER_URL =
"http://hl7.org/fhir/us/davinci-deqm/SearchParameter/measurereport-supplemental-data";
public static final String MEASUREREPORT_PRODUCT_LINE_EXT_URL =
Expand All @@ -31,10 +32,12 @@ private MeasureReportConstants() {}
public static final String SDE_SYSTEM_URL = "http://terminology.hl7.org/CodeSystem/measure-data-usage";
public static final String SDE_USAGE_CODE = "supplemental-data";
public static final String RISK_ADJUSTMENT_USAGE_CODE = "risk-adjustment-factor";
// DEQM STU5: R5 cross-version extension for MeasureReport.supplementalData
public static final String SDE_REFERENCE_EXT_URL =
"http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalDataElement.reference";
"http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalData";
// DEQM STU5 deprecated extension-criteriaReference in favor of cqf-criteriaReference
public static final String SDE_DAVINCI_DEQM_EXT_URL =
"http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-criteriaReference";
"http://hl7.org/fhir/StructureDefinition/cqf-criteriaReference";
public static final String COUNTRY_CODING_SYSTEM_CODE = "urn:iso:std:iso:3166";
public static final String US_COUNTRY_CODE = "US";
public static final String US_COUNTRY_DISPLAY = "United States of America";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,10 @@ public class Dstu3MeasureReportBuilder implements MeasureReportBuilder<Measure,

protected static final String POPULATION_SUBJECT_SET = "POPULATION_SUBJECT_SET";
protected static final String EXT_POPULATION_DESCRIPTION_URL =
"http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.population.description";
"http://hl7.org/fhir/StructureDefinition/measurereport-populationDescription";
// DEQM STU5: R5 cross-version extension for MeasureReport.supplementalData
protected static final String EXT_SDE_REFERENCE_URL =
"http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalDataElement.reference";
"http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalData";
protected static final String POPULATION_BASIS_URL =
"http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-populationBasis";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -383,7 +383,7 @@ private List<SdeDef> getSdeDefs(Measure measure) {
checkId(s);
checkSDEUsage(measure, s);
var sdeDef = new SdeDef(
s.getId(), conceptToConceptDef(s.getCode()), s.getCriteria().getExpression());
s.getId(), conceptToConceptDef(s.getCode()), s.getCriteria().getExpression(), s.getDescription());
sdes.add(sdeDef);
}
return sdes;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -371,9 +371,9 @@ private void buildSDE(R4MeasureReportBuilderContext bc, SdeDef sde) {
bc, UUID.randomUUID().toString(), sde.id(), valueCoding, valueCount, concept);
}

bc.addCriteriaExtensionToSupplementalData(obs, sde.id());
bc.addCriteriaExtensionToSupplementalData(obs, sde.id(), sde.description());
} else {
bc.addCriteriaExtensionToSupplementalData(resource, sde.id());
bc.addCriteriaExtensionToSupplementalData(resource, sde.id(), sde.description());
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.opencds.cqf.fhir.cr.measure.r4;

import static org.opencds.cqf.fhir.cr.measure.constant.MeasureConstants.EXT_CRITERIA_REFERENCE_URL;
import static org.opencds.cqf.fhir.cr.measure.constant.MeasureConstants.EXT_POPULATION_DESCRIPTION_URL;

import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
import java.util.HashMap;
Expand Down Expand Up @@ -89,7 +90,7 @@ public void addCriteriaExtensionToReference(Reference reference, String criteria
addExtensionIfNotExists(reference, ext);
}

public void addCriteriaExtensionToSupplementalData(Resource resource, String criteriaId) {
public void addCriteriaExtensionToSupplementalData(Resource resource, String criteriaId, String description) {
var id = getId(resource);

// This is not an evaluated resource, so add it to the contained resources
Expand All @@ -99,6 +100,9 @@ public void addCriteriaExtensionToSupplementalData(Resource resource, String cri
}
var ref = addSupplementalDataReference(id);
addCriteriaExtensionToReference(ref, criteriaId);
if (description != null && !description.isEmpty()) {
addExtensionIfNotExists(ref, new Extension(EXT_POPULATION_DESCRIPTION_URL, new StringType(description)));
}
}

public void addCriteriaExtensionToEvaluatedResource(Resource resource, String criteriaId) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ void cohortBooleanSDESingleValueIndividualResult() {
.up()
.extension("sde-patient-sex")
.extensionHasSDEUrl()
.extensionHasSDEDescription("Patient biological sex for stratification")
.up()
.report();
}
Expand Down Expand Up @@ -88,9 +89,11 @@ void CohortBooleanSDEListIndividualResult() {
.hasExtension(EXT_SDE_REFERENCE_URL, 2)
.extensionByValueReference("Encounter/patient-9-encounter-1")
.extensionHasSDEId("sde-patient-encounters")
.extensionHasNoSDEDescription()
.up()
.extensionByValueReference("Encounter/patient-9-encounter-2")
.extensionHasSDEId("sde-patient-encounters")
.extensionHasNoSDEDescription()
.up()
.report();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package org.opencds.cqf.fhir.cr.measure.r4.selected.report;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.opencds.cqf.fhir.cr.measure.constant.MeasureConstants.EXT_CRITERIA_REFERENCE_URL;
import static org.opencds.cqf.fhir.cr.measure.constant.MeasureConstants.EXT_POPULATION_DESCRIPTION_URL;
import static org.opencds.cqf.fhir.cr.measure.constant.MeasureReportConstants.SDE_REFERENCE_EXT_URL;

import org.hl7.fhir.r4.model.Extension;
Expand All @@ -27,4 +30,17 @@ public SelectedMeasureReportExtension extensionHasSDEId(String id) {
.toString());
return this;
}

public SelectedMeasureReportExtension extensionHasSDEDescription(String description) {
var descExt = value().getValue().getExtensionByUrl(EXT_POPULATION_DESCRIPTION_URL);
assertNotNull(descExt, "Expected populationDescription extension on SDE reference");
assertEquals(description, descExt.getValue().toString());
return this;
}

public SelectedMeasureReportExtension extensionHasNoSDEDescription() {
var descExt = value().getValue().getExtensionByUrl(EXT_POPULATION_DESCRIPTION_URL);
assertNull(descExt, "Expected no populationDescription extension on SDE reference");
return this;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -88,23 +88,23 @@
],
"extension": [
{
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.population.description",
"url": "http://hl7.org/fhir/StructureDefinition/measurereport-populationDescription",
"valueString": "This measure assesses the number of patients who received VTE prophylaxis or have documentation why no VTE prophylaxis was given the day of or the day after hospital admission or surgery end date for surgeries that start the day of or the day after hospital admission"
},
{
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalDataElement.reference",
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalData",
"valueReference": {
"reference": "#sde-observation-sde-ethnicity-coding-2186-5"
}
},
{
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalDataElement.reference",
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalData",
"valueReference": {
"reference": "#sde-observation-sde-race-coding-2106-3"
}
},
{
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalDataElement.reference",
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalData",
"valueReference": {
"reference": "#sde-observation-sde-sex-code-f"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,23 +88,23 @@
],
"extension": [
{
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.population.description",
"url": "http://hl7.org/fhir/StructureDefinition/measurereport-populationDescription",
"valueString": "This measure assesses the number of patients who received VTE prophylaxis or have documentation why no VTE prophylaxis was given the day of or the day after hospital admission or surgery end date for surgeries that start the day of or the day after hospital admission"
},
{
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalDataElement.reference",
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalData",
"valueReference": {
"reference": "#sde-observation-sde-ethnicity-coding-2186-5"
}
},
{
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalDataElement.reference",
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalData",
"valueReference": {
"reference": "#sde-observation-sde-race-coding-2106-3"
}
},
{
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalDataElement.reference",
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalData",
"valueReference": {
"reference": "#sde-observation-sde-sex-code-m"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,29 +116,29 @@
],
"extension": [
{
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.population.description",
"url": "http://hl7.org/fhir/StructureDefinition/measurereport-populationDescription",
"valueString": "This measure assesses the number of patients who received VTE prophylaxis or have documentation why no VTE prophylaxis was given the day of or the day after hospital admission or surgery end date for surgeries that start the day of or the day after hospital admission"
},
{
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalDataElement.reference",
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalData",
"valueReference": {
"reference": "#sde-observation-sde-ethnicity-coding-2186-5"
}
},
{
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalDataElement.reference",
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalData",
"valueReference": {
"reference": "#sde-observation-sde-race-coding-2106-3"
}
},
{
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalDataElement.reference",
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalData",
"valueReference": {
"reference": "#sde-observation-sde-sex-code-f"
}
},
{
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalDataElement.reference",
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalData",
"valueReference": {
"reference": "#sde-observation-sde-sex-code-m"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@
],
"extension": [
{
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.population.description",
"url": "http://hl7.org/fhir/StructureDefinition/measurereport-populationDescription",
"valueString": "Percentage of children, 6 months - 20 years of age, who received a fluoride varnish application during the measurement period"
}
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@
],
"extension": [
{
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.population.description",
"url": "http://hl7.org/fhir/StructureDefinition/measurereport-populationDescription",
"valueString": "Percentage of children, 6 months - 20 years of age, who received a fluoride varnish application during the measurement period"
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@
],
"extension": [
{
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.population.description",
"url": "http://hl7.org/fhir/StructureDefinition/measurereport-populationDescription",
"valueString": "Percentage of children, 6 months - 20 years of age, who received a fluoride varnish application during the measurement period"
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,39 +88,39 @@
],
"extension": [
{
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.population.description",
"url": "http://hl7.org/fhir/StructureDefinition/measurereport-populationDescription",
"valueString": "This measure assesses the number of patients who received VTE prophylaxis or have documentation why no VTE prophylaxis was given the day of or the day after hospital admission or surgery end date for surgeries that start the day of or the day after hospital admission"
},
{
"url": "http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-supplementalData",
"valueReference": {
"extension": [
{
"url": "http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-criteriaReference",
"url": "http://hl7.org/fhir/StructureDefinition/cqf-criteriaReference",
"valueString": "SDELastAppointmentDate"
},
{
"url": "http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-criteriaReference",
"url": "http://hl7.org/fhir/StructureDefinition/cqf-criteriaReference",
"valueString": "SDELastAppointmentFilter"
}
],
"reference": "Encounter/DM1-patient-1-encounter-2"
}
},
{
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalDataElement.reference",
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalData",
"valueReference": {
"reference": "#sde-observation-sde-ethnicity-coding-2186-5"
}
},
{
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalDataElement.reference",
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalData",
"valueReference": {
"reference": "#sde-observation-sde-race-coding-2106-3"
}
},
{
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalDataElement.reference",
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-MeasureReport.supplementalData",
"valueReference": {
"reference": "#sde-observation-sde-sex-code-f"
}
Expand Down Expand Up @@ -424,7 +424,7 @@
{
"extension": [
{
"url": "http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-criteriaReference",
"url": "http://hl7.org/fhir/StructureDefinition/cqf-criteriaReference",
"valueString": "initial-population"
}
],
Expand All @@ -433,7 +433,7 @@
{
"extension": [
{
"url": "http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-criteriaReference",
"url": "http://hl7.org/fhir/StructureDefinition/cqf-criteriaReference",
"valueString": "numerator"
}
],
Expand All @@ -442,7 +442,7 @@
{
"extension": [
{
"url": "http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-criteriaReference",
"url": "http://hl7.org/fhir/StructureDefinition/cqf-criteriaReference",
"valueString": "numerator"
}
],
Expand Down
Loading
Loading