2020import java .io .FileInputStream ;
2121import java .io .FileNotFoundException ;
2222import java .util .ArrayList ;
23+ import java .util .Date ;
2324import java .util .HashSet ;
2425import 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 (
0 commit comments