Skip to content

Commit 92c4c94

Browse files
authored
Multiple eRSD Tranformer updates (#530)
* Multiple eRSD Tranformer updates - releaseLabel extension added - date and effectivePeriod added to manifest library * Fixed test data
1 parent 3babcd0 commit 92c4c94

4 files changed

Lines changed: 80 additions & 7 deletions

File tree

tooling/src/main/java/org/opencds/cqf/tooling/casereporting/transformer/ErsdTransformer.java

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.io.FileInputStream;
2121
import java.io.FileNotFoundException;
2222
import java.util.ArrayList;
23+
import java.util.Date;
2324
import java.util.HashSet;
2425
import java.util.List;
2526

@@ -35,10 +36,12 @@ public class ErsdTransformer extends Operation {
3536
private final String usPhTriggeringValueSetLibraryProfileUrl = "http://hl7.org/fhir/us/ecr/StructureDefinition/us-ph-triggering-valueset-library";
3637
private final String usPhTriggeringValueSetProfileUrl = "http://hl7.org/fhir/us/ecr/StructureDefinition/us-ph-triggering-valueset";
3738
private final String valueSetStewardExtensionUrl = "http://hl7.org/fhir/StructureDefinition/valueset-steward";
38-
39+
private final String artifactReleaseLabelExtensionUrl = "http://hl7.org/fhir/StructureDefinition/artifact-releaseLabel";
3940
private PlanDefinition v2PlanDefinition;
4041
private String version;
4142
private Period effectivePeriod;
43+
private Date artifactsDate;
44+
private String releaseLabel;
4245

4346
public ErsdTransformer() {
4447
ctx = FhirContext.forR4();
@@ -144,6 +147,10 @@ private PlanDefinition getV2PlanDefinition(String pathToPlanDefinition) {
144147
if (pathToPlanDefinition != null && !pathToPlanDefinition.isEmpty()) {
145148
planDef = (PlanDefinition)IOUtils.readResource(pathToPlanDefinition, ctx, true);
146149
planDef.setEffectivePeriod(this.effectivePeriod);
150+
Extension releaseLabelExtension = new Extension();
151+
releaseLabelExtension.setUrl(artifactReleaseLabelExtensionUrl);
152+
releaseLabelExtension.setValue(new StringType(this.releaseLabel));
153+
planDef.addExtension(releaseLabelExtension);
147154
}
148155

149156
return planDef;
@@ -192,6 +199,11 @@ else if (bundleFile.getName().endsWith("xml")) {
192199
&& ((Library)x.getResource()).getUrl().equals(RCTCLIBRARYURL)).findFirst().get().getResource();
193200

194201
this.effectivePeriod = rctc.getEffectivePeriod();
202+
this.artifactsDate = rctc.getDate();
203+
Extension releaseLabelExtension = rctc.getExtensionByUrl(artifactReleaseLabelExtensionUrl);
204+
if (releaseLabelExtension != null) {
205+
this.releaseLabel = releaseLabelExtension.getValueAsPrimitive().getValueAsString();
206+
}
195207

196208
if (rctc.hasVersion()) {
197209
this.version = rctc.getVersion();
@@ -204,19 +216,29 @@ else if (bundleFile.getName().endsWith("xml")) {
204216

205217
private Library createSpecificationLibrary() {
206218
Library specificationLibrary = new Library();
207-
specificationLibrary.setId(new IdType("Library", "SpecificationLibrary", "1.0.0"));
219+
specificationLibrary.setId(new IdType("Library", "SpecificationLibrary"));
208220
specificationLibrary.getMeta().addProfile(usPhSpecificationLibraryProfileUrl);
221+
222+
Extension releaseLabelExtension = new Extension();
223+
releaseLabelExtension.setUrl(artifactReleaseLabelExtensionUrl);
224+
releaseLabelExtension.setValue(new StringType(this.releaseLabel));
225+
specificationLibrary.addExtension(releaseLabelExtension);
226+
227+
if (this.effectivePeriod != null) {
228+
specificationLibrary.setEffectivePeriod(this.effectivePeriod);
229+
}
230+
specificationLibrary.setUrl("http://ersd.aimsplatform.org/fhir/Library/SpecificationLibrary");
231+
specificationLibrary.setVersion(this.version);
209232
specificationLibrary.setName("SpecificationLibrary");
210233
specificationLibrary.setTitle("Specification Library");
211-
specificationLibrary.setVersion(this.version);
212-
specificationLibrary.setDescription(
213-
"Defines the asset-collection library containing the US Public Health specification assets.");
214234
specificationLibrary.setStatus(PublicationStatus.ACTIVE);
215235
specificationLibrary.setExperimental(false);
216-
specificationLibrary.setPublisher(PUBLISHER);
217-
specificationLibrary.setUrl("http://ersd.aimsplatform.org/fhir/Library/SpecificationLibrary");
218236
specificationLibrary.setType(new CodeableConcept(
219237
new Coding("http://terminology.hl7.org/CodeSystem/library-type", "asset-collection", null)));
238+
specificationLibrary.setDate(this.artifactsDate);
239+
specificationLibrary.setPublisher(PUBLISHER);
240+
specificationLibrary.setDescription(
241+
"Defines the asset-collection library containing the US Public Health specification assets.");
220242

221243
UsageContext reportingUsageContext =
222244
new UsageContext(

tooling/src/test/java/org/opencds/cqf/tooling/casereporting/transformer/ErsdTransformerIT.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import ca.uhn.fhir.parser.JsonParser;
55
import ca.uhn.fhir.parser.XmlParser;
66
import org.hl7.fhir.r4.model.Bundle;
7+
import org.hl7.fhir.r4.model.Library;
78
import org.hl7.fhir.r4.model.UsageContext;
89
import org.hl7.fhir.r4.model.ValueSet;
910
import org.opencds.cqf.tooling.parameter.TransformErsdParameters;
@@ -149,4 +150,43 @@ public void testErsdTransformerEmergentPriorityUseContextPreserved() throws Exce
149150

150151
logger.info("Transform");
151152
}
153+
154+
@Test
155+
public void testErsdTransformerManifestElementPresence() throws Exception {
156+
TransformErsdParameters params = new TransformErsdParameters();
157+
params.pathToBundle = "src/test/resources/casereporting/transformer/eRSDv1bundle.json";
158+
params.outputPath = "src/test/resources/casereporting/transformer/output";
159+
String outputBundleFileName = "rctc-release-2022-10-19-Bundle-rctc.json";
160+
params.pathToV2PlanDefinition = "src/test/resources/casereporting/transformer/eRSDv2PlanDefinition/plandefinition-us-ecr-specification.json";
161+
162+
Bundle outputBundle = transformBundle(params, outputBundleFileName);
163+
164+
assertNotNull(outputBundle);
165+
Library manifestLibrary;
166+
manifestLibrary = (Library)outputBundle.getEntry().stream().filter(x -> x.hasResource()
167+
&& x.getResource().fhirType().equals("Library")
168+
&& x.getResource().getId().equals("http://ersd.aimsplatform.org/fhir/Library/SpecificationLibrary")).findFirst().get().getResource();
169+
170+
assertNotNull(manifestLibrary);
171+
172+
List<UsageContext> useContexts = manifestLibrary.getUseContext();
173+
UsageContext reportingUseContext = useContexts.stream().filter(x -> x.hasCode()
174+
&& x.getCode().getCode().equals("reporting")
175+
&& x.hasValueCodeableConcept()
176+
&& x.getValueCodeableConcept().getCodingFirstRep().getCode().equals("triggering")).findFirst().get();
177+
assertNotNull(reportingUseContext);
178+
179+
UsageContext specificationTypeUseContext = useContexts.stream().filter(x -> x.hasCode()
180+
&& x.getCode().getCode().equals("reporting")
181+
&& x.hasValueCodeableConcept()
182+
&& x.getValueCodeableConcept().getCodingFirstRep().getCode().equals("triggering")).findFirst().get();
183+
assertNotNull(specificationTypeUseContext);
184+
185+
assertNotNull(manifestLibrary.getDate());
186+
assertNotNull(manifestLibrary.getEffectivePeriod());
187+
assertNotNull(manifestLibrary.getEffectivePeriod().getStart());
188+
assertNotNull(manifestLibrary.getExtensionByUrl("http://hl7.org/fhir/StructureDefinition/artifact-releaseLabel"));
189+
190+
logger.info("Transform");
191+
}
152192
}

tooling/src/test/resources/casereporting/transformer/eRSDv1bundle.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -512,6 +512,12 @@
512512
"http://hl7.org/fhir/us/ecr/StructureDefinition/ersd-valueset-library"
513513
]
514514
},
515+
"extension": [
516+
{
517+
"url": "http://hl7.org/fhir/StructureDefinition/artifact-releaseLabel",
518+
"valueString": "2022-10-19"
519+
}
520+
],
515521
"url": "http://ersd.aimsplatform.org/fhir/Library/rctc",
516522
"identifier": [
517523
{
@@ -531,6 +537,7 @@
531537
}
532538
]
533539
},
540+
"date": "2024-04-02T12:19:03-04:00",
534541
"description": "Release Description: This release includes code updates for the existing 132 conditions and adds codes for 41 new conditions: Agricultural Chemicals (Fertilizer) Poisoning Asbestosis Byssinosis Carbapenem-resistant Acinetobacter baumannii (CRAB) Carbapenem-resistant Pseudomonas aeruginosa (CRPA) Catheter-associated Urinary Tract Infection (CAUTI) Central Line-associated Bloodstream Infection (CLABSI) Chemical Pneumonitis Clostridium perfringens Infection Coal Workers Pneumoconiosis (CWP) Cysticercosis Drowning and Submersion Encephalitis Farmer's Lung Granuloma Inguinale (Donovanosis) Guillain-Barre Syndrome Gunshot Wound Head Injury Hepatitis G Virus Infection Herpes, Genital Herpes, Neonatal Leishmaniasis Louse-borne relapsing fever (LBRF) Lymphatic Filariasis Motor Vehicle Injury Multisystem Inflammatory Syndrome (MIS) Non-Polio Enterovirus Infection Nontuberculous Mycobacteria Infection, Pulmonary Ophthalmia Neonatorum Orthopoxvirus Disease Reye's Syndrome Rheumatic Fever Rotavirus Disease Scabies Staphylococcal Enterotoxin B Poisoning Suicide Surgical Site Infection (SSI) Taeniasis Toxoplasmosis Ventilator-associated Event (VAE) Vesicular Stomatitis",
535542
"purpose": "Triggers for initiating decision support for electronic case reports",
536543
"effectivePeriod": {

tooling/src/test/resources/casereporting/transformer/eRSDv1bundle.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1479,6 +1479,9 @@
14791479
<meta>
14801480
<profile value="http://hl7.org/fhir/us/ecr/StructureDefinition/ersd-valueset-library"></profile>
14811481
</meta>
1482+
<extension url="http://hl7.org/fhir/StructureDefinition/artifact-releaseLabel">
1483+
<valueString value="2022-10-19"></valueString>
1484+
</extension>
14821485
<url value="http://ersd.aimsplatform.org/fhir/Library/rctc"></url>
14831486
<identifier>
14841487
<system value="urn:ietf:rfc:3986"></system>
@@ -1494,6 +1497,7 @@
14941497
<code value="asset-collection"></code>
14951498
</coding>
14961499
</type>
1500+
<date value="2024-04-02T12:19:03-04:00"></date>
14971501
<description value="Release Description: This release includes code updates for the existing 132 conditions and adds codes for 41 new conditions: Agricultural Chemicals (Fertilizer) Poisoning Asbestosis Byssinosis Carbapenem-resistant Acinetobacter baumannii (CRAB) Carbapenem-resistant Pseudomonas aeruginosa (CRPA) Catheter-associated Urinary Tract Infection (CAUTI) Central Line-associated Bloodstream Infection (CLABSI) Chemical Pneumonitis Clostridium perfringens Infection Coal Workers Pneumoconiosis (CWP) Cysticercosis Drowning and Submersion Encephalitis Farmer's Lung Granuloma Inguinale (Donovanosis) Guillain-Barre Syndrome Gunshot Wound Head Injury Hepatitis G Virus Infection Herpes, Genital Herpes, Neonatal Leishmaniasis Louse-borne relapsing fever (LBRF) Lymphatic Filariasis Motor Vehicle Injury Multisystem Inflammatory Syndrome (MIS) Non-Polio Enterovirus Infection Nontuberculous Mycobacteria Infection, Pulmonary Ophthalmia Neonatorum Orthopoxvirus Disease Reye's Syndrome Rheumatic Fever Rotavirus Disease Scabies Staphylococcal Enterotoxin B Poisoning Suicide Surgical Site Infection (SSI) Taeniasis Toxoplasmosis Ventilator-associated Event (VAE) Vesicular Stomatitis"></description>
14981502
<purpose value="Triggers for initiating decision support for electronic case reports"></purpose>
14991503
<effectivePeriod>

0 commit comments

Comments
 (0)