From 78ae5c449c08d01d56a420d50fb9fd6566789d8f Mon Sep 17 00:00:00 2001 From: Carl Leitner Date: Mon, 29 Jul 2024 10:55:40 +0200 Subject: [PATCH] renamed resources to match L3 SOP --- .../ddcc-transaction-test-examples.fsh | 10 +-- input/fsh/cert-divoc-core-data-set.fsh | 2 +- input/fsh/cert-icao-core-data-set.fsh | 2 +- input/fsh/ddcc-composition.fsh | 20 ++--- input/fsh/ddcc-core-data-set.fsh | 52 ++++++------- input/fsh/ddcc-device.fsh | 8 +- input/fsh/ddcc-diagnosticreport.fsh | 2 +- input/fsh/ddcc-documentreference-qr.fsh | 26 +++---- input/fsh/ddcc-folder.fsh | 10 +-- input/fsh/ddcc-generate-operation.fsh | 10 +-- input/fsh/ddcc-immunization.fsh | 14 ++-- input/fsh/ddcc-observation.fsh | 2 +- input/fsh/ddcc-questionnaire.fsh | 10 +-- input/fsh/ddcc-revoke-operation.fsh | 4 +- input/fsh/ddcc-specimen.fsh | 2 +- input/fsh/ddcc-tr-valuesets.fsh | 19 ++--- input/fsh/ddcc-vs-valuesets.fsh | 33 +++----- input/fsh/example-arabic.fsh | 74 +++++++++--------- input/fsh/example-chinese.fsh | 74 +++++++++--------- input/fsh/example-english.fsh | 77 +++++++++---------- input/fsh/example-french.fsh | 74 +++++++++--------- input/fsh/example-russian.fsh | 72 ++++++++--------- input/fsh/example-spanish.fsh | 76 +++++++++--------- input/fsh/tx-cs-cvx.fsh | 2 +- input/fsh/tx-cs-divoc-lab-test-origin.fsh | 4 +- input/fsh/tx-cs-divoc-lab-test-pathogen.fsh | 4 +- input/fsh/tx-cs-divoc-lab-test-result.fsh | 4 +- input/fsh/tx-cs-divoc-lab-test-type.fsh | 4 +- input/fsh/tx-cs-euur.fsh | 2 +- input/fsh/tx-cs-icao-lab-test-origin.fsh | 4 +- input/fsh/tx-cs-icao-lab-test-result.fsh | 4 +- input/fsh/tx-cs-icao-lab-test-type.fsh | 4 +- input/fsh/tx-cs-loinc.fsh | 2 +- input/fsh/tx-cs-snomed.fsh | 2 +- input/maps-src/CertDCCtoCoreDataSet.map | 8 +- input/maps-src/CertDIVOCtoCoreDataSet.map | 8 +- input/maps-src/CertICAOtoCoreDataSet.map | 8 +- input/maps-src/CertSHCtoCoreDataSet.map | 6 +- input/maps-src/CoreDataSetLibrary.map | 8 +- input/maps-src/CoreDataSetVSLibrary.map | 8 +- input/maps-src/CoreDataSetVSToAddBundle.map | 2 +- input/maps-src/CoreDataSetVSToSHC.map | 2 +- input/maps-src/DDCCtoCoredataset.map | 2 +- input/maps-src/IPSToCoreDataSetVS.map | 12 +-- input/maps-src/QRespToVSCoreDataSet.map | 2 +- input/maps-src/ResourcesToVSCoreDataSet.map | 2 +- input/maps-src/SHCToCoreDataSetTR.map | 6 +- input/maps-src/SHCToCoreDataSetVS.map | 6 +- input/pagecontent/dictionary.xml | 6 +- input/pagecontent/interoperability.xml | 4 +- input/pagecontent/testing.xml | 2 +- input/pagecontent/transactions.xml | 4 +- ...CapabilityStatement-WHO.DDCC.Generator.xml | 2 +- ...leDM-Example-English-From-ddcc-to-shc.json | 2 +- .../StructureMap-CertDCCtoCoreDataSet.json | 10 +-- .../StructureMap-CertDIVOCtoCoreDataSet.json | 10 +-- .../StructureMap-CertICAOtoCoreDataSet.json | 10 +-- .../StructureMap-CertSHCtoCoreDataSet.json | 8 +- .../StructureMap-CoreDataSetLibrary.json | 10 +-- .../StructureMap-CoreDataSetVSLibrary.json | 10 +-- ...StructureMap-CoreDataSetVSToAddBundle.json | 4 +- .../StructureMap-CoreDataSetVSToSHC.json | 4 +- .../StructureMap-DDCCtoCoredataset.json | 4 +- .../StructureMap-IPSToCoreDataSetVS.json | 10 +-- .../StructureMap-QRespToVSCoreDataSet.json | 4 +- .../StructureMap-ResourcesToCoreDataSet.json | 4 +- ...StructureMap-ResourcesToVSCoreDataSet.json | 4 +- .../StructureMap-SHCToCoreDataSetTR.json | 8 +- .../StructureMap-SHCToCoreDataSetVS.json | 8 +- 69 files changed, 444 insertions(+), 473 deletions(-) diff --git a/input/fsh.old/ddcc-transaction-test-examples.fsh b/input/fsh.old/ddcc-transaction-test-examples.fsh index fda6f08906..e3afde112b 100644 --- a/input/fsh.old/ddcc-transaction-test-examples.fsh +++ b/input/fsh.old/ddcc-transaction-test-examples.fsh @@ -1,17 +1,17 @@ -Instance: DDCC-VS-TX-SHE-Parameters-1 +Instance: DDCCVSTXSHEParameters1 InstanceOf: DDCCGenerateHealthCertificateParameters Usage: #inline * parameter[+].name = "response" -* parameter[=].resource = DDCC-VS-QuestionnaireResponse-Example +* parameter[=].resource = DDCCVSQuestionnaireResponseExample -Instance: DDCC-TX-SHE-bundle-example-1 +Instance: DDCCTXSHEbundleexample1 InstanceOf: DDCCSubmitHealthEventRequest Usage: #example * type = #batch -* entry[+].fullUrl = "http://www.example.org/fhir/Parameters/DDCC-VS-TX-SHE-Parameters-1" -* entry[=].resource = DDCC-VS-TX-SHE-Parameters-1 +* entry[+].fullUrl = "http://www.example.org/fhir/Parameters/DDCCVSTXSHEParameters1" +* entry[=].resource = DDCCVSTXSHEParameters1 * entry[=].request.method = #POST * entry[=].request.url = "QuestionnaireResponse/$generateHealthCertificate" diff --git a/input/fsh/cert-divoc-core-data-set.fsh b/input/fsh/cert-divoc-core-data-set.fsh index 3fe4b7c1dd..c2154e1b16 100644 --- a/input/fsh/cert-divoc-core-data-set.fsh +++ b/input/fsh/cert-divoc-core-data-set.fsh @@ -67,7 +67,7 @@ Some element descriptions in this logical model provide details that are not in * addressCountry from http://hl7.org/fhir/ValueSet/iso3166-1-3 (preferred) * postalCode 0..1 string "Postal code for area" * icd11Code 0..1 string "ICD-11 code of this vaccine type (no binding information in spec)" "The specification for DIVOC does not provide any information beyond that this is an ICD-11 code, so correspondingly there is no required binding to a specific ValueSet in this logical model." - * icd11Code from WHO_DDCC_Vaccines_COVID_19 (preferred) + * icd11Code from WHODDCCVaccinesCOVID19 (preferred) * prophylaxis 0..1 string "Descriptive details of the vaccine type" // Lab test specific elements diff --git a/input/fsh/cert-icao-core-data-set.fsh b/input/fsh/cert-icao-core-data-set.fsh index b29ba6e25c..12feb708eb 100644 --- a/input/fsh/cert-icao-core-data-set.fsh +++ b/input/fsh/cert-icao-core-data-set.fsh @@ -57,7 +57,7 @@ Description: "Data elements for the ICAO Visible Digital Seal Core Data Set. * ve 0..* BackboneElement "VaccinationEvent (Required for `icao.vacc` only, not used of `icao.test`)" * des 1..1 string "Vaccine or Prophylaxis (ICD-11 MMS code descending from http://id.who.int/icd/entity/164949870)" - * des from WHO_DDCC_Vaccines_COVID_19 (required) + * des from WHODDCCVaccinesCOVID19 (required) * nam 1..1 string "Vaccine Brand (medical product name)" * dis 0..1 string "Disease or agent targeted (ICD-11 code)" * vd 1..* BackboneElement "VaccinationDetails" diff --git a/input/fsh/ddcc-composition.fsh b/input/fsh/ddcc-composition.fsh index b17fb245a5..88a54606ab 100644 --- a/input/fsh/ddcc-composition.fsh +++ b/input/fsh/ddcc-composition.fsh @@ -47,7 +47,7 @@ Title: "DDCC:VS Composition" Description: """ Describes the logical structure for a Digital Documentation of COVID-19 Certificates - Vaccination Status (DDCC:VS). """ -* category = DDCC_Composition_Category_CodeSystem#ddcc-vs +* category = DDCCCompositionCategoryCodeSystem#ddcc-vs * section ^slicing.discriminator[+].type = #value * section ^slicing.discriminator[=].path = "code" * section ^slicing.discriminator[+].type = #type @@ -70,7 +70,7 @@ Title: "DDCC:TR Composition" Description: """ Describes the logical structure for a Digital Documentation of COVID-19 Certificates - Test Result (DDCC:TR). """ -* category = DDCC_Composition_Category_CodeSystem#ddcc-tr +* category = DDCCCompositionCategoryCodeSystem#ddcc-tr * section ^slicing.discriminator[+].type = #value * section ^slicing.discriminator[=].path = "code" * section ^slicing.discriminator[+].type = #type @@ -87,8 +87,7 @@ Describes the logical structure for a Digital Documentation of COVID-19 Certific -CodeSystem: DDCC_Composition_Category_CodeSystem -Id: DDCC-Composition-Category-CodeSystem +CodeSystem: DDCCCompositionCategoryCodeSystem Title: "DDCC Composition Category Codes" Description: "Possible categories available for composition." * ^experimental = false @@ -96,11 +95,10 @@ Description: "Possible categories available for composition." * #ddcc-vs "DDCC:VS" * #ddcc-tr "DDCC:TR" -ValueSet: DDCC_Composition_Category_ValueSet -Id: DDCC-Composition-Category-ValueSet +ValueSet: DDCCCompositionCategoryValueSet Title: "DDCC Composition Category Codes" Description: "Categorization of DDCC Composition" -* include codes from system DDCC_Composition_Category_CodeSystem +* include codes from system DDCCCompositionCategoryCodeSystem Profile: DDCCDocument Parent: Bundle @@ -219,18 +217,16 @@ The content attachment url will point to a DDCC Document. /* -CodeSystem: DDCC_SectionCode_CodeSystem -Id: DDCC-SectionCode-CodeSystem +CodeSystem: DDCCSectionCodeCodeSystem Title: "DDCC QR SectionCode Usage Codes" Description: "Section Codes for DDCC" * #vaccination "DDCC: Vaccination Status" * #test "DDCC: SARS-CoV-2 Test" * #recovery "DDCC: Recovery Status" -ValueSet: DDCC_SectionCode_ValueSet -Id: DDCC-SectionCode-ValueSet +ValueSet: DDCCSectionCodeValueSet Description: "Content section codes for DDCC." -* include codes from system DDCC_SectionCode_CodeSystem +* include codes from system DDCCSectionCodeCodeSystem */ diff --git a/input/fsh/ddcc-core-data-set.fsh b/input/fsh/ddcc-core-data-set.fsh index ee3e6cb8b0..4f8ef75cd3 100644 --- a/input/fsh/ddcc-core-data-set.fsh +++ b/input/fsh/ddcc-core-data-set.fsh @@ -44,13 +44,12 @@ Title: "WHO Digital Documentation of COVID Certificates" * birthDate -> "Patient.birthDate" * identifier -> "Patient.identifier" -Logical: DDCCCoreDataSet_VS -Id: DDCCCoreDataSet.VS +Logical: DDCCCoreDataSetVS Parent: DDCCCoreDataSet Title: "DDCC Core Data Set Logical Model for Vaccination Status" Description: "Data elements for the DDCC Core Data Set for Vaccination Status. " -* ^url = "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS" +* ^url = "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSetVS" * ^version = "RC2" * ^abstract = true * ^status = #draft @@ -59,7 +58,7 @@ Description: "Data elements for the DDCC Core Data Set for Vaccination Status * vaccination 1..1 SU BackboneElement "Vaccination Event" "A vaccination event." * vaccination obeys who-ddcc-data-1 * vaccine 1..1 SU Coding "Vaccine or prophylaxis" "Generic description of the vaccine or vaccine sub-type. e.g. COVID-19 mRNA vaccine, HPV vaccine." - * vaccine from WHO_DDCC_Vaccines_COVID_19 (preferred) + * vaccine from WHODDCCVaccinesCOVID19 (preferred) * brand 1..1 SU Coding "Vaccine brand" "The brand or trade name used to refer to the vaccine received." * manufacturer 0..1 SU Coding "Vaccine manufacturer" "Name of the manufacturer of the vaccine received. e.g. Serum institute of India, AstraZeneca. If vaccine manufacturer is unknown, market authorization holder is REQUIRED." * maholder 0..1 SU Coding "Vaccine market authorization holder" "Name of the market authorization holder of the vaccine received. If market authorization holder is unknown, vaccine manufacturer is REQUIRED." @@ -76,12 +75,12 @@ Description: "Data elements for the DDCC Core Data Set for Vaccination Status * signature 0..1 Signature "Signature of health worker" "REQUIRED for PAPER vaccination certificates ONLY. The health worker who provided the vaccination or the supervising clinician's hand-written signature." * practitioner 0..1 Identifier "Health worker identifier" "OPTIONAL for DIGITAL and PAPER vaccination certificates. The unique identifier for the health worker as determined by the member state. There can be more than one unique identifier used. (e.g. system generated ID, health profession number, cryptographic signature, or any other form of health worker unique identifier). This can be used in lieu of a paper-based signature." * disease 0..1 Coding "Disease or agent targeted" "Name of disease vaccinated against (such as COVID-19)." - * disease from WHO_DDCC_Disease_Targeted_COVID_19 (preferred) + * disease from WHODDCCDiseaseTargetedCOVID19 (preferred) * nextDose 0..1 date "Due date of next dose" "Date on which the next vaccination should be administered, if a next dose is REQUIRED." Mapping: DDCCCoreDataSetVSToImmunization -Source: DDCCCoreDataSet_VS +Source: DDCCCoreDataSetVS Target: "http://smart.who.int/ddcc/StructureDefinition/DDCCImmunization" Id: ddcc-immunization Title: "WHO Digital Documentation of COVID Certificates" @@ -104,35 +103,33 @@ Title: "WHO Digital Documentation of COVID Certificates" * issuer -> "Immunization.protocolApplied.authority.identifier" Mapping: DDCCCoreDataSetVSToImmunizationRecommendation -Source: DDCCCoreDataSet_VS +Source: DDCCCoreDataSetVS Target: "http://smart.who.int/ddcc/StructureDefinition/DDCCImmunizationRecommendation" Id: ddcc-immunization-recommendation Title: "WHO Digital Documentation of COVID Certificates" * vaccination.nextDose -> "ImmunizationRecommendation.dateCriterion.value" -Logical: DDCCCoreDataSet_VS_PoV -Id: DDCCCoreDataSet.VS.PoV +Logical: DDCCCoreDataSetVSPoV //Parent: Element -Parent: DDCCCoreDataSet_VS +Parent: DDCCCoreDataSetVS Title: "DDCC Core Data Set Logical Model - Vaccination Status - Proof of Vaccination" Description: "Data elements for the DDCC Core Data Set - Vaccination Status - Proof of Vaccination." -* ^url = "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS.PoV" +* ^url = "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSetVSPoV" * ^version = "RC2" * ^abstract = false * ^status = #draft * ^type = "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet" -Logical: DDCCCoreDataSet_VS_CoC -Id: DDCCCoreDataSet.VS.CoC +Logical: DDCCCoreDataSetVSCoC //Parent: Element -Parent: DDCCCoreDataSet_VS +Parent: DDCCCoreDataSetVS Title: "DDCC Core Data Set Logical Model - Vaccination Status - Continuity of Care" Description: "Data elements for the DDCC Core Data Set - Vaccination Status - Continuity of Care." -* ^url = "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS.CoC" +* ^url = "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSetVSCoC" * ^version = "RC2" * ^abstract = false * ^status = #draft @@ -143,20 +140,19 @@ Description: "Data elements for the DDCC Core Data Set - Vaccination Status - * vaccination.centre 1..1 Mapping: DDCCCoreDataSetVSCoCToPatient -Source: DDCCCoreDataSet_VS_CoC +Source: DDCCCoreDataSetVSCoC Target: "http://smart.who.int/ddcc/StructureDefinition/DDCCPatient" Id: ddcc-vs-coc-immunization-recommendation Title: "WHO Digital Documentation of COVID Certificates" * sex -> "Patient.gender" -Logical: DDCCCoreDataSet_TR -Id: DDCCCoreDataSet.TR +Logical: DDCCCoreDataSetTR Parent: DDCCCoreDataSet Title: "DDCC Core Data Set Logical Model for Test Result" Description: "Data elements for the DDCC Core Data Set for Test Result." -* ^url = "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR" +* ^url = "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSetTR" * ^version = "RC2" * ^abstract = true * ^status = #draft @@ -164,22 +160,22 @@ Description: "Data elements for the DDCC Core Data Set for Test Result." * test 1..1 SU BackboneElement "Test Event" "A test event." * pathogen 1..1 SU Coding "Pathogen targeted" "Name of the pathogen being tested for (such as SARS-CoV-2). " - * pathogen from WHO_DDCC_Agent_Targeted_COVID_19 (preferred) + * pathogen from WHODDCCAgentTargetedCOVID19 (preferred) * type 1..1 SU Coding "Type of test" "Name of the type of test that was conducted e.g. NAAT." - * type from WHO_DDCC_Type_of_Test_COVID_19 (preferred) + * type from WHODDCCTypeofTestCOVID19 (preferred) * brand 0..1 SU Coding "Test brand" "The brand or trade name used to refer to the test conducted." * manufacturer 0..1 SU Coding "Test manufacturer" "Name of the manufacturer of the test conducted." * origin 0..1 SU Coding "Specimen Sample Origin" "The type of sample that was taken e.g. Nasopharyngeal swab or Saliva specimen." - * origin from WHO_DDCC_Sample_Origin_COVID_19 (preferred) + * origin from WHODDCCSampleOriginCOVID19 (preferred) * date 1..1 SU dateTime "Date and time of sample collection" "Date and time when sample was collected." * result 0..1 Coding "Test result" "Detected or Not detected presence of SARS-CoV-2 infection." - * result from WHO_DDCC_Test_Result_COVID_19 (preferred) + * result from WHODDCCTestResultCOVID19 (preferred) * centre 0..1 Coding "Test centre or facility name" "A codable name or identifier of the facility responsible for conducting the test." * country 1..1 SU Coding "Test centre country" "The country in which the individual has been tested." * country from http://hl7.org/fhir/ValueSet/iso3166-1-3 (preferred) Mapping: DDCCCoreDataSetTRToObservation -Source: DDCCCoreDataSet_TR +Source: DDCCCoreDataSetTR Target: "http://smart.who.int/ddcc/StructureDefinition/DDCCObservation" Id: ddcc-observation Title: "WHO Digital Documentation of COVID Certificates" @@ -191,7 +187,7 @@ Title: "WHO Digital Documentation of COVID Certificates" * result -> "Observation.value" Mapping: DDCCCoreDataSetTRToSpecimen -Source: DDCCCoreDataSet_TR +Source: DDCCCoreDataSetTR Target: "http://smart.who.int/ddcc/StructureDefinition/DDCCSpecimen" Id: ddcc-specimen Title: "WHO Digital Documentation of COVID Certificates" @@ -201,7 +197,7 @@ Title: "WHO Digital Documentation of COVID Certificates" * date -> "Specimen.collection.collected" Mapping: DDCCCoreDataSetTRToTest -Source: DDCCCoreDataSet_TR +Source: DDCCCoreDataSetTR Target: "http://smart.who.int/ddcc/StructureDefinition/DDCCTest" Id: ddcc-test Title: "WHO Digital Documentation of COVID Certificates" @@ -213,7 +209,7 @@ Title: "WHO Digital Documentation of COVID Certificates" * brand -> "Device.property.valueCode" Mapping: DDCCCoreDataSetTRToDignosticReport -Source: DDCCCoreDataSet_TR +Source: DDCCCoreDataSetTR Target: "http://smart.who.int/ddcc/StructureDefinition/DDCCDiagnosticReport" Id: ddcc-diagnostic-report Title: "WHO Digital Documentation of COVID Certificates" @@ -223,7 +219,7 @@ Title: "WHO Digital Documentation of COVID Certificates" * date -> "DiagnosticReport.effective" Mapping: DDCCCoreDataSetTRToProcedure -Source: DDCCCoreDataSet_TR +Source: DDCCCoreDataSetTR Target: "http://smart.who.int/ddcc/StructureDefinition/DDCCProcedure" Id: ddcc-procedure Title: "WHO Digital Documentation of COVID Certificates" diff --git a/input/fsh/ddcc-device.fsh b/input/fsh/ddcc-device.fsh index dd67d5fb4a..190c27aa8a 100644 --- a/input/fsh/ddcc-device.fsh +++ b/input/fsh/ddcc-device.fsh @@ -13,15 +13,15 @@ Device resource. * patient 1..1 MS //* patient only Reference(DDCCPatient) * type 1..1 MS -* type from WHO_DDCC_Type_of_Test_COVID_19 +* type from WHODDCCTypeofTestCOVID19 * property ^slicing.discriminator.type = #value * property ^slicing.discriminator.path = "type" * property ^slicing.rules = #open * property contains pathogen 1..1 and brand 0..1 -* property[pathogen].type = DDCC_Device_Property_CodeSystem#pathogen +* property[pathogen].type = DDCCDevicePropertyCodeSystem#pathogen * property[pathogen].valueCode 1..1 -* property[pathogen].valueCode from WHO_DDCC_Agent_Targeted_COVID_19 +* property[pathogen].valueCode from WHODDCCAgentTargetedCOVID19 * property[pathogen].valueQuantity 0..0 -* property[brand].type = DDCC_Device_Property_CodeSystem#brand +* property[brand].type = DDCCDevicePropertyCodeSystem#brand * property[brand].valueCode 1..1 * property[brand].valueQuantity 0..0 \ No newline at end of file diff --git a/input/fsh/ddcc-diagnosticreport.fsh b/input/fsh/ddcc-diagnosticreport.fsh index a1a84c1cae..02324946d2 100644 --- a/input/fsh/ddcc-diagnosticreport.fsh +++ b/input/fsh/ddcc-diagnosticreport.fsh @@ -11,7 +11,7 @@ DiagnosticReport resource. * status = #final (exactly) * code 1..1 MS -* code from WHO_DDCC_Type_of_Test_COVID_19 +* code from WHODDCCTypeofTestCOVID19 * subject 1..1 MS //* subject only Reference(DDCCPatient) * effective[x] 1..1 MS diff --git a/input/fsh/ddcc-documentreference-qr.fsh b/input/fsh/ddcc-documentreference-qr.fsh index d2f1c51a01..f96465e085 100644 --- a/input/fsh/ddcc-documentreference-qr.fsh +++ b/input/fsh/ddcc-documentreference-qr.fsh @@ -4,7 +4,7 @@ Id: DDCCDocumentReferenceQR Title: "DDCC DocumentReference return for QR" Description: "DDCC DocumentReference for QR codes including the QR image and the serialized content." * type 1.. MS -* type from DDCC_QR_Type_ValueSet (extensible) +* type from DDCCQRTypeValueSet (extensible) * subject only Reference(DDCCPatient) * authenticator 1.. MS * authenticator only Reference(DDCCOrganization) @@ -12,21 +12,20 @@ Description: "DDCC DocumentReference for QR codes including the QR image and th * content ^slicing.discriminator.path = "format" * content ^slicing.rules = #closed * content 2..* MS -* content.format from DDCC_QR_Format_ValueSet (extensible) +* content.format from DDCCQRFormatValueSet (extensible) * content contains qrImage 1..* MS and qrContent 1..1 MS and qrPDF 0..1 MS * content[qrImage].attachment.data 1..1 MS * content[qrImage].attachment.contentType 1..1 MS -* content[qrImage].format = DDCC_QR_Format_CodeSystem#image +* content[qrImage].format = DDCCQRFormatCodeSystem#image * content[qrContent].attachment.data 1..1 MS * content[qrContent].attachment.contentType 1..1 MS -* content[qrContent].format = DDCC_QR_Format_CodeSystem#serialized +* content[qrContent].format = DDCCQRFormatCodeSystem#serialized * content[qrPDF].attachment.data 1..1 MS * content[qrPDF].attachment.contentType 1..1 MS -* content[qrPDF].format = DDCC_QR_Format_CodeSystem#pdf +* content[qrPDF].format = DDCCQRFormatCodeSystem#pdf -CodeSystem: DDCC_QR_Type_CodeSystem -Id: DDCC-QR-Type-CodeSystem +CodeSystem: DDCCQRTypeCodeSystem Title: "DDCC QR Category Usage Codes" Description: "Possible formats available for QR usage." * ^experimental = false @@ -38,15 +37,13 @@ Description: "Possible formats available for QR usage." * #shc "SMART Health Card" * #divoc "DIVOC" -ValueSet: DDCC_QR_Type_ValueSet -Id: DDCC-QR-Type-ValueSet +ValueSet: DDCCQRTypeValueSet Title: "DDCC QR Type Codes" Description: "Type of QR codes by their business usage" -* include codes from system DDCC_QR_Type_CodeSystem +* include codes from system DDCCQRTypeCodeSystem -CodeSystem: DDCC_QR_Format_CodeSystem -Id: DDCC-QR-Format-CodeSystem +CodeSystem: DDCCQRFormatCodeSystem Title: "DDCC QR Format Codes" Description: "Possible formats available for QR data." * ^experimental = false @@ -55,8 +52,7 @@ Description: "Possible formats available for QR data." * #serialized "Serialized QR Content" * #pdf "PDF version of the QR image" -ValueSet: DDCC_QR_Format_ValueSet -Id: DDCC-QR-Format-ValueSet +ValueSet: DDCCQRFormatValueSet Title: "DDCC QR Format Codes" Description: "Format of the representation of QR code" -* include codes from system DDCC_QR_Format_CodeSystem +* include codes from system DDCCQRFormatCodeSystem diff --git a/input/fsh/ddcc-folder.fsh b/input/fsh/ddcc-folder.fsh index 0311afa1e5..10ea2e6936 100644 --- a/input/fsh/ddcc-folder.fsh +++ b/input/fsh/ddcc-folder.fsh @@ -13,7 +13,7 @@ DDCC Folder of the Paper Certificate * extension[designationType] contains ddccDesignation 1..1 * extension[designationType][ddccDesignation].valueCodeableConcept 1..1 * extension[designationType][ddccDesignation].valueCodeableConcept.coding 1..1 -* extension[designationType][ddccDesignation].valueCodeableConcept.coding = DDCC_Folder_DesignationType_Codesystem#ddcc +* extension[designationType][ddccDesignation].valueCodeableConcept.coding = DDCCFolderDesignationTypeCodesystem#ddcc * subject 1..1 MS * subject.reference 1..1 MS @@ -22,16 +22,14 @@ DDCC Folder of the Paper Certificate -CodeSystem: DDCC_Folder_DesignationType_Codesystem -Id: DDCC-Folder-DesignationType +CodeSystem: DDCCFolderDesignationTypeCodesystem Title: "DDCC Designation Types for Folder" Description: "DDCC Designation Types to use for DDCC Folders." * ^experimental = false * ^caseSensitive = true * #ddcc "DDCC" -ValueSet: DDCC_Folder_DesignationType_ValueSet -Id: DDCC-Folder-DesignationType +ValueSet: DDCCFolderDesignationTypeValueSet Title: "DDCC DesignationTypes for Folder" Description: "DDCC Designation Types ValueSet for DDCC Folders." -* include codes from system DDCC_Folder_DesignationType_Codesystem +* include codes from system DDCCFolderDesignationTypeCodesystem diff --git a/input/fsh/ddcc-generate-operation.fsh b/input/fsh/ddcc-generate-operation.fsh index e9a53b864e..6d55c4f177 100644 --- a/input/fsh/ddcc-generate-operation.fsh +++ b/input/fsh/ddcc-generate-operation.fsh @@ -1,8 +1,8 @@ -Instance: DDCC-QuestionnaireResponse-generateHealthCertificate +Instance: DDCCQuestionnaireResponsegenerateHealthCertificate InstanceOf: OperationDefinition Usage: #definition -* id = "DDCC-QuestionnaireResponse-generateHealthCertificate" -* name = "QuestionnaireResponse_Generate_Health_Certificate" +* id = "DDCCQuestionnaireResponsegenerateHealthCertificate" +* name = "QuestionnaireResponseGenerateHealthCertificate" * title = "OperationDefinition for generating a health certificate (DDCC) that is signed." * status = #draft * kind = #operation @@ -31,10 +31,10 @@ Generate one or more signed DDCC Documents based on a [DDCC QuestionnaireRespons * parameter[=].documentation = """The DDCC, including any QR codes, that was created under the [Generate Health Certificate](transactions.html#submit-health-event-expected-actions) expected actions""" * parameter[=].type = #Bundle -Instance: DDCC-QuestionnaireResponse-generateHealthFolder +Instance: DDCCQuestionnaireResponsegenerateHealthFolder InstanceOf: OperationDefinition Usage: #definition -* id = "DDCC-QuestionnaireResponse-generateHealthFolder" +* id = "DDCCQuestionnaireResponsegenerateHealthFolder" * name = "QuestionnaireResponse_Generate_Health_Folder" * title = "OperationDefinition for generating a health folder (DDCCFolder)." * status = #draft diff --git a/input/fsh/ddcc-immunization.fsh b/input/fsh/ddcc-immunization.fsh index 05698d186e..d6c32eb019 100644 --- a/input/fsh/ddcc-immunization.fsh +++ b/input/fsh/ddcc-immunization.fsh @@ -33,14 +33,14 @@ Immunization resource. * vaccineCode.coding contains ddccVaccine 1..1 MS * vaccineCode.coding[ddccVaccine].system 1..1 MS * vaccineCode.coding[ddccVaccine].code 1..1 MS -* vaccineCode.coding[ddccVaccine] from WHO_DDCC_Vaccines_COVID_19 (example) +* vaccineCode.coding[ddccVaccine] from WHODDCCVaccinesCOVID19 (example) */ * vaccineCode.coding 1..1 MS * vaccineCode.coding.system 1..1 MS * vaccineCode.coding.code 1..1 MS -* vaccineCode from WHO_DDCC_Vaccines_COVID_19 (preferred) +* vaccineCode from WHODDCCVaccinesCOVID19 (preferred) // do we need this ? * vaccineCode.coding[ddccVaccine].system = "urn:EXAMPLE-who-:smart:vaccine-certificate:RC1:coding" -// do we need this ? * vaccineCode.coding[ddccVaccine].code from WHO_DDCC_Vaccines_COVID_19 (example) +// do we need this ? * vaccineCode.coding[ddccVaccine].code from WHODDCCVaccinesCOVID19 (example) * location 1..1 MS * location ^label = "Administering centre" @@ -61,7 +61,7 @@ Immunization resource. * protocolApplied ^slicing.rules = #open * protocolApplied contains protocolAppliedAuthority 1.. MS * protocolApplied[protocolAppliedAuthority].authority only Reference(DDCCOrganization) -* protocolApplied[protocolAppliedAuthority].targetDisease from WHO_DDCC_Disease_Targeted_COVID_19 (preferred) +* protocolApplied[protocolAppliedAuthority].targetDisease from WHODDCCDiseaseTargetedCOVID19 (preferred) * protocolApplied[protocolAppliedAuthority].targetDisease ^label = "Disease or agent targeted" * protocolApplied[protocolAppliedAuthority].doseNumber[x] 1..1 MS * protocolApplied[protocolAppliedAuthority].doseNumber[x] only positiveInt @@ -93,10 +93,10 @@ a patient should return for a booster shot. * recommendation.vaccineCode.coding contains ddccVaccine 1..1 MS * recommendation.vaccineCode.coding[ddccVaccine].system 1..1 MS * recommendation.vaccineCode.coding[ddccVaccine].code 1..1 MS -* recommendation.vaccineCode.coding[ddccVaccine] from WHO_DDCC_Vaccines_COVID_19 (example) +* recommendation.vaccineCode.coding[ddccVaccine] from WHODDCCVaccinesCOVID19 (example) // do we need this? * recommendation.vaccineCode.coding[ddccVaccine].system = "urn:EXAMPLE-who-:smart:vaccine-certificate:RC1:coding" -// do we need this? * recommendation.vaccineCode.coding[ddccVaccine].code from WHO_DDCC_Vaccines_COVID_19 (example) -* recommendation.targetDisease from WHO_DDCC_Disease_Targeted_COVID_19 (example) +// do we need this? * recommendation.vaccineCode.coding[ddccVaccine].code from WHODDCCVaccinesCOVID19 (example) +* recommendation.targetDisease from WHODDCCDiseaseTargetedCOVID19 (example) * recommendation.forecastStatus = http://terminology.hl7.org/CodeSystem/immunization-recommendation-status#due * recommendation.dateCriterion 1..1 MS * recommendation.dateCriterion.code = http://loinc.org#30980-7 diff --git a/input/fsh/ddcc-observation.fsh b/input/fsh/ddcc-observation.fsh index 7884c20975..7a43450a3c 100644 --- a/input/fsh/ddcc-observation.fsh +++ b/input/fsh/ddcc-observation.fsh @@ -22,4 +22,4 @@ Observation resource. * value[x] only CodeableConcept * value[x] ^label = "Test result" * method 0..1 MS -* method from WHO_DDCC_Sample_Origin_COVID_19 +* method from WHODDCCSampleOriginCOVID19 diff --git a/input/fsh/ddcc-questionnaire.fsh b/input/fsh/ddcc-questionnaire.fsh index 4e95d681e4..a7d8c4dc0a 100644 --- a/input/fsh/ddcc-questionnaire.fsh +++ b/input/fsh/ddcc-questionnaire.fsh @@ -66,7 +66,7 @@ Usage: #definition * item[+].linkId = "vaccine" * item[=].text = "Vaccine or prophylaxis" * item[=].type = #choice -* item[=].answerValueSet = "http://smart.who.int/ddcc/ValueSet/who-ddcc-vaccines-covid-19" +* item[=].answerValueSet = "http://smart.who.int/ddcc/ValueSet/WHODDCCVaccinesCOVID19" * item[=].required = true * item[+].linkId = "brand" @@ -128,7 +128,7 @@ Usage: #definition * item[+].linkId = "disease" * item[=].text = "Disease or agent targeted" * item[=].type = #choice -* item[=].answerValueSet = "http://smart.who.int/ddcc/ValueSet/who-ddcc-disease-targeted-covid-19" +* item[=].answerValueSet = "http://smart.who.int/ddcc/ValueSet/WHODDCCAgentTargetedCOVID19" * item[=].required = false * item[+].linkId = "due_date" @@ -201,13 +201,13 @@ Usage: #definition * item[+].linkId = "pathogen" * item[=].text = "Pathogen targeted" * item[=].type = #choice -* item[=].answerValueSet = "http://smart.who.int/ddcc/ValueSet/who-ddcc-agent-targeted-covid-19" +* item[=].answerValueSet = "http://smart.who.int/ddcc/ValueSet/WHODDCCAgentTargetedCOVID19" * item[=].required = true * item[+].linkId = "type" * item[=].text = "Type of test" * item[=].type = #choice -* item[=].answerValueSet = "http://smart.who.int/ddcc/ValueSet/who-ddcc-type-of-test-covid-19" +* item[=].answerValueSet = "http://smart.who.int/ddcc/ValueSet/WHODDCCTypeofTestCOVID19" * item[=].required = true * item[+].linkId = "brand" @@ -223,7 +223,7 @@ Usage: #definition * item[+].linkId = "origin" * item[=].text = "Specimen Sample Origin" * item[=].type = #choice -* item[=].answerValueSet = "http://smart.who.int/ddcc/ValueSet/who-ddcc-sample-origin-covid-19" +* item[=].answerValueSet = "http://smart.who.int/ddcc/ValueSet/WHODDCCSampleOriginCOVID19" * item[=].required = false * item[+].linkId = "date" diff --git a/input/fsh/ddcc-revoke-operation.fsh b/input/fsh/ddcc-revoke-operation.fsh index 2d6a66543d..e24bc3412e 100644 --- a/input/fsh/ddcc-revoke-operation.fsh +++ b/input/fsh/ddcc-revoke-operation.fsh @@ -1,7 +1,7 @@ -Instance: DDCC-QuestionnaireResponse-revokeHealthCertificate +Instance: DDCCQuestionnaireResponserevokeHealthCertificate InstanceOf: OperationDefinition Usage: #definition -* id = "DDCC-QuestionnaireResponse-revokeHealthCertificate" +* id = "DDCCQuestionnaireResponserevokeHealthCertificate" * name = "QuestionnaireResponse_Revoke_Health_Certificate" * title = "OperationDefinition for revoking a health certificate (DDCC)." * status = #draft diff --git a/input/fsh/ddcc-specimen.fsh b/input/fsh/ddcc-specimen.fsh index 0833aeced6..4de615b7cf 100644 --- a/input/fsh/ddcc-specimen.fsh +++ b/input/fsh/ddcc-specimen.fsh @@ -14,4 +14,4 @@ Specimen resource. * collection 1..1 MS * collection.collectedDateTime 1..1 MS * type 1..1 MS -* type from WHO_DDCC_Sample_Origin_COVID_19 +* type from WHODDCCSampleOriginCOVID19 diff --git a/input/fsh/ddcc-tr-valuesets.fsh b/input/fsh/ddcc-tr-valuesets.fsh index 2af32d7872..9a4fa86106 100644 --- a/input/fsh/ddcc-tr-valuesets.fsh +++ b/input/fsh/ddcc-tr-valuesets.fsh @@ -5,8 +5,7 @@ Alias: $ICHI = http://id.who.int/icd11/mms Alias: $LOINC = http://loinc.org Alias: SCT = http://snomed.info/sct -ValueSet: WHO_DDCC_Agent_Targeted_COVID_19 -Id: who-ddcc-agent-targeted-covid-19 +ValueSet: WHODDCCAgentTargetedCOVID19 Title: "WHO Agent Targeted (COVID-19)" Description: """ WHO Agent Targeted List (COVID-19) from [ICD 11](https://icd.who.int/browse11) @@ -28,8 +27,7 @@ WHO Agent Targeted List (COVID-19) from [ICD 11](https://icd.who.int/browse11) * include $ICD11#XN161 "SARS-CoV-2 Omicron" -ValueSet: WHO_DDCC_Type_of_Test_COVID_19 -Id: who-ddcc-type-of-test-covid-19 +ValueSet: WHODDCCTypeofTestCOVID19 Title: "WHO Type of Covid-19 Test" Description: """ WHO Type of COVID-19 Test @@ -39,8 +37,7 @@ WHO Type of COVID-19 Test * include $ICHI#1334426561 "Viral nucleic acid amplification test or NAAT" * include $ICHI#2056159157 "Rapid immunoassay detecting viral proteins or Ag-RDT" -ValueSet: WHO_DDCC_Sample_Origin_COVID_19 -Id: who-ddcc-sample-origin-covid-19 +ValueSet: WHODDCCSampleOriginCOVID19 Title: "WHO Speciman Sample Origin (COVID-19)" Description: """ WHO Speciman Sample Origin List (COVID-19) @@ -57,7 +54,7 @@ WHO Speciman Sample Origin List (COVID-19) // * include $ICHI#1695591348 "Serum specimen" // * include $ICHI#1695591348 "Acellular blood (serum or plasma) specimen" -ValueSet: WHO_DDCC_Test_Result_COVID_19 +ValueSet: WHODDCCTestResultCOVID19 Id: who-ddcc-test-result-covid-19 Title: "WHO Test Result (COVID-19)" Description: """ @@ -67,8 +64,7 @@ WHO COVID-19 Test Result from [ICD 11](https://icd.who.int/browse11) * include $ICD11#RA01.0 "Detected" * include $ICD11#QA02 "Not Detected" -CodeSystem: DDCC_Device_Property_CodeSystem -Id: DDCC-Device-Property-CodeSystem +CodeSystem: DDCCDevicePropertyCodeSystem Title: "DDCC Device Property Codes" Description: "Possible properties available for devices." * ^experimental = false @@ -76,11 +72,10 @@ Description: "Possible properties available for devices." * #pathogen "Pathogen Targeted" * #brand "Test Brand" -ValueSet: DDCC_Device_Property_ValueSet -Id: DDCC-Device-Property-ValueSet +ValueSet: DDCCDevicePropertyValueSet Title: "DDCC Device Property Codes" Description: "Properties of DDCC devices" -* include codes from system DDCC_Device_Property_CodeSystem +* include codes from system DDCCDevicePropertyCodeSystem Instance: who-ddcc-map-loinc-sct-type-of-test InstanceOf: ConceptMap diff --git a/input/fsh/ddcc-vs-valuesets.fsh b/input/fsh/ddcc-vs-valuesets.fsh index 8e937ef5c5..485b662c22 100644 --- a/input/fsh/ddcc-vs-valuesets.fsh +++ b/input/fsh/ddcc-vs-valuesets.fsh @@ -9,8 +9,7 @@ Alias: $EUDCC = https://ec.europa.eu/health/documents/community-register/html/ Alias: $ICAOV1 = http://smart.who.int/ddcc/ICAOV1 -ValueSet: WHO_DDCC_Vaccines_COVID_19 -Id: who-ddcc-vaccines-covid-19 +ValueSet: WHODDCCVaccinesCOVID19 Title: "WHO Vaccine List (COVID-19)" Description: """ WHO Vaccine List (COVID-19) from [ICD 11](https://icd.who.int/browse11) @@ -56,8 +55,7 @@ WHO Vaccine List (COVID-19) from [ICD 11](https://icd.who.int/browse11) * include $ICD11#XM8NQ0 "Comirnaty®" * include $ICD11#XM3DT5 "COVID-19 Vaccine Moderna" -ValueSet: WHO_DDCC_Brands_COVID_19 -Id: who-ddcc-brands-covid-19 +ValueSet: WHODDCCBrandsCOVID19 Title: "WHO DDCC Brand List (COVID-19)" Description: """ WHO DDCC Brand List (COVID-19) from [ICD 11](https://icd.who.int/browse11) @@ -91,8 +89,7 @@ WHO DDCC Brand List (COVID-19) from [ICD 11](https://icd.who.int/browse11) -CodeSystem: DDCC_ICD11_CodeSystem -Id: DDCC-ICD11-CodeSystem +CodeSystem: DDCCICD11CodeSystem Title: "DDCC Codes for ICD11" Description: "ICD11 codes for DDCC so the FHIR server can perform expansions." * ^experimental = false @@ -175,8 +172,7 @@ Description: "ICD11 codes for DDCC so the FHIR server can perform expansions. * #XM0RV9 "Soberana Plus" -ValueSet: WHO_DDCC_Disease_Targeted_COVID_19 -Id: who-ddcc-disease-targeted-covid-19 +ValueSet: WHODDCCDiseaseTargetedCOVID19 Title: "WHO Disease or Agent Targeted (COVID-19)" Description: """ WHO Disease or Agent Targeted List (COVID-19) from [ICD 11](https://icd.who.int/browse11) @@ -185,8 +181,7 @@ WHO Disease or Agent Targeted List (COVID-19) from [ICD 11](https://icd.who.int/ * include $ICD11#RA01 "COVID-19" -CodeSystem: DIVOC_CodeSystem -Id: DIVOC-CodeSystem +CodeSystem: DIVOCCodeSystem Title: "COVID-19 Vaccine Codes for DIVOC" Description: "COVID-19 Vaccine codes for DIVOC so the FHIR server can perform expansions." * ^experimental = false @@ -207,15 +202,13 @@ Description: "COVID-19 Vaccine codes for DIVOC so the FHIR server can perform * #DIVOC012 "Corbevax" * #DIVOC013 "Novavax/Covovax NVX - CoV2373" -ValueSet: DIVOC_ValueSet -Id: DIVOC-ValueSet +ValueSet: DIVOCValueSet Title: "COVID-19 Vaccine Codes for DIVOC" Description: "COVID-19 Vaccine codes for DIVOC so the FHIR server can perform expansions." * ^status = #draft -* include codes from system DIVOC_CodeSystem +* include codes from system DIVOCCodeSystem -CodeSystem: ICAOV1_CodeSystem -Id: ICAOVaccineListV1 +CodeSystem: ICAOV1CodeSystem Title: "DDCC Codes for ICAO Vaccines" Description: "ICAO vaccines codes for DDCC so the FHIR server can perform expansions." * ^experimental = false @@ -319,23 +312,21 @@ Description: "ICAO vaccines codes for DDCC so the FHIR server can perform exp * #ICAO096 "WIBP-CorV" * #ICAO097 "Wuhan CNBG-Inactivated" -ValueSet: ICAOV1_ValueSet -Id: ICAOVaccineListV1 +ValueSet: ICAOV1ValueSet Title: "DDCC Codes for ICAO Vaccines" Description: "ICAO vaccines codes for DDCC so the FHIR server can perform expansions." * ^status = #draft -* include codes from system ICAOV1_CodeSystem +* include codes from system ICAOV1CodeSystem -ValueSet: EU_DCC_ValueSet -Id: vaccines-covid-19-names +ValueSet: EUDCCValueSet Title: "EU DCC Allowed Vaccine List (COVID-19)" Description: """ EU DCC Allowed Vaccine List (COVID-19). """ * ^status = #draft * ^date = 2022-09-13 -* include codes from system WHO_DDCC_euur +* include codes from system WHODDCCeuur Instance: who-ddcc-map-icd11-sct-vaccines diff --git a/input/fsh/example-arabic.fsh b/input/fsh/example-arabic.fsh index c8b2ef54ba..cbee1788b3 100644 --- a/input/fsh/example-arabic.fsh +++ b/input/fsh/example-arabic.fsh @@ -1,4 +1,4 @@ -Instance: DDCC-Patient-Arabic +Instance: DDCCPatientArabic InstanceOf: DDCCPatient Usage: #example // Title: "" @@ -8,68 +8,68 @@ Usage: #example * birthDate = "2003-03-03" -Instance: DDCC-Organization-Arabic +Instance: DDCCOrganizationArabic InstanceOf: DDCCOrganization Usage: #example // Title: "" // Description: "" * name = "مستشفى حكومي" -Instance: DDCC-ImmunizationRecommendation-Arabic +Instance: DDCCImmunizationRecommendationArabic InstanceOf: DDCCImmunizationRecommendation Usage: #example // Title: "" // Description: "" * date = "2021-05-06" -* patient = Reference(DDCC-Patient-Arabic) +* patient = Reference(DDCCPatientArabic) * recommendation.vaccineCode.coding[ddccVaccine] = $ICD11#XM0CX4 * recommendation.dateCriterion.value = "2021-05-20" * recommendation.dateCriterion.code = http://loinc.org#30980-7 * recommendation.forecastStatus = http://terminology.hl7.org/CodeSystem/immunization-recommendation-status#due -* recommendation.supportingImmunization = Reference(DDCC-Immunization-Arabic) +* recommendation.supportingImmunization = Reference(DDCCImmunizationArabic) -Instance: DDCC-Immunization-Arabic +Instance: DDCCImmunizationArabic InstanceOf: DDCCImmunization Usage: #example // Title: "" // Description: "" * status = #completed * extension[vaccineBrand].valueCoding = $ICD11#XM1G90 -* extension[vaccineMarketAuthorization].valueCoding = DDCC_Example_Test_CodeSystem#TEST +* extension[vaccineMarketAuthorization].valueCoding = DDCCExampleTestCodeSystem#TEST * extension[validFrom].valueDate = "2021-05-30" * extension[country].valueCode = urn:iso:std:iso:3166#SAU * vaccineCode = $ICD11#XM0CX4 * expirationDate = "2021-06-30" * lotNumber = "123" -* patient = Reference(DDCC-Patient-Arabic) +* patient = Reference(DDCCPatientArabic) * location.display = "موقع التطعيم" * occurrenceDateTime = "2021-05-06" -* performer.actor = Reference(DDCC-Organization-Arabic) -* protocolApplied[protocolAppliedAuthority].authority = Reference(DDCC-Organization-Arabic) +* performer.actor = Reference(DDCCOrganizationArabic) +* protocolApplied[protocolAppliedAuthority].authority = Reference(DDCCOrganizationArabic) * protocolApplied[protocolAppliedAuthority].targetDisease = $ICD11#RA01 * protocolApplied[protocolAppliedAuthority].doseNumberPositiveInt = 1 * protocolApplied[protocolAppliedAuthority].seriesDosesPositiveInt = 2 -Instance: DDCC-Composition-Example-Arabic +Instance: DDCCCompositionExampleArabic InstanceOf: DDCCVSComposition Usage: #example * identifier[+].system = "urn:EXAMPLE-who-:ddcc:composition:ids" * identifier[=].value = "999123456123456123456" * identifier[=].use = #official * status = #final -* subject = Reference(DDCC-Patient-Arabic) +* subject = Reference(DDCCPatientArabic) * date = "2020-05-06" -* author = Reference(DDCC-Organization-Arabic) -* attester.party = Reference(DDCC-Organization-Arabic) +* author = Reference(DDCCOrganizationArabic) +* attester.party = Reference(DDCCOrganizationArabic) * section[vaccination].code = $LOINC#11369-6 -* section[vaccination].focus = Reference(DDCC-Immunization-Arabic) -* section[vaccination].entry[+] = Reference(DDCC-Immunization-Arabic) -* section[vaccination].entry[+] = Reference(DDCC-ImmunizationRecommendation-Arabic) +* section[vaccination].focus = Reference(DDCCImmunizationArabic) +* section[vaccination].entry[+] = Reference(DDCCImmunizationArabic) +* section[vaccination].entry[+] = Reference(DDCCImmunizationRecommendationArabic) -Instance: Example-Arabic +Instance: ExampleArabic InstanceOf: DDCCVSDocument Usage: #example @@ -81,30 +81,30 @@ Usage: #example * link[+].relation = "publication" * link[=].url = "urn:HCID:1234567890" -* entry[ddccComposition].fullUrl = "http://www.example.org/fhir/Composition/DDCC-Composition-Example-Arabic" -* entry[ddccComposition].resource = DDCC-Composition-Example-Arabic +* entry[ddccComposition].fullUrl = "http://www.example.org/fhir/Composition/DDCCCompositionExampleArabic" +* entry[ddccComposition].resource = DDCCCompositionExampleArabic -* entry[ddccPatient].fullUrl = "http://www.example.org/fhir/Patient/DDCC-Patient-Arabic" -* entry[ddccPatient].resource = DDCC-Patient-Arabic +* entry[ddccPatient].fullUrl = "http://www.example.org/fhir/Patient/DDCCPatientArabic" +* entry[ddccPatient].resource = DDCCPatientArabic -* entry[ddccOrganization].fullUrl = "http://www.example.org/fhir/Organization/DDCC-Organization-Arabic" -* entry[ddccOrganization].resource = DDCC-Organization-Arabic +* entry[ddccOrganization].fullUrl = "http://www.example.org/fhir/Organization/DDCCOrganizationArabic" +* entry[ddccOrganization].resource = DDCCOrganizationArabic -* entry[ddccImmunization].fullUrl = "http://www.example.org/fhir/Immunization/DDCC-Immunization-Arabic" -* entry[ddccImmunization].resource = DDCC-Immunization-Arabic +* entry[ddccImmunization].fullUrl = "http://www.example.org/fhir/Immunization/DDCCImmunizationArabic" +* entry[ddccImmunization].resource = DDCCImmunizationArabic -* entry[ddccImmunizationRecommendation].fullUrl = "http://www.example.org/fhir/ImmunizationRecommendation/DDCC-ImmunizationRecommendation-Arabic" -* entry[ddccImmunizationRecommendation].resource = DDCC-ImmunizationRecommendation-Arabic +* entry[ddccImmunizationRecommendation].fullUrl = "http://www.example.org/fhir/ImmunizationRecommendation/DDCCImmunizationRecommendationArabic" +* entry[ddccImmunizationRecommendation].resource = DDCCImmunizationRecommendationArabic -Instance: DDCC-VS-QuestionnaireResponse-Arabic +Instance: DDCCVSQuestionnaireResponseArabic InstanceOf: DDCCQuestionnaireResponse Usage: #example * questionnaire = $DDCCVSQuestionnaireURL * status = #completed -* subject = Reference(DDCC-Patient-Arabic) +* subject = Reference(DDCCPatientArabic) * authored = "2021-04-01" * item[+].linkId = "name" @@ -126,10 +126,10 @@ Usage: #example * item[=].answer.valueCoding = $ICD11#XM1G90 * item[+].linkId = "manufacturer" -* item[=].answer.valueCoding = DDCC_Example_Test_CodeSystem#TEST +* item[=].answer.valueCoding = DDCCExampleTestCodeSystem#TEST * item[+].linkId = "ma_holder" -* item[=].answer.valueCoding = DDCC_Example_Test_CodeSystem#TEST +* item[=].answer.valueCoding = DDCCExampleTestCodeSystem#TEST * item[+].linkId = "lot" * item[=].answer.valueString = "ER8732" @@ -174,20 +174,20 @@ Usage: #example * item[=].answer.valueDate = "2022-04-05" -Instance: DDCC-VS-TX-SHE-Parameters-Arabic +Instance: DDCCVSTXSHEParametersArabic InstanceOf: DDCCGenerateHealthCertificateParameters Usage: #inline * parameter[+].name = "response" -* parameter[=].resource = DDCC-VS-QuestionnaireResponse-Arabic +* parameter[=].resource = DDCCVSQuestionnaireResponseArabic -Instance: DDCC-TX-SHE-bundle-example-Arabic +Instance: DDCCTXSHEbundleexampleArabic InstanceOf: DDCCSubmitHealthEventRequest Usage: #example * type = #batch -* entry[+].fullUrl = "http://www.example.org/fhir/Parameters/DDCC-VS-TX-SHE-Parameters-Arabic" -* entry[=].resource = DDCC-VS-TX-SHE-Parameters-Arabic +* entry[+].fullUrl = "http://www.example.org/fhir/Parameters/DDCCVSTXSHEParametersArabic" +* entry[=].resource = DDCCVSTXSHEParametersArabic * entry[=].request.method = #POST * entry[=].request.url = "QuestionnaireResponse/$generateHealthCertificate" diff --git a/input/fsh/example-chinese.fsh b/input/fsh/example-chinese.fsh index 47f869362f..1ae7665a27 100644 --- a/input/fsh/example-chinese.fsh +++ b/input/fsh/example-chinese.fsh @@ -1,4 +1,4 @@ -Instance: DDCC-Patient-Chinese +Instance: DDCCPatientChinese InstanceOf: DDCCPatient Usage: #example // Title: "" @@ -8,67 +8,67 @@ Usage: #example * birthDate = "2003-03-03" -Instance: DDCC-Organization-Chinese +Instance: DDCCOrganizationChinese InstanceOf: DDCCOrganization Usage: #example // Title: "" // Description: "" * name = "政府医院" -Instance: DDCC-ImmunizationRecommendation-Chinese +Instance: DDCCImmunizationRecommendationChinese InstanceOf: DDCCImmunizationRecommendation Usage: #example // Title: "" // Description: "" * date = "2021-05-06" -* patient = Reference(DDCC-Patient-Chinese) +* patient = Reference(DDCCPatientChinese) * recommendation.vaccineCode.coding[ddccVaccine] = $ICD11#XM5JC5 * recommendation.dateCriterion.value = "2021-05-20" * recommendation.dateCriterion.code = http://loinc.org#30980-7 * recommendation.forecastStatus = http://terminology.hl7.org/CodeSystem/immunization-recommendation-status#due -* recommendation.supportingImmunization = Reference(DDCC-Immunization-Chinese) +* recommendation.supportingImmunization = Reference(DDCCImmunizationChinese) -Instance: DDCC-Immunization-Chinese +Instance: DDCCImmunizationChinese InstanceOf: DDCCImmunization Usage: #example // Title: "" // Description: "" * status = #completed * extension[vaccineBrand].valueCoding = $ICD11#XM6SZ8 -* extension[vaccineMarketAuthorization].valueCoding = DDCC_Example_Test_CodeSystem#TEST +* extension[vaccineMarketAuthorization].valueCoding = DDCCExampleTestCodeSystem#TEST * extension[validFrom].valueDate = "2021-05-30" * extension[country].valueCode = urn:iso:std:iso:3166#CHN * vaccineCode = $ICD11#XM5JC5 * expirationDate = "2021-06-30" * lotNumber = "123" -* patient = Reference(DDCC-Patient-Chinese) +* patient = Reference(DDCCPatientChinese) * location.display = "疫苗接种现场" * occurrenceDateTime = "2021-05-06" -* performer.actor = Reference(DDCC-Organization-Chinese) -* protocolApplied[protocolAppliedAuthority].authority = Reference(DDCC-Organization-Chinese) +* performer.actor = Reference(DDCCOrganizationChinese) +* protocolApplied[protocolAppliedAuthority].authority = Reference(DDCCOrganizationChinese) * protocolApplied[protocolAppliedAuthority].targetDisease = $ICD11#RA01 * protocolApplied[protocolAppliedAuthority].doseNumberPositiveInt = 1 * protocolApplied[protocolAppliedAuthority].seriesDosesPositiveInt = 2 -Instance: DDCC-Composition-Example-Chinese +Instance: DDCCCompositionExampleChinese InstanceOf: DDCCVSComposition Usage: #example * identifier[+].system = "urn:EXAMPLE-who-:ddcc:composition:ids" * identifier[=].value = "999123456123456123456" * identifier[=].use = #official * status = #final -* subject = Reference(DDCC-Patient-Chinese) +* subject = Reference(DDCCPatientChinese) * date = "2020-05-06" -* author = Reference(DDCC-Organization-Chinese) -* attester.party = Reference(DDCC-Organization-Chinese) +* author = Reference(DDCCOrganizationChinese) +* attester.party = Reference(DDCCOrganizationChinese) * section[vaccination].code = $LOINC#11369-6 -* section[vaccination].focus = Reference(DDCC-Immunization-Chinese) -* section[vaccination].entry[+] = Reference(DDCC-Immunization-Chinese) -* section[vaccination].entry[+] = Reference(DDCC-ImmunizationRecommendation-Chinese) +* section[vaccination].focus = Reference(DDCCImmunizationChinese) +* section[vaccination].entry[+] = Reference(DDCCImmunizationChinese) +* section[vaccination].entry[+] = Reference(DDCCImmunizationRecommendationChinese) -Instance: Example-Chinese +Instance: ExampleChinese InstanceOf: DDCCVSDocument Usage: #example @@ -80,30 +80,30 @@ Usage: #example * link[+].relation = "publication" * link[=].url = "urn:HCID:1234567890" -* entry[ddccComposition].fullUrl = "http://www.example.org/fhir/Composition/DDCC-Composition-Example-Chinese" -* entry[ddccComposition].resource = DDCC-Composition-Example-Chinese +* entry[ddccComposition].fullUrl = "http://www.example.org/fhir/Composition/DDCCCompositionExampleChinese" +* entry[ddccComposition].resource = DDCCCompositionExampleChinese -* entry[ddccPatient].fullUrl = "http://www.example.org/fhir/Patient/DDCC-Patient-Chinese" -* entry[ddccPatient].resource = DDCC-Patient-Chinese +* entry[ddccPatient].fullUrl = "http://www.example.org/fhir/Patient/DDCCPatientChinese" +* entry[ddccPatient].resource = DDCCPatientChinese -* entry[ddccOrganization].fullUrl = "http://www.example.org/fhir/Organization/DDCC-Organization-Chinese" -* entry[ddccOrganization].resource = DDCC-Organization-Chinese +* entry[ddccOrganization].fullUrl = "http://www.example.org/fhir/Organization/DDCCOrganizationChinese" +* entry[ddccOrganization].resource = DDCCOrganizationChinese -* entry[ddccImmunization].fullUrl = "http://www.example.org/fhir/Immunization/DDCC-Immunization-Chinese" -* entry[ddccImmunization].resource = DDCC-Immunization-Chinese +* entry[ddccImmunization].fullUrl = "http://www.example.org/fhir/Immunization/DDCCImmunizationChinese" +* entry[ddccImmunization].resource = DDCCImmunizationChinese -* entry[ddccImmunizationRecommendation].fullUrl = "http://www.example.org/fhir/ImmunizationRecommendation/DDCC-ImmunizationRecommendation-Chinese" -* entry[ddccImmunizationRecommendation].resource = DDCC-ImmunizationRecommendation-Chinese +* entry[ddccImmunizationRecommendation].fullUrl = "http://www.example.org/fhir/ImmunizationRecommendation/DDCCImmunizationRecommendationChinese" +* entry[ddccImmunizationRecommendation].resource = DDCCImmunizationRecommendationChinese -Instance: DDCC-VS-QuestionnaireResponse-Chinese +Instance: DDCCVSQuestionnaireResponseChinese InstanceOf: DDCCQuestionnaireResponse Usage: #example * questionnaire = $DDCCVSQuestionnaireURL * status = #completed -* subject = Reference(DDCC-Patient-Chinese) +* subject = Reference(DDCCPatientChinese) * authored = "2021-04-01" * item[+].linkId = "name" @@ -125,10 +125,10 @@ Usage: #example * item[=].answer.valueCoding = $ICD11#XM6SZ8 * item[+].linkId = "manufacturer" -* item[=].answer.valueCoding = DDCC_Example_Test_CodeSystem#TEST +* item[=].answer.valueCoding = DDCCExampleTestCodeSystem#TEST * item[+].linkId = "ma_holder" -* item[=].answer.valueCoding = DDCC_Example_Test_CodeSystem#TEST +* item[=].answer.valueCoding = DDCCExampleTestCodeSystem#TEST * item[+].linkId = "lot" * item[=].answer.valueString = "ER8732" @@ -173,20 +173,20 @@ Usage: #example * item[=].answer.valueDate = "2022-04-05" -Instance: DDCC-VS-TX-SHE-Parameters-Chinese +Instance: DDCCVSTXSHEParametersChinese InstanceOf: DDCCGenerateHealthCertificateParameters Usage: #inline * parameter[+].name = "response" -* parameter[=].resource = DDCC-VS-QuestionnaireResponse-Chinese +* parameter[=].resource = DDCCVSQuestionnaireResponseChinese -Instance: DDCC-TX-SHE-bundle-example-Chinese +Instance: DDCCTXSHEbundleexampleChinese InstanceOf: DDCCSubmitHealthEventRequest Usage: #example * type = #batch -* entry[+].fullUrl = "http://www.example.org/fhir/Parameters/DDCC-VS-TX-SHE-Parameters-Chinese" -* entry[=].resource = DDCC-VS-TX-SHE-Parameters-Chinese +* entry[+].fullUrl = "http://www.example.org/fhir/Parameters/DDCCVSTXSHEParametersChinese" +* entry[=].resource = DDCCVSTXSHEParametersChinese * entry[=].request.method = #POST * entry[=].request.url = "QuestionnaireResponse/$generateHealthCertificate" diff --git a/input/fsh/example-english.fsh b/input/fsh/example-english.fsh index 628922904f..226261468c 100644 --- a/input/fsh/example-english.fsh +++ b/input/fsh/example-english.fsh @@ -1,15 +1,14 @@ Alias: $ICD11 = http://id.who.int/icd11/mms Alias: $LOINC = http://loinc.org -CodeSystem: DDCC_Example_Test_CodeSystem -Id: DDCC-Example-Test-CodeSystem +CodeSystem: DDCCExampleTestCodeSystem Title: "DDCC Codes for examples" Description: "Example codes for example resources." * ^experimental = false * ^caseSensitive = true * #TEST "Test" -Instance: DDCC-Patient-English +Instance: DDCCPatientEnglish InstanceOf: DDCCPatient Usage: #example // Title: "" @@ -19,68 +18,68 @@ Usage: #example * birthDate = "2003-03-03" -Instance: DDCC-Organization-English +Instance: DDCCOrganizationEnglish InstanceOf: DDCCOrganization Usage: #example // Title: "" // Description: "" * name = "Government Hospital" -Instance: DDCC-ImmunizationRecommendation-English +Instance: DDCCImmunizationRecommendationEnglish InstanceOf: DDCCImmunizationRecommendation Usage: #example // Title: "" // Description: "" * date = "2021-05-06" -* patient = Reference(DDCC-Patient-English) +* patient = Reference(DDCCPatientEnglish) * recommendation.vaccineCode.coding[ddccVaccine] = $ICD11#XM0GQ8 * recommendation.dateCriterion.value = "2021-05-20" * recommendation.dateCriterion.code = http://loinc.org#30980-7 * recommendation.forecastStatus = http://terminology.hl7.org/CodeSystem/immunization-recommendation-status#due -* recommendation.supportingImmunization = Reference(DDCC-Immunization-English) +* recommendation.supportingImmunization = Reference(DDCCImmunizationEnglish) -Instance: DDCC-Immunization-English +Instance: DDCCImmunizationEnglish InstanceOf: DDCCImmunization Usage: #example // Title: "" // Description: "" * status = #completed * extension[vaccineBrand].valueCoding = $ICD11#XM3DT5 -* extension[vaccineMarketAuthorization].valueCoding = DDCC_Example_Test_CodeSystem#TEST +* extension[vaccineMarketAuthorization].valueCoding = DDCCExampleTestCodeSystem#TEST * extension[validFrom].valueDate = "2021-05-30" * extension[country].valueCode = urn:iso:std:iso:3166#CHE * vaccineCode = $ICD11#XM0GQ8 * expirationDate = "2021-06-30" * lotNumber = "123" -* patient = Reference(DDCC-Patient-English) +* patient = Reference(DDCCPatientEnglish) * location.display = "Vaccination Site" * occurrenceDateTime = "2021-05-06" -* performer.actor = Reference(DDCC-Organization-English) -* protocolApplied[protocolAppliedAuthority].authority = Reference(DDCC-Organization-English) +* performer.actor = Reference(DDCCOrganizationEnglish) +* protocolApplied[protocolAppliedAuthority].authority = Reference(DDCCOrganizationEnglish) * protocolApplied[protocolAppliedAuthority].targetDisease = $ICD11#RA01 * protocolApplied[protocolAppliedAuthority].doseNumberPositiveInt = 1 * protocolApplied[protocolAppliedAuthority].seriesDosesPositiveInt = 2 -Instance: DDCC-Composition-Example-English +Instance: DDCCCompositionExampleEnglish InstanceOf: DDCCVSComposition Usage: #example * identifier[+].system = "urn:EXAMPLE-who-:ddcc:composition:ids" * identifier[=].value = "999123456123456123456" * identifier[=].use = #official * status = #final -* subject = Reference(DDCC-Patient-English) +* subject = Reference(DDCCPatientEnglish) * date = "2020-05-06" -* author = Reference(DDCC-Organization-English) -* attester.party = Reference(DDCC-Organization-English) +* author = Reference(DDCCOrganizationEnglish) +* attester.party = Reference(DDCCOrganizationEnglish) * section[vaccination].code = $LOINC#11369-6 -* section[vaccination].focus = Reference(DDCC-Immunization-English) -* section[vaccination].entry[+] = Reference(DDCC-Immunization-English) -* section[vaccination].entry[+] = Reference(DDCC-ImmunizationRecommendation-English) +* section[vaccination].focus = Reference(DDCCImmunizationEnglish) +* section[vaccination].entry[+] = Reference(DDCCImmunizationEnglish) +* section[vaccination].entry[+] = Reference(DDCCImmunizationRecommendationEnglish) -Instance: Example-English +Instance: ExampleEnglish InstanceOf: DDCCVSDocument Usage: #example @@ -92,30 +91,30 @@ Usage: #example * link[+].relation = "publication" * link[=].url = "urn:HCID:1234567890" -* entry[ddccComposition].fullUrl = "http://www.example.org/fhir/Composition/DDCC-Composition-Example-English" -* entry[ddccComposition].resource = DDCC-Composition-Example-English +* entry[ddccComposition].fullUrl = "http://www.example.org/fhir/Composition/DDCCCompositionExampleEnglish" +* entry[ddccComposition].resource = DDCCCompositionExampleEnglish -* entry[ddccPatient].fullUrl = "http://www.example.org/fhir/Patient/DDCC-Patient-English" -* entry[ddccPatient].resource = DDCC-Patient-English +* entry[ddccPatient].fullUrl = "http://www.example.org/fhir/Patient/DDCCPatientEnglish" +* entry[ddccPatient].resource = DDCCPatientEnglish -* entry[ddccOrganization].fullUrl = "http://www.example.org/fhir/Organization/DDCC-Organization-English" -* entry[ddccOrganization].resource = DDCC-Organization-English +* entry[ddccOrganization].fullUrl = "http://www.example.org/fhir/Organization/DDCCOrganizationEnglish" +* entry[ddccOrganization].resource = DDCCOrganizationEnglish -* entry[ddccImmunization].fullUrl = "http://www.example.org/fhir/Immunization/DDCC-Immunization-English" -* entry[ddccImmunization].resource = DDCC-Immunization-English +* entry[ddccImmunization].fullUrl = "http://www.example.org/fhir/Immunization/DDCCImmunizationEnglish" +* entry[ddccImmunization].resource = DDCCImmunizationEnglish -* entry[ddccImmunizationRecommendation].fullUrl = "http://www.example.org/fhir/ImmunizationRecommendation/DDCC-ImmunizationRecommendation-English" -* entry[ddccImmunizationRecommendation].resource = DDCC-ImmunizationRecommendation-English +* entry[ddccImmunizationRecommendation].fullUrl = "http://www.example.org/fhir/ImmunizationRecommendation/DDCCImmunizationRecommendationEnglish" +* entry[ddccImmunizationRecommendation].resource = DDCCImmunizationRecommendationEnglish -Instance: DDCC-VS-QuestionnaireResponse-Example +Instance: DDCCVSQuestionnaireResponseExample InstanceOf: DDCCQuestionnaireResponse Usage: #example * questionnaire = $DDCCVSQuestionnaireURL * status = #completed -* subject = Reference(DDCC-Patient-English) +* subject = Reference(DDCCPatientEnglish) * authored = "2021-04-01" * item[+].linkId = "name" @@ -137,10 +136,10 @@ Usage: #example * item[=].answer.valueCoding = $ICD11#XM3DT5 * item[+].linkId = "manufacturer" -* item[=].answer.valueCoding = DDCC_Example_Test_CodeSystem#TEST +* item[=].answer.valueCoding = DDCCExampleTestCodeSystem#TEST * item[+].linkId = "ma_holder" -* item[=].answer.valueCoding = DDCC_Example_Test_CodeSystem#TEST +* item[=].answer.valueCoding = DDCCExampleTestCodeSystem#TEST * item[+].linkId = "lot" * item[=].answer.valueString = "ER8732" @@ -185,20 +184,20 @@ Usage: #example * item[=].answer.valueDate = "2022-04-05" -Instance: DDCC-VS-TX-SHE-Parameters-1 +Instance: DDCCVSTXSHEParameters1 InstanceOf: DDCCGenerateHealthCertificateParameters Usage: #inline * parameter[+].name = "response" -* parameter[=].resource = DDCC-VS-QuestionnaireResponse-Example +* parameter[=].resource = DDCCVSQuestionnaireResponseExample -Instance: DDCC-TX-SHE-bundle-example-1 +Instance: DDCCTXSHEbundleexample1 InstanceOf: DDCCSubmitHealthEventRequest Usage: #example * type = #batch -* entry[+].fullUrl = "http://www.example.org/fhir/Parameters/DDCC-VS-TX-SHE-Parameters-1" -* entry[=].resource = DDCC-VS-TX-SHE-Parameters-1 +* entry[+].fullUrl = "http://www.example.org/fhir/Parameters/DDCCVSTXSHEParameters1" +* entry[=].resource = DDCCVSTXSHEParameters1 * entry[=].request.method = #POST * entry[=].request.url = "QuestionnaireResponse/$generateHealthCertificate" diff --git a/input/fsh/example-french.fsh b/input/fsh/example-french.fsh index 618101ffe6..fae5979094 100644 --- a/input/fsh/example-french.fsh +++ b/input/fsh/example-french.fsh @@ -1,4 +1,4 @@ -Instance: DDCC-Patient-French +Instance: DDCCPatientFrench InstanceOf: DDCCPatient Usage: #example // Title: "" @@ -8,68 +8,68 @@ Usage: #example * birthDate = "2003-03-03" -Instance: DDCC-Organization-French +Instance: DDCCOrganizationFrench InstanceOf: DDCCOrganization Usage: #example // Title: "" // Description: "" * name = "Hôpital du gouvernement" -Instance: DDCC-ImmunizationRecommendation-French +Instance: DDCCImmunizationRecommendationFrench InstanceOf: DDCCImmunizationRecommendation Usage: #example // Title: "" // Description: "" * date = "2021-05-06" -* patient = Reference(DDCC-Patient-French) +* patient = Reference(DDCCPatientFrench) * recommendation.vaccineCode.coding[ddccVaccine] = $ICD11#XM0GQ8 * recommendation.dateCriterion.value = "2021-05-20" * recommendation.dateCriterion.code = http://loinc.org#30980-7 * recommendation.forecastStatus = http://terminology.hl7.org/CodeSystem/immunization-recommendation-status#due -* recommendation.supportingImmunization = Reference(DDCC-Immunization-French) +* recommendation.supportingImmunization = Reference(DDCCImmunizationFrench) -Instance: DDCC-Immunization-French +Instance: DDCCImmunizationFrench InstanceOf: DDCCImmunization Usage: #example // Title: "" // Description: "" * status = #completed * extension[vaccineBrand].valueCoding = $ICD11#XM8NQ0 -* extension[vaccineMarketAuthorization].valueCoding = DDCC_Example_Test_CodeSystem#TEST +* extension[vaccineMarketAuthorization].valueCoding = DDCCExampleTestCodeSystem#TEST * extension[validFrom].valueDate = "2021-05-30" * extension[country].valueCode = urn:iso:std:iso:3166#FRA * vaccineCode = $ICD11#XM0GQ8 * expirationDate = "2021-06-30" * lotNumber = "123" -* patient = Reference(DDCC-Patient-French) +* patient = Reference(DDCCPatientFrench) * location.display = "Site de vaccination" * occurrenceDateTime = "2021-05-06" -* performer.actor = Reference(DDCC-Organization-French) -* protocolApplied[protocolAppliedAuthority].authority = Reference(DDCC-Organization-French) +* performer.actor = Reference(DDCCOrganizationFrench) +* protocolApplied[protocolAppliedAuthority].authority = Reference(DDCCOrganizationFrench) * protocolApplied[protocolAppliedAuthority].targetDisease = $ICD11#RA01 * protocolApplied[protocolAppliedAuthority].doseNumberPositiveInt = 1 * protocolApplied[protocolAppliedAuthority].seriesDosesPositiveInt = 2 -Instance: DDCC-Composition-Example-French +Instance: DDCCCompositionExampleFrench InstanceOf: DDCCVSComposition Usage: #example * identifier[+].system = "urn:EXAMPLE-who-:ddcc:composition:ids" * identifier[=].value = "999123456123456123456" * identifier[=].use = #official * status = #final -* subject = Reference(DDCC-Patient-French) +* subject = Reference(DDCCPatientFrench) * date = "2020-05-06" -* author = Reference(DDCC-Organization-French) -* attester.party = Reference(DDCC-Organization-French) +* author = Reference(DDCCOrganizationFrench) +* attester.party = Reference(DDCCOrganizationFrench) * section[vaccination].code = $LOINC#11369-6 -* section[vaccination].focus = Reference(DDCC-Immunization-French) -* section[vaccination].entry[+] = Reference(DDCC-Immunization-French) -* section[vaccination].entry[+] = Reference(DDCC-ImmunizationRecommendation-French) +* section[vaccination].focus = Reference(DDCCImmunizationFrench) +* section[vaccination].entry[+] = Reference(DDCCImmunizationFrench) +* section[vaccination].entry[+] = Reference(DDCCImmunizationRecommendationFrench) -Instance: Example-French +Instance: ExampleFrench InstanceOf: DDCCVSDocument Usage: #example @@ -81,31 +81,31 @@ Usage: #example * link[+].relation = "publication" * link[=].url = "urn:HCID:1234567890" -* entry[ddccComposition].fullUrl = "http://www.example.org/fhir/Composition/DDCC-Composition-Example-French" -* entry[ddccComposition].resource = DDCC-Composition-Example-French +* entry[ddccComposition].fullUrl = "http://www.example.org/fhir/Composition/DDCCCompositionExampleFrench" +* entry[ddccComposition].resource = DDCCCompositionExampleFrench -* entry[ddccPatient].fullUrl = "http://www.example.org/fhir/Patient/DDCC-Patient-French" -* entry[ddccPatient].resource = DDCC-Patient-French +* entry[ddccPatient].fullUrl = "http://www.example.org/fhir/Patient/DDCCPatientFrench" +* entry[ddccPatient].resource = DDCCPatientFrench -* entry[ddccOrganization].fullUrl = "http://www.example.org/fhir/Organization/DDCC-Organization-French" -* entry[ddccOrganization].resource = DDCC-Organization-French +* entry[ddccOrganization].fullUrl = "http://www.example.org/fhir/Organization/DDCCOrganizationFrench" +* entry[ddccOrganization].resource = DDCCOrganizationFrench -* entry[ddccImmunization].fullUrl = "http://www.example.org/fhir/Immunization/DDCC-Immunization-French" -* entry[ddccImmunization].resource = DDCC-Immunization-French +* entry[ddccImmunization].fullUrl = "http://www.example.org/fhir/Immunization/DDCCImmunizationFrench" +* entry[ddccImmunization].resource = DDCCImmunizationFrench -* entry[ddccImmunizationRecommendation].fullUrl = "http://www.example.org/fhir/ImmunizationRecommendation/DDCC-ImmunizationRecommendation-French" -* entry[ddccImmunizationRecommendation].resource = DDCC-ImmunizationRecommendation-French +* entry[ddccImmunizationRecommendation].fullUrl = "http://www.example.org/fhir/ImmunizationRecommendation/DDCCImmunizationRecommendationFrench" +* entry[ddccImmunizationRecommendation].resource = DDCCImmunizationRecommendationFrench -Instance: DDCC-VS-QuestionnaireResponse-French +Instance: DDCCVSQuestionnaireResponseFrench InstanceOf: DDCCQuestionnaireResponse Usage: #example * questionnaire = $DDCCVSQuestionnaireURL * status = #completed -* subject = Reference(DDCC-Patient-French) +* subject = Reference(DDCCPatientFrench) * authored = "2021-04-01" * item[+].linkId = "name" @@ -127,10 +127,10 @@ Usage: #example * item[=].answer.valueCoding = $ICD11#XM8NQ0 * item[+].linkId = "manufacturer" -* item[=].answer.valueCoding = DDCC_Example_Test_CodeSystem#TEST +* item[=].answer.valueCoding = DDCCExampleTestCodeSystem#TEST * item[+].linkId = "ma_holder" -* item[=].answer.valueCoding = DDCC_Example_Test_CodeSystem#TEST +* item[=].answer.valueCoding = DDCCExampleTestCodeSystem#TEST * item[+].linkId = "lot" * item[=].answer.valueString = "ER8732" @@ -175,20 +175,20 @@ Usage: #example * item[=].answer.valueDate = "2022-04-05" -Instance: DDCC-VS-TX-SHE-Parameters-French +Instance: DDCCVSTXSHEParametersFrench InstanceOf: DDCCGenerateHealthCertificateParameters Usage: #inline * parameter[+].name = "response" -* parameter[=].resource = DDCC-VS-QuestionnaireResponse-French +* parameter[=].resource = DDCCVSQuestionnaireResponseFrench -Instance: DDCC-TX-SHE-bundle-example-French +Instance: DDCCTXSHEbundleexampleFrench InstanceOf: DDCCSubmitHealthEventRequest Usage: #example * type = #batch -* entry[+].fullUrl = "http://www.example.org/fhir/Parameters/DDCC-VS-TX-SHE-Parameters-French" -* entry[=].resource = DDCC-VS-TX-SHE-Parameters-French +* entry[+].fullUrl = "http://www.example.org/fhir/Parameters/DDCCVSTXSHEParametersFrench" +* entry[=].resource = DDCCVSTXSHEParametersFrench * entry[=].request.method = #POST * entry[=].request.url = "QuestionnaireResponse/$generateHealthCertificate" diff --git a/input/fsh/example-russian.fsh b/input/fsh/example-russian.fsh index c64105a46d..ea8c0c40f9 100644 --- a/input/fsh/example-russian.fsh +++ b/input/fsh/example-russian.fsh @@ -1,4 +1,4 @@ -Instance: DDCC-Patient-Russian +Instance: DDCCPatientRussian InstanceOf: DDCCPatient Usage: #example // Title: "" @@ -8,64 +8,64 @@ Usage: #example * birthDate = "2003-03-03" -Instance: DDCC-Organization-Russian +Instance: DDCCOrganizationRussian InstanceOf: DDCCOrganization Usage: #example // Title: "" // Description: "" * name = "Государственная больница" -Instance: DDCC-ImmunizationRecommendation-Russian +Instance: DDCCImmunizationRecommendationRussian InstanceOf: DDCCImmunizationRecommendation Usage: #example // Title: "" // Description: "" * date = "2021-05-06" -* patient = Reference(DDCC-Patient-Russian) +* patient = Reference(DDCCPatientRussian) * recommendation.vaccineCode.coding[ddccVaccine] = $ICD11#XM9QW8 * recommendation.dateCriterion.value = "2021-05-20" * recommendation.dateCriterion.code = http://loinc.org#30980-7 * recommendation.forecastStatus = http://terminology.hl7.org/CodeSystem/immunization-recommendation-status#due -* recommendation.supportingImmunization = Reference(DDCC-Immunization-Russian) +* recommendation.supportingImmunization = Reference(DDCCImmunizationRussian) -Instance: DDCC-Immunization-Russian +Instance: DDCCImmunizationRussian InstanceOf: DDCCImmunization Usage: #example // Title: "" // Description: "" * status = #completed * extension[vaccineBrand].valueCoding = $ICD11#XM5QM6 -* extension[vaccineMarketAuthorization].valueCoding = DDCC_Example_Test_CodeSystem#TEST +* extension[vaccineMarketAuthorization].valueCoding = DDCCExampleTestCodeSystem#TEST * extension[validFrom].valueDate = "2021-05-30" * extension[country].valueCode = urn:iso:std:iso:3166#RUS * vaccineCode = $ICD11#XM9QW8 * expirationDate = "2021-06-30" * lotNumber = "123" -* patient = Reference(DDCC-Patient-Russian) +* patient = Reference(DDCCPatientRussian) * location.display = "Сайт вакцинации" * occurrenceDateTime = "2021-05-06" -* performer.actor = Reference(DDCC-Organization-Russian) -* protocolApplied[protocolAppliedAuthority].authority = Reference(DDCC-Organization-Russian) +* performer.actor = Reference(DDCCOrganizationRussian) +* protocolApplied[protocolAppliedAuthority].authority = Reference(DDCCOrganizationRussian) * protocolApplied[protocolAppliedAuthority].targetDisease = $ICD11#RA01 * protocolApplied[protocolAppliedAuthority].doseNumberPositiveInt = 1 * protocolApplied[protocolAppliedAuthority].seriesDosesPositiveInt = 2 -Instance: DDCC-Composition-Example-Russian +Instance: DDCCCompositionExampleRussian InstanceOf: DDCCVSComposition Usage: #example * identifier[+].system = "urn:EXAMPLE-who-:ddcc:composition:ids" * identifier[=].value = "999123456123456123456" * identifier[=].use = #official * status = #final -* subject = Reference(DDCC-Patient-Russian) +* subject = Reference(DDCCPatientRussian) * date = "2020-05-06" -* author = Reference(DDCC-Organization-Russian) -* attester.party = Reference(DDCC-Organization-Russian) +* author = Reference(DDCCOrganizationRussian) +* attester.party = Reference(DDCCOrganizationRussian) * section[vaccination].code = $LOINC#11369-6 -* section[vaccination].focus = Reference(DDCC-Immunization-Russian) -* section[vaccination].entry[+] = Reference(DDCC-Immunization-Russian) -* section[vaccination].entry[+] = Reference(DDCC-ImmunizationRecommendation-Russian) +* section[vaccination].focus = Reference(DDCCImmunizationRussian) +* section[vaccination].entry[+] = Reference(DDCCImmunizationRussian) +* section[vaccination].entry[+] = Reference(DDCCImmunizationRecommendationRussian) @@ -81,30 +81,30 @@ Usage: #example * link[+].relation = "publication" * link[=].url = "urn:HCID:1234567890" -* entry[ddccComposition].fullUrl = "http://www.example.org/fhir/Composition/DDCC-Composition-Example-Russian" -* entry[ddccComposition].resource = DDCC-Composition-Example-Russian +* entry[ddccComposition].fullUrl = "http://www.example.org/fhir/Composition/DDCCCompositionExampleRussian" +* entry[ddccComposition].resource = DDCCCompositionExampleRussian -* entry[ddccPatient].fullUrl = "http://www.example.org/fhir/Patient/DDCC-Patient-Russian" -* entry[ddccPatient].resource = DDCC-Patient-Russian +* entry[ddccPatient].fullUrl = "http://www.example.org/fhir/Patient/DDCCPatientRussian" +* entry[ddccPatient].resource = DDCCPatientRussian -* entry[ddccOrganization].fullUrl = "http://www.example.org/fhir/Organization/DDCC-Organization-Russian" -* entry[ddccOrganization].resource = DDCC-Organization-Russian +* entry[ddccOrganization].fullUrl = "http://www.example.org/fhir/Organization/DDCCOrganizationRussian" +* entry[ddccOrganization].resource = DDCCOrganizationRussian -* entry[ddccImmunization].fullUrl = "http://www.example.org/fhir/Immunization/DDCC-Immunization-Russian" -* entry[ddccImmunization].resource = DDCC-Immunization-Russian +* entry[ddccImmunization].fullUrl = "http://www.example.org/fhir/Immunization/DDCCImmunizationRussian" +* entry[ddccImmunization].resource = DDCCImmunizationRussian -* entry[ddccImmunizationRecommendation].fullUrl = "http://www.example.org/fhir/ImmunizationRecommendation/DDCC-ImmunizationRecommendation-Russian" -* entry[ddccImmunizationRecommendation].resource = DDCC-ImmunizationRecommendation-Russian +* entry[ddccImmunizationRecommendation].fullUrl = "http://www.example.org/fhir/ImmunizationRecommendation/DDCCImmunizationRecommendationRussian" +* entry[ddccImmunizationRecommendation].resource = DDCCImmunizationRecommendationRussian -Instance: DDCC-VS-QuestionnaireResponse-Russian +Instance: DDCCVSQuestionnaireResponseRussian InstanceOf: DDCCQuestionnaireResponse Usage: #example * questionnaire = $DDCCVSQuestionnaireURL * status = #completed -* subject = Reference(DDCC-Patient-Russian) +* subject = Reference(DDCCPatientRussian) * authored = "2021-04-01" * item[+].linkId = "name" @@ -126,10 +126,10 @@ Usage: #example * item[=].answer.valueCoding = $ICD11#XM5QM6 * item[+].linkId = "manufacturer" -* item[=].answer.valueCoding = DDCC_Example_Test_CodeSystem#TEST +* item[=].answer.valueCoding = DDCCExampleTestCodeSystem#TEST * item[+].linkId = "ma_holder" -* item[=].answer.valueCoding = DDCC_Example_Test_CodeSystem#TEST +* item[=].answer.valueCoding = DDCCExampleTestCodeSystem#TEST * item[+].linkId = "lot" * item[=].answer.valueString = "ER8732" @@ -174,20 +174,20 @@ Usage: #example * item[=].answer.valueDate = "2022-04-05" -Instance: DDCC-VS-TX-SHE-Parameters-Russian +Instance: DDCCVSTXSHEParametersRussian InstanceOf: DDCCGenerateHealthCertificateParameters Usage: #inline * parameter[+].name = "response" -* parameter[=].resource = DDCC-VS-QuestionnaireResponse-Russian +* parameter[=].resource = DDCCVSQuestionnaireResponseRussian -Instance: DDCC-TX-SHE-bundle-example-Russian +Instance: DDCCTXSHEbundleexampleRussian InstanceOf: DDCCSubmitHealthEventRequest Usage: #example * type = #batch -* entry[+].fullUrl = "http://www.example.org/fhir/Parameters/DDCC-VS-TX-SHE-Parameters-Russian" -* entry[=].resource = DDCC-VS-TX-SHE-Parameters-Russian +* entry[+].fullUrl = "http://www.example.org/fhir/Parameters/DDCCVSTXSHEParametersRussian" +* entry[=].resource = DDCCVSTXSHEParametersRussian * entry[=].request.method = #POST * entry[=].request.url = "QuestionnaireResponse/$generateHealthCertificate" diff --git a/input/fsh/example-spanish.fsh b/input/fsh/example-spanish.fsh index b4b68b3f5c..209b744a29 100644 --- a/input/fsh/example-spanish.fsh +++ b/input/fsh/example-spanish.fsh @@ -1,4 +1,4 @@ -Instance: DDCC-Patient-Spanish +Instance: DDCCPatientSpanish InstanceOf: DDCCPatient Usage: #example // Title: "" @@ -8,74 +8,74 @@ Usage: #example * birthDate = "2003-03-03" -Instance: DDCC-Organization-Spanish +Instance: DDCCOrganizationSpanish InstanceOf: DDCCOrganization Usage: #example // Title: "" // Description: "" * name = "Hospital del Gobierno" -Instance: DDCC-Organization-XCL +Instance: DDCCOrganizationXCL InstanceOf: DDCCOrganization * name = "Chile (Demonstration)" * identifier.system = "urn:iso:std:iso:3166" * identifier.value = "CL" -Instance: DDCC-ImmunizationRecommendation-Spanish +Instance: DDCCImmunizationRecommendationSpanish InstanceOf: DDCCImmunizationRecommendation Usage: #example // Title: "" // Description: "" * date = "2021-05-06" -* patient = Reference(DDCC-Patient-Spanish) +* patient = Reference(DDCCPatientSpanish) * recommendation.vaccineCode.coding[ddccVaccine] = $ICD11#XM9QW8 * recommendation.dateCriterion.value = "2021-05-20" * recommendation.dateCriterion.code = http://loinc.org#30980-7 * recommendation.forecastStatus = http://terminology.hl7.org/CodeSystem/immunization-recommendation-status#due -* recommendation.supportingImmunization = Reference(DDCC-Immunization-Spanish) +* recommendation.supportingImmunization = Reference(DDCCImmunizationSpanish) -Instance: DDCC-Immunization-Spanish +Instance: DDCCImmunizationSpanish InstanceOf: DDCCImmunization Usage: #example // Title: "" // Description: "" * status = #completed * extension[vaccineBrand].valueCoding = $ICD11#XM4YL8 -* extension[vaccineMarketAuthorization].valueCoding = DDCC_Example_Test_CodeSystem#TEST +* extension[vaccineMarketAuthorization].valueCoding = DDCCExampleTestCodeSystem#TEST * extension[validFrom].valueDate = "2021-05-30" * extension[country].valueCode = urn:iso:std:iso:3166#ESP * vaccineCode = $ICD11#XM9QW8 * expirationDate = "2021-06-30" * lotNumber = "123" -* patient = Reference(DDCC-Patient-Spanish) +* patient = Reference(DDCCPatientSpanish) * location.display = "Sitio de vacunación" * occurrenceDateTime = "2021-05-06" -* performer.actor = Reference(DDCC-Organization-Spanish) -* protocolApplied[protocolAppliedAuthority].authority = Reference(DDCC-Organization-Spanish) +* performer.actor = Reference(DDCCOrganizationSpanish) +* protocolApplied[protocolAppliedAuthority].authority = Reference(DDCCOrganizationSpanish) * protocolApplied[protocolAppliedAuthority].targetDisease = $ICD11#RA01 * protocolApplied[protocolAppliedAuthority].doseNumberPositiveInt = 1 * protocolApplied[protocolAppliedAuthority].seriesDosesPositiveInt = 2 -Instance: DDCC-Composition-Example-Spanish +Instance: DDCCCompositionExampleSpanish InstanceOf: DDCCVSComposition Usage: #example * identifier[+].system = "urn:EXAMPLE-who-:ddcc:composition:ids" * identifier[=].value = "999123456123456123456" * identifier[=].use = #official * status = #final -* subject = Reference(DDCC-Patient-Spanish) +* subject = Reference(DDCCPatientSpanish) * date = "2020-05-06" -* author = Reference(DDCC-Organization-Spanish) -* attester.party = Reference(DDCC-Organization-Spanish) +* author = Reference(DDCCOrganizationSpanish) +* attester.party = Reference(DDCCOrganizationSpanish) * section[vaccination].code = $LOINC#11369-6 -* section[vaccination].focus = Reference(DDCC-Immunization-Spanish) -* section[vaccination].entry[+] = Reference(DDCC-Immunization-Spanish) -* section[vaccination].entry[+] = Reference(DDCC-ImmunizationRecommendation-Spanish) +* section[vaccination].focus = Reference(DDCCImmunizationSpanish) +* section[vaccination].entry[+] = Reference(DDCCImmunizationSpanish) +* section[vaccination].entry[+] = Reference(DDCCImmunizationRecommendationSpanish) -Instance: Example-Spanish +Instance: ExampleSpanish InstanceOf: DDCCVSDocument Usage: #example @@ -87,30 +87,30 @@ Usage: #example * link[+].relation = "publication" * link[=].url = "urn:HCID:1234567890" -* entry[ddccComposition].fullUrl = "http://www.example.org/fhir/Composition/DDCC-Composition-Example-Spanish" -* entry[ddccComposition].resource = DDCC-Composition-Example-Spanish +* entry[ddccComposition].fullUrl = "http://www.example.org/fhir/Composition/DDCCCompositionExampleSpanish" +* entry[ddccComposition].resource = DDCCCompositionExampleSpanish -* entry[ddccPatient].fullUrl = "http://www.example.org/fhir/Patient/DDCC-Patient-Spanish" -* entry[ddccPatient].resource = DDCC-Patient-Spanish +* entry[ddccPatient].fullUrl = "http://www.example.org/fhir/Patient/DDCCPatientSpanish" +* entry[ddccPatient].resource = DDCCPatientSpanish -* entry[ddccOrganization].fullUrl = "http://www.example.org/fhir/Organization/DDCC-Organization-Spanish" -* entry[ddccOrganization].resource = DDCC-Organization-Spanish +* entry[ddccOrganization].fullUrl = "http://www.example.org/fhir/Organization/DDCCOrganizationSpanish" +* entry[ddccOrganization].resource = DDCCOrganizationSpanish -* entry[ddccImmunization].fullUrl = "http://www.example.org/fhir/Immunization/DDCC-Immunization-Spanish" -* entry[ddccImmunization].resource = DDCC-Immunization-Spanish +* entry[ddccImmunization].fullUrl = "http://www.example.org/fhir/Immunization/DDCCImmunizationSpanish" +* entry[ddccImmunization].resource = DDCCImmunizationSpanish -* entry[ddccImmunizationRecommendation].fullUrl = "http://www.example.org/fhir/ImmunizationRecommendation/DDCC-ImmunizationRecommendation-Spanish" -* entry[ddccImmunizationRecommendation].resource = DDCC-ImmunizationRecommendation-Spanish +* entry[ddccImmunizationRecommendation].fullUrl = "http://www.example.org/fhir/ImmunizationRecommendation/DDCCImmunizationRecommendationSpanish" +* entry[ddccImmunizationRecommendation].resource = DDCCImmunizationRecommendationSpanish -Instance: DDCC-VS-QuestionnaireResponse-Spanish +Instance: DDCCVSQuestionnaireResponseSpanish InstanceOf: DDCCQuestionnaireResponse Usage: #example * questionnaire = $DDCCVSQuestionnaireURL * status = #completed -* subject = Reference(DDCC-Patient-Spanish) +* subject = Reference(DDCCPatientSpanish) * authored = "2021-04-01" * item[+].linkId = "name" @@ -132,10 +132,10 @@ Usage: #example * item[=].answer.valueCoding = $ICD11#XM4YL8 * item[+].linkId = "manufacturer" -* item[=].answer.valueCoding = DDCC_Example_Test_CodeSystem#TEST +* item[=].answer.valueCoding = DDCCExampleTestCodeSystem#TEST * item[+].linkId = "ma_holder" -* item[=].answer.valueCoding = DDCC_Example_Test_CodeSystem#TEST +* item[=].answer.valueCoding = DDCCExampleTestCodeSystem#TEST * item[+].linkId = "lot" * item[=].answer.valueString = "ER8732" @@ -180,20 +180,20 @@ Usage: #example * item[=].answer.valueDate = "2022-04-05" -Instance: DDCC-VS-TX-SHE-Parameters-Spanish +Instance: DDCCVSTXSHEParametersSpanish InstanceOf: DDCCGenerateHealthCertificateParameters Usage: #inline * parameter[+].name = "response" -* parameter[=].resource = DDCC-VS-QuestionnaireResponse-Spanish +* parameter[=].resource = DDCCVSQuestionnaireResponseSpanish -Instance: DDCC-TX-SHE-bundle-example-Spanish +Instance: DDCCTXSHEbundleexampleSpanish InstanceOf: DDCCSubmitHealthEventRequest Usage: #example * type = #batch -* entry[+].fullUrl = "http://www.example.org/fhir/Parameters/DDCC-VS-TX-SHE-Parameters-Spanish" -* entry[=].resource = DDCC-VS-TX-SHE-Parameters-Spanish +* entry[+].fullUrl = "http://www.example.org/fhir/Parameters/DDCCVSTXSHEParametersSpanish" +* entry[=].resource = DDCCVSTXSHEParametersSpanish * entry[=].request.method = #POST * entry[=].request.url = "QuestionnaireResponse/$generateHealthCertificate" diff --git a/input/fsh/tx-cs-cvx.fsh b/input/fsh/tx-cs-cvx.fsh index 4f67daa8ae..8d66f4735b 100644 --- a/input/fsh/tx-cs-cvx.fsh +++ b/input/fsh/tx-cs-cvx.fsh @@ -1,4 +1,4 @@ -CodeSystem: WHO_DDCC_cvx +CodeSystem: WHODDCCcvx Title: "CVX codes used in this IG" Description: "All CVX codes from `http://hl7.org/fhir/sid/cvx` used in this IG. Provided so the FHIR server can perform expansions." * ^experimental = true diff --git a/input/fsh/tx-cs-divoc-lab-test-origin.fsh b/input/fsh/tx-cs-divoc-lab-test-origin.fsh index 299ebcef9c..30aad5b9b1 100644 --- a/input/fsh/tx-cs-divoc-lab-test-origin.fsh +++ b/input/fsh/tx-cs-divoc-lab-test-origin.fsh @@ -1,9 +1,9 @@ -CodeSystem: WHO_DDCC_divoc_lab_test_origin +CodeSystem: WHODDCCdivoclabtestorigin Title: "DIVOC lab test origin codes used in this IG" Description: "All DIVOC lab test origin codes from its internally defined code system used in this IG. Provided so the FHIR server can perform expansions." * ^experimental = true * ^caseSensitive = true -* ^url = "http://smart.who.int/ddcc/CodeSystem/lab-test-sample-origin-divoc" +* ^url = "http://smart.who.int/ddcc/CodeSystem/WHODDCCdivoclabtestorigin" * #"Nasopharyngeal Swab" "Nasopharyngeal Swab" * #"Throat swab" "Throat swab" diff --git a/input/fsh/tx-cs-divoc-lab-test-pathogen.fsh b/input/fsh/tx-cs-divoc-lab-test-pathogen.fsh index 2268e0868e..11ffec63b8 100644 --- a/input/fsh/tx-cs-divoc-lab-test-pathogen.fsh +++ b/input/fsh/tx-cs-divoc-lab-test-pathogen.fsh @@ -1,9 +1,9 @@ -CodeSystem: WHO_DDCC_divoc_lab_test_pathogen +CodeSystem: WHODDCCdivoclabtestpathogen Title: "DIVOC lab test pathogen codes used in this IG" Description: "All DIVOC lab test pathogen codes from its internally defined code system used in this IG. Provided so the FHIR server can perform expansions." * ^experimental = true * ^caseSensitive = true -* ^url = "http://smart.who.int/ddcc/CodeSystem/lab-test-pathogen-divoc" +* ^url = "http://smart.who.int/ddcc/CodeSystem/WHODDCCdivoclabtestpathogen" * #COVID-19 "Concerns the detection of SARS-CoV-2 infection." * #covid-19 "Concerns the detection of SARS-CoV-2 infection." diff --git a/input/fsh/tx-cs-divoc-lab-test-result.fsh b/input/fsh/tx-cs-divoc-lab-test-result.fsh index b67169b5a8..10ed12f84d 100644 --- a/input/fsh/tx-cs-divoc-lab-test-result.fsh +++ b/input/fsh/tx-cs-divoc-lab-test-result.fsh @@ -1,9 +1,9 @@ -CodeSystem: WHO_DDCC_divoc_lab_test_result +CodeSystem: WHODDCCdivoclabtestresult Title: "DIVOC lab test result codes used in this IG" Description: "All DIVOC lab test result codes from its internally defined code system used in this IG. Provided so the FHIR server can perform expansions." * ^experimental = true * ^caseSensitive = true -* ^url = "http://smart.who.int/ddcc/CodeSystem/lab-test-qual-result-divoc" +* ^url = "http://smart.who.int/ddcc/CodeSystem/WHODDCCdivoclabtestresult" * #Negative "Negative" * #Positive "Positive" diff --git a/input/fsh/tx-cs-divoc-lab-test-type.fsh b/input/fsh/tx-cs-divoc-lab-test-type.fsh index 088bea3bef..18ee7c736e 100644 --- a/input/fsh/tx-cs-divoc-lab-test-type.fsh +++ b/input/fsh/tx-cs-divoc-lab-test-type.fsh @@ -1,9 +1,9 @@ -CodeSystem: WHO_DDCC_divoc_lab_test_type +CodeSystem: WHODDCCdivoclabtesttype Title: "DIVOC lab test type codes used in this IG" Description: "All DIVOC lab test type codes from its internally defined code system used in this IG. Provided so the FHIR server can perform expansions." * ^experimental = true * ^caseSensitive = true -* ^url = "http://smart.who.int/ddcc/CodeSystem/lab-test-type-divoc" +* ^url = "http://smart.who.int/ddcc/CodeSystem/WHODDCCdivoclabtesttype" * #RT-PCR "RT-PCR" * #"Rapid Antigen Test (RAT)" "Rapid Antigen Test (RAT)" diff --git a/input/fsh/tx-cs-euur.fsh b/input/fsh/tx-cs-euur.fsh index d3cdee13d1..51019c15f1 100644 --- a/input/fsh/tx-cs-euur.fsh +++ b/input/fsh/tx-cs-euur.fsh @@ -1,4 +1,4 @@ -CodeSystem: WHO_DDCC_euur +CodeSystem: WHODDCCeuur Title: "EUUR codes used in this IG" Description: "All EUUR codes from `https://ec.europa.eu/health/documents/community-register/html/` used in this IG. Provided so the FHIR server can perform expansions." * ^experimental = true diff --git a/input/fsh/tx-cs-icao-lab-test-origin.fsh b/input/fsh/tx-cs-icao-lab-test-origin.fsh index 598b34b88c..c112722769 100644 --- a/input/fsh/tx-cs-icao-lab-test-origin.fsh +++ b/input/fsh/tx-cs-icao-lab-test-origin.fsh @@ -1,9 +1,9 @@ -CodeSystem: WHO_DDCC_icao_lab_test_origin +CodeSystem: WHODDCCicaolabtestorigin Title: "ICAO lab test origin codes used in this IG" Description: "All ICAO lab test origin codes from its internally defined code system used in this IG. Provided so the FHIR server can perform expansions." * ^experimental = true * ^caseSensitive = true -* ^url = "http://smart.who.int/ddcc/CodeSystem/lab-test-sample-origin-icao" +* ^url = "http://smart.who.int/ddcc/CodeSystem/WHODDCCicaolabtestorigin" * #nasopharyngeal "Sampling method: nasopharyngeal" * #oropharyngeal "Sampling method: oropharyngeal" diff --git a/input/fsh/tx-cs-icao-lab-test-result.fsh b/input/fsh/tx-cs-icao-lab-test-result.fsh index d63f20e9b9..c036422c2d 100644 --- a/input/fsh/tx-cs-icao-lab-test-result.fsh +++ b/input/fsh/tx-cs-icao-lab-test-result.fsh @@ -1,9 +1,9 @@ -CodeSystem: WHO_DDCC_icao_lab_test_result +CodeSystem: WHODDCCicaolabtestresult Title: "ICAO lab test result codes used in this IG" Description: "All ICAO lab test result codes from its internally defined code system used in this IG. Provided so the FHIR server can perform expansions." * ^experimental = true * ^caseSensitive = true -* ^url = "http://smart.who.int/ddcc/CodeSystem/lab-test-qual-result-icao" +* ^url = "http://smart.who.int/ddcc/CodeSystem/WHODDCCicaolabtestresult" * #normal "Normal" * #abnormal "Abnormal" diff --git a/input/fsh/tx-cs-icao-lab-test-type.fsh b/input/fsh/tx-cs-icao-lab-test-type.fsh index 87dfe0db59..c0c1037bd9 100644 --- a/input/fsh/tx-cs-icao-lab-test-type.fsh +++ b/input/fsh/tx-cs-icao-lab-test-type.fsh @@ -1,9 +1,9 @@ -CodeSystem: WHO_DDCC_icao_lab_test_type +CodeSystem: WHODDCCicaolabtesttype Title: "ICAO lab test type codes used in this IG" Description: "All ICAO lab test type codes from its internally defined code system used in this IG. Provided so the FHIR server can perform expansions." * ^experimental = true * ^caseSensitive = true -* ^url = "http://smart.who.int/ddcc/CodeSystem/lab-test-type-icao" +* ^url = "http://smart.who.int/ddcc/CodeSystem/WHODDCCicaolabtesttype" * #molecular(PCR) "Molecular (PCR)" * #molecular(other) "Molecular (Other)" diff --git a/input/fsh/tx-cs-loinc.fsh b/input/fsh/tx-cs-loinc.fsh index a35ba68051..bb26071913 100644 --- a/input/fsh/tx-cs-loinc.fsh +++ b/input/fsh/tx-cs-loinc.fsh @@ -1,4 +1,4 @@ -CodeSystem: WHO_DDCC_loinc +CodeSystem: WHODDCCloinc Title: "LOINC codes used in this IG" Description: "All LOINC codes from `http://loinc.org` used in this IG. Provided so the FHIR server can perform expansions." * ^experimental = true diff --git a/input/fsh/tx-cs-snomed.fsh b/input/fsh/tx-cs-snomed.fsh index 69246db813..9d0c39cb26 100644 --- a/input/fsh/tx-cs-snomed.fsh +++ b/input/fsh/tx-cs-snomed.fsh @@ -1,4 +1,4 @@ -CodeSystem: WHO_DDCC_snomed +CodeSystem: WHODDCCsnomed Title: "SNOMED codes used in this IG" Description: "All SNOMED codes from `http://snomed.info/sct` used in this IG. Provided so the FHIR server can perform expansions." * ^experimental = true diff --git a/input/maps-src/CertDCCtoCoreDataSet.map b/input/maps-src/CertDCCtoCoreDataSet.map index d05351e4b6..248cc60a1d 100644 --- a/input/maps-src/CertDCCtoCoreDataSet.map +++ b/input/maps-src/CertDCCtoCoreDataSet.map @@ -5,8 +5,8 @@ uses "http://smart.who.int/ddcc/StructureDefinition/CertDCC" alias CWTPayload as uses "http://hl7.org/fhir/StructureDefinition/Bundle" alias DDCCBundle as target uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet" alias DDCC as produced -uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS" alias DDCCVS as produced -uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR" alias DDCCTR as produced +uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS" alias DDCCVS as produced +uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR" alias DDCCTR as produced group CertDCCtoCoreDataSet( source src: CWTPayload, @@ -14,13 +14,13 @@ group CertDCCtoCoreDataSet( { src."-260" as hcert then { hcert."1" as dcc then { - dcc.v as v -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS') as ddcc then { + dcc.v as v -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS') as ddcc then { v then DCCtoCoreDataSet(dcc, ddcc) "set DDCC"; v -> ddcc.certificate as certificate then CertDCCtoCoreDataSetCertificate(src, dcc, v, certificate) "set certificate"; v -> ddcc.vaccination as vaccination then VtoCoreDataSetVS(v, vaccination) "set vaccination"; v -> outentry.resource = ddcc "set outentry"; } "v"; - dcc.t as t -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR') as ddcc then { + dcc.t as t -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR') as ddcc then { t then DCCtoCoreDataSet(dcc, ddcc) "set DDCC"; t -> ddcc.certificate as certificate then CertDCCtoCoreDataSetCertificate(src, dcc, t, certificate) "set certificate"; t -> ddcc.test as test then TtoCoreDataSetTR(t, test) "set test"; diff --git a/input/maps-src/CertDIVOCtoCoreDataSet.map b/input/maps-src/CertDIVOCtoCoreDataSet.map index 6f671a62c4..54e0659ff8 100644 --- a/input/maps-src/CertDIVOCtoCoreDataSet.map +++ b/input/maps-src/CertDIVOCtoCoreDataSet.map @@ -5,8 +5,8 @@ uses "http://smart.who.int/ddcc/StructureDefinition/CertDIVOC" alias DIVOC as so uses "http://hl7.org/fhir/StructureDefinition/Bundle" alias DDCCBundle as target uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet" alias DDCC as produced -uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS" alias DDCCVS as produced -uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR" alias DDCCTR as produced +uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS" alias DDCCVS as produced +uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR" alias DDCCTR as produced group CertDIVOCtoCoreDataSetBundle( source src: DIVOC, @@ -14,7 +14,7 @@ group CertDIVOCtoCoreDataSetBundle( { src.type as type then { type where type = 'ProofOfVaccinationCredential' then { - src.evidence as evidence -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS') as ddcc then { + src.evidence as evidence -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS') as ddcc then { src.credentialSubject as credentialSubject then CredentialSubjecttoCoreDataSet(credentialSubject, ddcc) "set patient"; src -> ddcc.certificate as certificate then CertDIVOCtoCoreDataSetCertificate(src, evidence, certificate) "set certificate"; evidence -> ddcc.vaccination as vaccination then EvidencetoCoreDataSetVS(evidence, vaccination) "set vaccination"; @@ -22,7 +22,7 @@ group CertDIVOCtoCoreDataSetBundle( } "evidence"; } "ProofOfVaccinationCredential"; type where type = 'ProofOfTestCertificateCredential' then { - src.evidence as evidence -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR') as ddcc then { + src.evidence as evidence -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR') as ddcc then { src.credentialSubject as credentialSubject then CredentialSubjecttoCoreDataSet(credentialSubject, ddcc) "set patient"; src -> ddcc.certificate as certificate then CertDIVOCtoCoreDataSetCertificate(src, evidence, certificate) "set certificate"; evidence -> ddcc.test as test then EvidencetoCoreDataSetTR(evidence, test) "set test"; diff --git a/input/maps-src/CertICAOtoCoreDataSet.map b/input/maps-src/CertICAOtoCoreDataSet.map index f15c0b1819..92387e90d2 100644 --- a/input/maps-src/CertICAOtoCoreDataSet.map +++ b/input/maps-src/CertICAOtoCoreDataSet.map @@ -5,8 +5,8 @@ uses "http://smart.who.int/ddcc/StructureDefinition/CertICAOVDS" alias VDS as so uses "http://hl7.org/fhir/StructureDefinition/Bundle" alias DDCCBundle as target uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet" alias DDCC as produced -uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS" alias DDCCVS as produced -uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR" alias DDCCTR as produced +uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS" alias DDCCVS as produced +uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR" alias DDCCTR as produced group CertICAOtoCoreDataSet( source src: VDS, @@ -15,14 +15,14 @@ group CertICAOtoCoreDataSet( src.data as data then { data.msg as msg then { msg.ve as ve then { - ve.vd as vd -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS') as ddcc then { + ve.vd as vd -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS') as ddcc then { data.hdr as hdr -> ddcc.certificate as certificate then VDStoCoreDataSetCertificate(hdr, msg, certificate) "set certificate"; msg.pid as pid then ExtractPatient(pid, ddcc) "set patient"; vd -> ddcc.vaccination as vaccination then ExtractVaccine(ve, vd, vaccination) "set vaccination"; vd -> outentry.resource = ddcc "set outentry"; } "vd"; } "ve"; - msg.tr as tr -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR') as ddcc then { + msg.tr as tr -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR') as ddcc then { data.hdr as hdr -> ddcc.certificate as certificate then VDStoCoreDataSetCertificate(hdr, msg, certificate) "set certificate"; msg.pid as pid then ExtractPatient(pid, ddcc) "set patient"; msg.sp as sp then { diff --git a/input/maps-src/CertSHCtoCoreDataSet.map b/input/maps-src/CertSHCtoCoreDataSet.map index 93e3d376a3..004a4114d3 100644 --- a/input/maps-src/CertSHCtoCoreDataSet.map +++ b/input/maps-src/CertSHCtoCoreDataSet.map @@ -5,7 +5,7 @@ uses "http://smart.who.int/ddcc/StructureDefinition/CertSHC" alias JWTPayload as uses "http://hl7.org/fhir/StructureDefinition/Bundle" alias DDCCBundle as target uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet" alias DDCC as produced -uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS" alias DDCCVS as produced +uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS" alias DDCCVS as produced imports "http://smart.who.int/ddcc/StructureMap/SHCToCoreDataSetVS" imports "http://smart.who.int/ddcc/StructureMap/SHCToCoreDataSetTR" @@ -20,13 +20,13 @@ group CertSHCtoCoreDataSetBundle( fhirBundle.entry as patientEntrySHC then { patientEntrySHC.resource : Patient first as patient then { fhirBundle.entry as entry then { - entry.resource : Immunization as immunization -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS') as ddcc then { + entry.resource : Immunization as immunization -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS') as ddcc then { immunization then PatientToDDCCVS(patient, ddcc) "set patient"; immunization -> ddcc.vaccination as vaccination then ImmunizationToDDCC(immunization, vaccination) "set vaccination"; immunization then CertSHCtoCoreDataSet(src, ddcc) "set ddcc"; immunization -> outentry.resource = ddcc "set outentry"; } "immunizations"; - entry.resource : Observation as lab -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR') as ddcc then { + entry.resource : Observation as lab -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR') as ddcc then { lab then PatientToDDCCTR(patient, ddcc) "set patient"; lab -> ddcc.test as test then LabToDDCC(lab, test) "set test"; lab then CertSHCtoCoreDataSet(src, ddcc) "set ddcc"; diff --git a/input/maps-src/CoreDataSetLibrary.map b/input/maps-src/CoreDataSetLibrary.map index 53cb1d3dd8..4f306c8378 100644 --- a/input/maps-src/CoreDataSetLibrary.map +++ b/input/maps-src/CoreDataSetLibrary.map @@ -1,6 +1,6 @@ map "http://smart.who.int/ddcc/StructureMap/CoreDataSetLibrary" = "CoreDataSetLibrary" -uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS" alias DDCCVS as source +uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS" alias DDCCVS as source uses "http://hl7.org/fhir/StructureDefinition/Patient" alias Patient as target uses "http://smart.who.int/ddcc/StructureDefinition/DDCCPatient" alias DDCCPatient as produced @@ -33,19 +33,19 @@ group DDCCToDocumentReference( src -> ref.content as content then { src -> content.attachment as attachment, attachment.contentType = "application/json" "set contentType"; src -> content.format as format, - format.system = "http://smart.who.int/ddcc/CodeSystem/DDCC-QR-Format-CodeSystem", + format.system = "http://smart.who.int/ddcc/CodeSystem/DDCCQRFormatCodeSystem", format.code = "serialized" "set format code"; } "set serialized content"; src -> ref.content as content then { src -> content.attachment as attachment, attachment.contentType = "image/png" "set contentType"; src -> content.format as format, - format.system = "http://smart.who.int/ddcc/CodeSystem/DDCC-QR-Format-CodeSystem", + format.system = "http://smart.who.int/ddcc/CodeSystem/DDCCQRFormatCodeSystem", format.code = "image" "set format code"; } "set image content"; src -> ref.content as content then { src -> content.attachment as attachment, attachment.contentType = "application/pdf" "set contentType"; src -> content.format as format, - format.system = "http://smart.who.int/ddcc/CodeSystem/DDCC-QR-Format-CodeSystem", + format.system = "http://smart.who.int/ddcc/CodeSystem/DDCCQRFormatCodeSystem", format.code = "pdf" "set format code"; } "set pdf content"; } diff --git a/input/maps-src/CoreDataSetVSLibrary.map b/input/maps-src/CoreDataSetVSLibrary.map index e4cb3ca784..fc16d82ae6 100644 --- a/input/maps-src/CoreDataSetVSLibrary.map +++ b/input/maps-src/CoreDataSetVSLibrary.map @@ -1,6 +1,6 @@ map "http://smart.who.int/ddcc/StructureMap/CoreDataSetVSLibrary" = "CoreDataSetVSLibrary" -uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS" alias DDCCVS as source +uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS" alias DDCCVS as source uses "http://hl7.org/fhir/StructureDefinition/Bundle" alias AddBundle as target uses "http://hl7.org/fhir/StructureDefinition/Patient" alias Patient as target @@ -43,7 +43,7 @@ group VSToAddBundle ( then { ddcc then DDCCToComposition( ddcc, comp, compid, pid ) "setup composition"; ddcc -> comp.category as category, category.coding as coding, - coding.system = "http://smart.who.int/ddcc/CodeSystem/DDCC-Composition-Category-CodeSystem", + coding.system = "http://smart.who.int/ddcc/CodeSystem/DDCCCompositionCategoryCodeSystem", coding.code = "ddcc-vs" "set category"; ddcc -> comp.title = "International Certificate of Vaccination or Prophylaxis" "set title"; ddcc -> comp.section as section then { @@ -87,7 +87,7 @@ group VSToAddBundle ( ddcc -> qr.category as category, category.coding as coding, - coding.system = "http://smart.who.int/ddcc/CodeSystem/DDCC-QR-Category-Usage-CodeSystem", + coding.system = "http://smart.who.int/ddcc/CodeSystem/DDCCQRCategoryUsageCodeSystem", coding.code = "who" "set category"; ddcc -> qr.description = "WHO QR code for COVID 19 Vaccine Certificate" "set description"; ddcc -> entry.resource = qr "set WHO QR"; @@ -105,7 +105,7 @@ group VSToAddBundle ( ddcc -> qr.category as category, category.coding as coding, - coding.system = "http://smart.who.int/ddcc/CodeSystem/DDCC-QR-Category-Usage-CodeSystem", + coding.system = "http://smart.who.int/ddcc/CodeSystem/DDCCQRCategoryUsageCodeSystem", coding.code = "dcc" "set category"; ddcc -> qr.description = "DCC QR code for COVID 19 Vaccine Certificate" "set description"; ddcc -> entry.resource = qr "set DCC QR"; diff --git a/input/maps-src/CoreDataSetVSToAddBundle.map b/input/maps-src/CoreDataSetVSToAddBundle.map index 4af8e48dca..d9d463f91f 100644 --- a/input/maps-src/CoreDataSetVSToAddBundle.map +++ b/input/maps-src/CoreDataSetVSToAddBundle.map @@ -1,6 +1,6 @@ map "http://smart.who.int/ddcc/StructureMap/CoreDataSetVSToAddBundle" = "CoreDataSetVSToAddBundle" -uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS" alias DDCCVS as source +uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS" alias DDCCVS as source uses "http://hl7.org/fhir/StructureDefinition/Bundle" alias AddBundle as target imports "http://smart.who.int/ddcc/StructureMap/CoreDataSetVSLibrary" diff --git a/input/maps-src/CoreDataSetVSToSHC.map b/input/maps-src/CoreDataSetVSToSHC.map index 4664ff1cce..1b05bd2fba 100644 --- a/input/maps-src/CoreDataSetVSToSHC.map +++ b/input/maps-src/CoreDataSetVSToSHC.map @@ -1,6 +1,6 @@ map "http://smart.who.int/ddcc/StructureMap/CoreDataSetVSToSHC" = "CoreDataSetVSToSHC" -uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS" alias DDCCVS as source +uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS" alias DDCCVS as source uses "http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-vaccination-bundle-dm" alias SHCVaccinationBundleDM as target uses "http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-patient-general-dm" alias SHCPatientDM as produced diff --git a/input/maps-src/DDCCtoCoredataset.map b/input/maps-src/DDCCtoCoredataset.map index 0cc0946ded..d8c30e493c 100644 --- a/input/maps-src/DDCCtoCoredataset.map +++ b/input/maps-src/DDCCtoCoredataset.map @@ -8,7 +8,7 @@ uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCountryOfVaccination" al uses "http://smart.who.int/ddcc/StructureDefinition/DDCCVaccineBrand" alias DDCCVaccineBrand as source uses "http://smart.who.int/ddcc/StructureDefinition/DDCCOrganization" alias DDCCOrganization as source uses "http://smart.who.int/ddcc/StructureDefinition/DDCCImmunization" alias DDCCImmunization as source -uses "http://smart.who.int/ddcc/DDCCCoreDataSet.VS.PoV" alias DDCCCoreDataSetPoV as target +uses "http://smart.who.int/ddcc/DDCCCoreDataSet-VS-PoV" alias DDCCCoreDataSetPoV as target group DecodeDDCCtoQR ( diff --git a/input/maps-src/IPSToCoreDataSetVS.map b/input/maps-src/IPSToCoreDataSetVS.map index 72b3fdec8f..60f79bc663 100644 --- a/input/maps-src/IPSToCoreDataSetVS.map +++ b/input/maps-src/IPSToCoreDataSetVS.map @@ -3,7 +3,7 @@ map "http://smart.who.int/ddcc/StructureMap/IPSToCoreDataSetVS" = "IPSToCoreData uses "http://hl7.org/fhir/StructureDefinition/Bundle" alias IPS as source uses "http://hl7.org/fhir/StructureDefinition/Bundle" alias DDCCBundle as target -uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS.PoV" alias DDCC as produced +uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS-PoV" alias DDCC as produced group IPSToCoreDataSetVS ( @@ -21,9 +21,9 @@ group IPSToCoreDataSetVS ( findpatient.resource as patient then { ips.entry as entry then { entry.resource : Immunization as immunization - where vaccineCode.memberOf("http://smart.who.int/ddcc/ValueSet/who-ddcc-allowed-vaccines-covid-19") -> + where vaccineCode.memberOf("http://smart.who.int/ddcc/ValueSet/WHODDCCVaccinesCOVID19") -> ddccBundle.entry as outentry, - create ("http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS.PoV") as ddcc + create ("http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSetVSPoV") as ddcc then { immunization then PatientToDDCC( patient, ddcc ) "set patient info"; @@ -53,11 +53,11 @@ group ImmunizationToVaccination( ) { immunization.vaccineCode as vaccine then { - vaccine.coding as coding where memberOf("http://smart.who.int/ddcc/ValueSet/who-ddcc-vaccines-covid-19") + vaccine.coding as coding where memberOf("http://smart.who.int/ddcc/ValueSet/WHODDCCVaccinesCOVID19") then { coding -> vaccination.vaccine = coding "set coding"; } "copy vaccine"; - vaccine.coding as coding where memberOf("http://smart.who.int/ddcc/ValueSet/who-ddcc-vaccines-covid-19").not() + vaccine.coding as coding where memberOf("http://smart.who.int/ddcc/ValueSet/WHODDCCVaccinesCOVID19").not() then { coding -> vaccination.vaccine = translate(coding, 'who-ddcc-map-cvx-icd11-vaccines', 'Coding') "translate code"; } "translate vaccine coding"; @@ -124,7 +124,7 @@ group IPSToVaccination( ips.entry as entry -> create("http://smart.who.int/ddcc/StructureDefinition/DDCCPatient") as params then { entry.resource : Immunization as immunization -> create('http://hl7.org/fhir/StructureDefinition/Parameters') as params - //where vaccineCode.memberOf("http://smart.who.int/ddcc/ValueSet/who-ddcc-vaccines-covid-19") + //where vaccineCode.memberOf("http://smart.who.int/ddcc/ValueSet/WHODDCCVaccinesCOVID19") //where vaccineCode.coding.exists(code='208') //check translate(vaccineCode.coding, 'who-ddcc-map-cvx-icd11-vaccines', 'code') then { diff --git a/input/maps-src/QRespToVSCoreDataSet.map b/input/maps-src/QRespToVSCoreDataSet.map index c36cc889e2..06a094fe02 100644 --- a/input/maps-src/QRespToVSCoreDataSet.map +++ b/input/maps-src/QRespToVSCoreDataSet.map @@ -2,7 +2,7 @@ map "http://smart.who.int/ddcc/StructureMap/QRespToVSCoreDataSet" = "QRespToVSCoreDataSet" uses "http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse" alias QResp as source -uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS.CoC" alias DDCC as target +uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS-CoC" alias DDCC as target group QRespToCoreDataSet ( diff --git a/input/maps-src/ResourcesToVSCoreDataSet.map b/input/maps-src/ResourcesToVSCoreDataSet.map index af82bc3eb9..812258856e 100644 --- a/input/maps-src/ResourcesToVSCoreDataSet.map +++ b/input/maps-src/ResourcesToVSCoreDataSet.map @@ -9,7 +9,7 @@ uses "http://smart.who.int/ddcc/StructureDefinition/DDCCImmunization" alias DDCC uses "http://smart.who.int/ddcc/StructureDefinition/DDCCImmunizationRecommendation" alias DDCCImmunizationRecommendation as source uses "http://smart.who.int/ddcc/StructureDefinition/DDCCVSComposition" alias DDCCVSComposition as source -uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS.PoV" alias DDCCPoV as target +uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS-PoV" alias DDCCPoV as target group ResourcesToCoreDataSet ( diff --git a/input/maps-src/SHCToCoreDataSetTR.map b/input/maps-src/SHCToCoreDataSetTR.map index c15a8790df..0a0990ab57 100644 --- a/input/maps-src/SHCToCoreDataSetTR.map +++ b/input/maps-src/SHCToCoreDataSetTR.map @@ -5,7 +5,7 @@ uses "http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-patient-gen uses "http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-infectious-disease-laboratory-result-observation-dm" alias SHCLabDM as source uses "http://hl7.org/fhir/StructureDefinition/Bundle" alias DDCCBundle as target -uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR" alias DDCCTR as produced +uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR" alias DDCCTR as produced group SHCToTR ( source shc : SHCLabBundleDM @@ -14,8 +14,8 @@ group SHCToTR ( shc.entry as patientEntrySHC then { patientEntrySHC.resource : Patient first as patient then { shc.entry as entry then { - //entry.resource : Immunization as immunization where vaccineCode.memberOf('http://smart.who.int/ddcc/ValueSet/who-ddcc-allowed-vaccines-covid-19') -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS') as ddcc then { - entry.resource : Observation as lab -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR') as ddcc then { + //entry.resource : Immunization as immunization where vaccineCode.memberOf('http://smart.who.int/ddcc/ValueSet/who-ddcc-allowed-vaccines-covid-19') -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS') as ddcc then { + entry.resource : Observation as lab -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR') as ddcc then { lab then PatientToDDCCTR(patient, ddcc) "set patient"; lab -> ddcc.test as test then LabToDDCC(lab, test) "set test"; lab -> outentry.resource = ddcc "set outentry"; diff --git a/input/maps-src/SHCToCoreDataSetVS.map b/input/maps-src/SHCToCoreDataSetVS.map index 2c303b2c75..44ac4f40df 100644 --- a/input/maps-src/SHCToCoreDataSetVS.map +++ b/input/maps-src/SHCToCoreDataSetVS.map @@ -5,7 +5,7 @@ uses "http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-patient-gen uses "http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-vaccination-dm" alias SHCImmunizationDM as source uses "http://hl7.org/fhir/StructureDefinition/Bundle" alias DDCCBundle as target -uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS" alias DDCCVS as produced +uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS" alias DDCCVS as produced group SHCToVS ( source shc : SHCVaccinationBundleDM @@ -14,8 +14,8 @@ group SHCToVS ( shc.entry as patientEntrySHC then { patientEntrySHC.resource : Patient first as patient then { shc.entry as entry then { - //entry.resource : Immunization as immunization where vaccineCode.memberOf('http://smart.who.int/ddcc/ValueSet/who-ddcc-allowed-vaccines-covid-19') -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS') as ddcc then { - entry.resource : Immunization as immunization -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS') as ddcc then { + //entry.resource : Immunization as immunization where vaccineCode.memberOf('http://smart.who.int/ddcc/ValueSet/who-ddcc-allowed-vaccines-covid-19') -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS') as ddcc then { + entry.resource : Immunization as immunization -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS') as ddcc then { immunization then PatientToDDCCVS(patient, ddcc) "set patient"; immunization -> ddcc.vaccination as vaccination then ImmunizationToDDCC(immunization, vaccination) "set vaccination"; immunization -> outentry.resource = ddcc "set outentry"; diff --git a/input/pagecontent/dictionary.xml b/input/pagecontent/dictionary.xml index 9ba5dc0c23..361c20f4a5 100644 --- a/input/pagecontent/dictionary.xml +++ b/input/pagecontent/dictionary.xml @@ -4,9 +4,9 @@ The recommended core data set in the WHO Digital Documentation of COVID-19 Certi

Logical Models

DDCC:VS Core Data Set

diff --git a/input/pagecontent/interoperability.xml b/input/pagecontent/interoperability.xml index c2a96342c9..82b7395344 100644 --- a/input/pagecontent/interoperability.xml +++ b/input/pagecontent/interoperability.xml @@ -39,7 +39,7 @@ ElementData TypeCardinalityCondition (IF True)Mapping Equivalence ElementData TypeCardinalityAssignmentComments   MinMaxComputable FHIRPathNarrative   MinMax   - DDCCCoreDataSet.VSDDCCCoreDataSet1*   SHCVaccinationBundleDMBundle11   + DDCCCoreDataSet-VSDDCCCoreDataSet1*   SHCVaccinationBundleDMBundle11          SHCVaccinationBundleDM.typecode11"collection"         SHCVaccinationBundleDM.entry:patient.resourceSHCPatientGeneralDM11          SHCPatientGeneralDM.nameHumanName11   @@ -85,4 +85,4 @@ - \ No newline at end of file + diff --git a/input/pagecontent/testing.xml b/input/pagecontent/testing.xml index 10545e15d4..e70689bb60 100644 --- a/input/pagecontent/testing.xml +++ b/input/pagecontent/testing.xml @@ -34,7 +34,7 @@ diff --git a/input/pagecontent/transactions.xml b/input/pagecontent/transactions.xml index 2f418e4d1b..df196641ac 100644 --- a/input/pagecontent/transactions.xml +++ b/input/pagecontent/transactions.xml @@ -22,7 +22,7 @@
Message Semantics Request

- The message semantics for the Register Health Certificate transaction utilizes a DDCC Submit Health Event Request which is a batch Bundle of Parameters for the Generate Health Certificate Operation which includes DDCC Questionnaire Response resources for the request message. The specific DDCC Questionnaire Response resource is determined by the health event that is the subject of the transaction. + The message semantics for the Register Health Certificate transaction utilizes a DDCC Submit Health Event Request which is a batch Bundle of Parameters for the Generate Health Certificate Operation which includes DDCC Questionnaire Response resources for the request message. The specific DDCC Questionnaire Response resource is determined by the health event that is the subject of the transaction.

Message Semantics Response
@@ -230,7 +230,7 @@

- The Revoke Health Certificate transaction is a Revoke Health Certificate Operation. The client will submit + The Revoke Health Certificate transaction is a Revoke Health Certificate Operation. The client will submit Parameters which include the DDCC ID of the DDCC to be revoked. The response will be a boolean value, indicating whether the revocation succeeded or not.

diff --git a/input/resources/CapabilityStatement-WHO.DDCC.Generator.xml b/input/resources/CapabilityStatement-WHO.DDCC.Generator.xml index a8e0f6639c..e02d1febdd 100644 --- a/input/resources/CapabilityStatement-WHO.DDCC.Generator.xml +++ b/input/resources/CapabilityStatement-WHO.DDCC.Generator.xml @@ -45,7 +45,7 @@ - + diff --git a/input/resources/SHCVaccinationBundleDM-Example-English-From-ddcc-to-shc.json b/input/resources/SHCVaccinationBundleDM-Example-English-From-ddcc-to-shc.json index d501e7cbb8..0def352b83 100644 --- a/input/resources/SHCVaccinationBundleDM-Example-English-From-ddcc-to-shc.json +++ b/input/resources/SHCVaccinationBundleDM-Example-English-From-ddcc-to-shc.json @@ -34,7 +34,7 @@ "occurrenceDateTime": "2021-05-06", "manufacturer": { "identifier": { - "system": "http://smart.who.int/ddcc/CodeSystem/DDCC-Example-Test-CodeSystem", + "system": "http://smart.who.int/ddcc/CodeSystem/DDCCExampleTestCodeSystem", "value": "TEST" } }, diff --git a/input/resources/StructureMap-CertDCCtoCoreDataSet.json b/input/resources/StructureMap-CertDCCtoCoreDataSet.json index bcc9f0de3f..60780265c4 100644 --- a/input/resources/StructureMap-CertDCCtoCoreDataSet.json +++ b/input/resources/StructureMap-CertDCCtoCoreDataSet.json @@ -7,7 +7,7 @@ }, "text": { "status": "generated", - "div": "
map "http://smart.who.int/ddcc/StructureMap/CertDCCtoCoreDataSet" = "CertDCCtoCoreDataSet"\r\n\r\n// Structure map transforming CertDCC logical model to bundle of Core Data Set logical model\r\n\r\nuses "http://smart.who.int/ddcc/StructureDefinition/CertDCC" alias CWTPayload as source\r\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias DDCCBundle as target\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet" alias DDCC as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS" alias DDCCVS as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR" alias DDCCTR as produced\r\n\r\ngroup CertDCCtoCoreDataSet(source src : CWTPayload, target ddccBundle : DDCCBundle) {\r\n  src."-260" as hcert then {\r\n    hcert."1" as dcc then {\r\n      dcc.v as v ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS') as ddcc then {\r\n        v then DCCtoCoreDataSet(dcc, ddcc) "set DDCC";\r\n        v -> ddcc.certificate as certificate then CertDCCtoCoreDataSetCertificate(src, dcc, v, certificate) "set certificate";\r\n        v -> ddcc.vaccination as vaccination then VtoCoreDataSetVS(v, vaccination) "set vaccination";\r\n        v -> outentry.resource = ddcc "set outentry";\r\n      };\r\n      dcc.t as t ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR') as ddcc then {\r\n        t then DCCtoCoreDataSet(dcc, ddcc) "set DDCC";\r\n        t -> ddcc.certificate as certificate then CertDCCtoCoreDataSetCertificate(src, dcc, t, certificate) "set certificate";\r\n        t -> ddcc.test as test then TtoCoreDataSetTR(t, test) "set test";\r\n        t -> outentry.resource = ddcc "set outentry";\r\n      };\r\n    } "eu_DCC_v1";\r\n  } "hcert";\r\n}\r\n\r\ngroup DCCtoCoreDataSet(source dcc, target ddcc : DDCC) {\r\n  dcc.dob as birthDate -> ddcc.birthDate = birthDate "set birthDate";\r\n  dcc.nam as nam then {\r\n    nam.gn as given -> ddcc.name = (given.replaceMatches('$', ' ')) "set given name";\r\n    nam.fn as family ->  ddcc.name as tName,  ddcc.name = append(tName, family) "add family name";\r\n  };\r\n}\r\n\r\ngroup CertDCCtoCoreDataSetCertificate(source src : CWTPayload, source dcc, source g, target certificate) {\r\n  src -> certificate.period = create('Period') as period then CwtToPeriod(src, period) "set period";\r\n  dcc.ver as ver -> certificate.version = ver "set version";\r\n  g.ci as ci ->  certificate.hcid as hcid,  hcid.value = ci "set hcid";\r\n  g.is as is ->  certificate.issuer = create('Reference') as issuer,  issuer.display = is "set issuer";\r\n}\r\n\r\ngroup CwtToPeriod(source src : CWTPayload, target tgt : Period) {\r\n  src."6" as iat ->  append(iat, ' seconds') as epoch,  tgt.start = (@1970-01-01T00:00:00.000+00:00 + epoch.toQuantity()) "set period start";\r\n  src."4" as exp ->  append(exp, ' seconds') as epoch,  tgt.end = (@1970-01-01T00:00:00.000+00:00 + epoch.toQuantity()) "set period end";\r\n}\r\n\r\ngroup VtoCoreDataSetVS(source v, target vaccination) {\r\n  v.tg as tg ->  vaccination.disease as coding,  coding.system = 'http://snomed.info/sct',  coding.code = tg "set target disease";\r\n  v.vp as vp ->  vaccination.vaccine as coding,  coding.system = 'https://ec.europa.eu/health/documents/community-register/html/',  coding.code = vp "set vaccine";\r\n  v.mp as mp then {\r\n    mp ->  vaccination.brand as coding,  coding.system = 'https://id.uvci.eu/valuesets/vaccine-medicinal-product.json',  coding.code = mp "set default brand";\r\n    mp -> c('https://ec.europa.eu/health/documents/community-register/html/', mp) as coded then {\r\n      mp where coded.memberOf('http://smart.who.int/ddcc/ValueSet/vaccine-covid19-euur') -> vaccination.brand = translate(coded, 'http://smart.who.int/ddcc/ConceptMap/vaccine-covid19-euur-to-icd11', 'Coding') "translate COVID19 brand";\r\n    } "coding";\r\n  };\r\n  v.ma as ma ->  vaccination.maholder as coding,  coding.system = 'https://id.uvci.eu/valuesets/vaccine-mah-manf.json',  coding.code = ma "set maholder";\r\n  v.dt as date -> vaccination.date = date "set date";\r\n  v.dn as dose -> vaccination.dose = dose "set dose";\r\n  v.sd as totalDoses -> vaccination.totalDoses = totalDoses "set totalDoses";\r\n  v.co as co ->  vaccination.country as coding,  coding.code = co,  coding.system = 'urn:iso:std:iso:3166' "set country";\r\n}\r\n\r\ngroup TtoCoreDataSetTR(source t, target test) {\r\n  t.tg as tg then {\r\n    tg ->  test.pathogen as coding,  coding.system = 'http://snomed.info/sct',  coding.code = tg "set default pathogen";\r\n    tg -> c('http://snomed.info/sct', tg) as coded then {\r\n      tg where coded.memberOf('http://smart.who.int/ddcc/ValueSet/lab-test-pathogen-covid19-snomed') -> test.pathogen = translate(coded, 'http://smart.who.int/ddcc/ConceptMap/lab-test-pathogen-snomed-to-icd11', 'Coding') "translate COVID19 pathogen";\r\n    } "coding";\r\n  };\r\n  t.tt as tt then {\r\n    tt ->  test.type as coding,  coding.system = 'http://loinc.org',  coding.code = tt "set default type";\r\n    tt -> c('http://loinc.org', tt) as coded then {\r\n      tt where coded.memberOf('http://smart.who.int/ddcc/ValueSet/lab-test-type-covid19-loinc') -> test.type = translate(coded, 'http://smart.who.int/ddcc/ConceptMap/lab-test-type-covid19-loinc-to-icd11', 'Coding') "translate COVID19 type";\r\n    } "coding";\r\n  };\r\n  t.nm as nm ->  test.brand as coding,  coding.system = 'https://id.uvci.eu/valuesets/test-manf.json',  coding.code = nm "set brand";\r\n  t.ma as ma ->  test.manufacturer as coding,  coding.system = 'https://covid-19-diagnostics.jrc.ec.europa.eu/devices',  coding.code = ma "set manufacturer";\r\n  t.sc as date -> test.date = date "set date";\r\n  t.tr as tr then {\r\n    tr ->  test.result as coding,  coding.system = 'http://snomed.info/sct',  coding.code = tr "set default result";\r\n    tr -> c('http://snomed.info/sct', tr) as coded then {\r\n      tr where coded.memberOf('http://smart.who.int/ddcc/ValueSet/lab-test-qual-result-snomed') -> test.result = translate(coded, 'http://smart.who.int/ddcc/ConceptMap/lab-test-qual-result-snomed-to-icd11', 'Coding') "translate COVID19 result";\r\n    } "coding";\r\n  };\r\n  t.tc as tc ->  test.centre as coding,  coding.code = tc "set centre";\r\n  t.co as co ->  test.country as coding,  coding.code = co,  coding.system = 'urn:iso:std:iso:3166' "set country";\r\n}\r\n\r\n
" + "div": "
map "http://smart.who.int/ddcc/StructureMap/CertDCCtoCoreDataSet" = "CertDCCtoCoreDataSet"\r\n\r\n// Structure map transforming CertDCC logical model to bundle of Core Data Set logical model\r\n\r\nuses "http://smart.who.int/ddcc/StructureDefinition/CertDCC" alias CWTPayload as source\r\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias DDCCBundle as target\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet" alias DDCC as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS" alias DDCCVS as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR" alias DDCCTR as produced\r\n\r\ngroup CertDCCtoCoreDataSet(source src : CWTPayload, target ddccBundle : DDCCBundle) {\r\n  src."-260" as hcert then {\r\n    hcert."1" as dcc then {\r\n      dcc.v as v ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS') as ddcc then {\r\n        v then DCCtoCoreDataSet(dcc, ddcc) "set DDCC";\r\n        v -> ddcc.certificate as certificate then CertDCCtoCoreDataSetCertificate(src, dcc, v, certificate) "set certificate";\r\n        v -> ddcc.vaccination as vaccination then VtoCoreDataSetVS(v, vaccination) "set vaccination";\r\n        v -> outentry.resource = ddcc "set outentry";\r\n      };\r\n      dcc.t as t ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR') as ddcc then {\r\n        t then DCCtoCoreDataSet(dcc, ddcc) "set DDCC";\r\n        t -> ddcc.certificate as certificate then CertDCCtoCoreDataSetCertificate(src, dcc, t, certificate) "set certificate";\r\n        t -> ddcc.test as test then TtoCoreDataSetTR(t, test) "set test";\r\n        t -> outentry.resource = ddcc "set outentry";\r\n      };\r\n    } "eu_DCC_v1";\r\n  } "hcert";\r\n}\r\n\r\ngroup DCCtoCoreDataSet(source dcc, target ddcc : DDCC) {\r\n  dcc.dob as birthDate -> ddcc.birthDate = birthDate "set birthDate";\r\n  dcc.nam as nam then {\r\n    nam.gn as given -> ddcc.name = (given.replaceMatches('$', ' ')) "set given name";\r\n    nam.fn as family ->  ddcc.name as tName,  ddcc.name = append(tName, family) "add family name";\r\n  };\r\n}\r\n\r\ngroup CertDCCtoCoreDataSetCertificate(source src : CWTPayload, source dcc, source g, target certificate) {\r\n  src -> certificate.period = create('Period') as period then CwtToPeriod(src, period) "set period";\r\n  dcc.ver as ver -> certificate.version = ver "set version";\r\n  g.ci as ci ->  certificate.hcid as hcid,  hcid.value = ci "set hcid";\r\n  g.is as is ->  certificate.issuer = create('Reference') as issuer,  issuer.display = is "set issuer";\r\n}\r\n\r\ngroup CwtToPeriod(source src : CWTPayload, target tgt : Period) {\r\n  src."6" as iat ->  append(iat, ' seconds') as epoch,  tgt.start = (@1970-01-01T00:00:00.000+00:00 + epoch.toQuantity()) "set period start";\r\n  src."4" as exp ->  append(exp, ' seconds') as epoch,  tgt.end = (@1970-01-01T00:00:00.000+00:00 + epoch.toQuantity()) "set period end";\r\n}\r\n\r\ngroup VtoCoreDataSetVS(source v, target vaccination) {\r\n  v.tg as tg ->  vaccination.disease as coding,  coding.system = 'http://snomed.info/sct',  coding.code = tg "set target disease";\r\n  v.vp as vp ->  vaccination.vaccine as coding,  coding.system = 'https://ec.europa.eu/health/documents/community-register/html/',  coding.code = vp "set vaccine";\r\n  v.mp as mp then {\r\n    mp ->  vaccination.brand as coding,  coding.system = 'https://id.uvci.eu/valuesets/vaccine-medicinal-product.json',  coding.code = mp "set default brand";\r\n    mp -> c('https://ec.europa.eu/health/documents/community-register/html/', mp) as coded then {\r\n      mp where coded.memberOf('http://smart.who.int/ddcc/ValueSet/vaccine-covid19-euur') -> vaccination.brand = translate(coded, 'http://smart.who.int/ddcc/ConceptMap/vaccine-covid19-euur-to-icd11', 'Coding') "translate COVID19 brand";\r\n    } "coding";\r\n  };\r\n  v.ma as ma ->  vaccination.maholder as coding,  coding.system = 'https://id.uvci.eu/valuesets/vaccine-mah-manf.json',  coding.code = ma "set maholder";\r\n  v.dt as date -> vaccination.date = date "set date";\r\n  v.dn as dose -> vaccination.dose = dose "set dose";\r\n  v.sd as totalDoses -> vaccination.totalDoses = totalDoses "set totalDoses";\r\n  v.co as co ->  vaccination.country as coding,  coding.code = co,  coding.system = 'urn:iso:std:iso:3166' "set country";\r\n}\r\n\r\ngroup TtoCoreDataSetTR(source t, target test) {\r\n  t.tg as tg then {\r\n    tg ->  test.pathogen as coding,  coding.system = 'http://snomed.info/sct',  coding.code = tg "set default pathogen";\r\n    tg -> c('http://snomed.info/sct', tg) as coded then {\r\n      tg where coded.memberOf('http://smart.who.int/ddcc/ValueSet/lab-test-pathogen-covid19-snomed') -> test.pathogen = translate(coded, 'http://smart.who.int/ddcc/ConceptMap/lab-test-pathogen-snomed-to-icd11', 'Coding') "translate COVID19 pathogen";\r\n    } "coding";\r\n  };\r\n  t.tt as tt then {\r\n    tt ->  test.type as coding,  coding.system = 'http://loinc.org',  coding.code = tt "set default type";\r\n    tt -> c('http://loinc.org', tt) as coded then {\r\n      tt where coded.memberOf('http://smart.who.int/ddcc/ValueSet/lab-test-type-covid19-loinc') -> test.type = translate(coded, 'http://smart.who.int/ddcc/ConceptMap/lab-test-type-covid19-loinc-to-icd11', 'Coding') "translate COVID19 type";\r\n    } "coding";\r\n  };\r\n  t.nm as nm ->  test.brand as coding,  coding.system = 'https://id.uvci.eu/valuesets/test-manf.json',  coding.code = nm "set brand";\r\n  t.ma as ma ->  test.manufacturer as coding,  coding.system = 'https://covid-19-diagnostics.jrc.ec.europa.eu/devices',  coding.code = ma "set manufacturer";\r\n  t.sc as date -> test.date = date "set date";\r\n  t.tr as tr then {\r\n    tr ->  test.result as coding,  coding.system = 'http://snomed.info/sct',  coding.code = tr "set default result";\r\n    tr -> c('http://snomed.info/sct', tr) as coded then {\r\n      tr where coded.memberOf('http://smart.who.int/ddcc/ValueSet/lab-test-qual-result-snomed') -> test.result = translate(coded, 'http://smart.who.int/ddcc/ConceptMap/lab-test-qual-result-snomed-to-icd11', 'Coding') "translate COVID19 result";\r\n    } "coding";\r\n  };\r\n  t.tc as tc ->  test.centre as coding,  coding.code = tc "set centre";\r\n  t.co as co ->  test.country as coding,  coding.code = co,  coding.system = 'urn:iso:std:iso:3166' "set country";\r\n}\r\n\r\n
" }, "url": "http://smart.who.int/ddcc/StructureMap/CertDCCtoCoreDataSet", "name": "CertDCCtoCoreDataSet", @@ -25,11 +25,11 @@ "mode": "produced", "alias": "DDCC" }, { - "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS", + "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS", "mode": "produced", "alias": "DDCCVS" }, { - "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR", + "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR", "mode": "produced", "alias": "DDCCTR" } ], @@ -76,7 +76,7 @@ "variable": "ddcc", "transform": "create", "parameter": [ { - "valueString": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS" + "valueString": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS" } ] } ], "rule": [ { @@ -193,7 +193,7 @@ "variable": "ddcc", "transform": "create", "parameter": [ { - "valueString": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR" + "valueString": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR" } ] } ], "rule": [ { diff --git a/input/resources/StructureMap-CertDIVOCtoCoreDataSet.json b/input/resources/StructureMap-CertDIVOCtoCoreDataSet.json index f90bc352e3..1f0acddc02 100644 --- a/input/resources/StructureMap-CertDIVOCtoCoreDataSet.json +++ b/input/resources/StructureMap-CertDIVOCtoCoreDataSet.json @@ -7,7 +7,7 @@ }, "text": { "status": "generated", - "div": "
map "http://smart.who.int/ddcc/StructureMap/CertDIVOCtoCoreDataSet" = "CertDIVOCtoCoreDataSet"\r\n\r\n// Structure map transforming CertDIVOC logical model to bundle of Core Data Set logical model\r\n\r\nuses "http://smart.who.int/ddcc/StructureDefinition/CertDIVOC" alias DIVOC as source\r\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias DDCCBundle as target\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet" alias DDCC as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS" alias DDCCVS as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR" alias DDCCTR as produced\r\n\r\ngroup CertDIVOCtoCoreDataSetBundle(source src : DIVOC, target ddccBundle : DDCCBundle) {\r\n  src.type as type then {\r\n    type where type = 'ProofOfVaccinationCredential' then {\r\n      src.evidence as evidence ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS') as ddcc then {\r\n        src.credentialSubject as credentialSubject then CredentialSubjecttoCoreDataSet(credentialSubject, ddcc) "set patient";\r\n        src -> ddcc.certificate as certificate then CertDIVOCtoCoreDataSetCertificate(src, evidence, certificate) "set certificate";\r\n        evidence -> ddcc.vaccination as vaccination then EvidencetoCoreDataSetVS(evidence, vaccination) "set vaccination";\r\n        evidence -> outentry.resource = ddcc "set outentry";\r\n      };\r\n    } "ProofOfVaccinationCredential";\r\n    type where type = 'ProofOfTestCertificateCredential' then {\r\n      src.evidence as evidence ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR') as ddcc then {\r\n        src.credentialSubject as credentialSubject then CredentialSubjecttoCoreDataSet(credentialSubject, ddcc) "set patient";\r\n        src -> ddcc.certificate as certificate then CertDIVOCtoCoreDataSetCertificate(src, evidence, certificate) "set certificate";\r\n        evidence -> ddcc.test as test then EvidencetoCoreDataSetTR(evidence, test) "set test";\r\n        evidence -> outentry.resource = ddcc "set outentry";\r\n      };\r\n    } "ProofOfTestCertificateCredential";\r\n  };\r\n}\r\n\r\ngroup CredentialSubjecttoCoreDataSet(source credentialSubject, target ddcc : DDCC) {\r\n  credentialSubject.name as name -> ddcc.name = name "set name";\r\n  credentialSubject.dob as birthDate -> ddcc.birthDate = birthDate "set birthDate";\r\n  credentialSubject.id as id ->  create('Identifier') as identifier,  identifier.value = id then {\r\n    id -> ddcc.identifier = identifier "set identifier";\r\n  } "identifier";\r\n}\r\n\r\ngroup CertDIVOCtoCoreDataSetCertificate(source src : DIVOC, source evidence, target certificate) {\r\n  evidence.certificateId as certificateId ->  certificate.hcid as hcid,  hcid.value = certificateId "set hcid";\r\n  src.context as context then {\r\n    context where (context.contains('cowin.gov.in')) -> certificate.version = context "set version";\r\n  };\r\n  evidence -> certificate.period = create('Period') as period then {\r\n    evidence.effectiveStart as effectiveStart -> period.start = effectiveStart "set period start";\r\n    evidence.effectiveUntil as effectiveUntil -> period.end = effectiveUntil "set period end";\r\n  } "period";\r\n  src.issuer as issuer ->  certificate.issuer = create('Reference') as issuer,  issuer.display = issuer "set issuer";\r\n}\r\n\r\ngroup EvidencetoCoreDataSetVS(source evidence, target vaccination) {\r\n  evidence.icd11Code as icd11Code ->  vaccination.vaccine as coding,  coding.system = 'http://id.who.int/icd11/mms',  coding.code = icd11Code "set vaccine";\r\n  evidence.vaccine as vaccine ->  vaccination.brand as coding,  coding.code = vaccine "set brand";\r\n  evidence.manufacturer as manufacturer ->  vaccination.manufacturer as coding,  coding.code = manufacturer "set manufacturer";\r\n  evidence.batch as batch -> vaccination.lot = batch "set lot";\r\n  evidence.date as date -> vaccination.date = date "set date";\r\n  evidence.dose as dose -> vaccination.dose = dose "set dose";\r\n  evidence.totalDoses as totalDoses -> vaccination.totalDoses = totalDoses "set totalDoses";\r\n  evidence.facility as facility then {\r\n    facility.address as address then {\r\n      address.addressCountry as addressCountry ->  vaccination.country as coding,  coding.system = 'urn:iso:std:iso:3166',  coding.code = addressCountry "set country";\r\n    };\r\n    facility.name as name -> vaccination.centre = name "set centre";\r\n  };\r\n  evidence.verifier as verifier then {\r\n    verifier.name as name ->  vaccination.practitioner as practitioner,  practitioner.value = name "set practitioner";\r\n  };\r\n}\r\n\r\ngroup EvidencetoCoreDataSetTR(source evidence, target test) {\r\n  evidence.disease as disease then {\r\n    disease where disease = 'COVID-19' ->  test.pathogen as coding,  coding.system = 'http://id.who.int/icd11/mms',  coding.code = 'XN109' "set COVID-19 pathogen";\r\n    disease where (disease = 'COVID-19').not() ->  test.pathogen as coding,  coding.code = disease "set other pathogen";\r\n  };\r\n  evidence.testType as testType then {\r\n    testType ->  test.type as coding,  coding.code = testType "set default type";\r\n    testType -> c('http://smart.who.int/ddcc/CodeSystem/lab-test-type-divoc', testType) as coded then {\r\n      testType where coded.memberOf('http://smart.who.int/ddcc/ValueSet/lab-test-type-divoc') -> test.type = translate(coded, 'http://smart.who.int/ddcc/ConceptMap/lab-test-type-divoc-to-icd11', 'Coding') "translate DIVOC type";\r\n    } "coding";\r\n  };\r\n  evidence.sampleOrigin as sampleOrigin then {\r\n    sampleOrigin ->  test.origin as coding,  coding.code = sampleOrigin "set default origin";\r\n    sampleOrigin -> c('http://smart.who.int/ddcc/CodeSystem/lab-test-sample-origin-divoc', sampleOrigin) as coded then {\r\n      sampleOrigin where coded.memberOf('http://smart.who.int/ddcc/ValueSet/lab-test-sample-origin-divoc') -> test.origin = translate(coded, 'http://smart.who.int/ddcc/ConceptMap/lab-test-sample-origin-divoc-to-icd11', 'Coding') "translate DIVOC origin";\r\n    } "coding";\r\n  };\r\n  evidence.result as result then {\r\n    result ->  test.result as coding,  coding.code = result "set default result";\r\n    result -> c('http://smart.who.int/ddcc/CodeSystem/lab-test-qual-result-divoc', result) as coded then {\r\n      result where coded.memberOf('http://smart.who.int/ddcc/ValueSet/lab-test-qual-result-divoc') -> test.result = translate(coded, 'http://smart.who.int/ddcc/ConceptMap/lab-test-qual-result-divoc-to-icd11', 'Coding') "translate DIVOC result";\r\n    } "coded";\r\n  };\r\n  evidence.sampleCollectionTimestamp as date -> test.date = date "set date";\r\n  evidence.testName as testName ->  test.brand as coding,  coding.code = testName "set brand";\r\n  evidence.manufacturer as manufacturer ->  test.manufacturer as coding,  coding.code = manufacturer "set manufacturer";\r\n  evidence.facility as facility then {\r\n    facility.address as address then {\r\n      address.addressCountry as addressCountry ->  test.country as coding,  coding.system = 'urn:iso:std:iso:3166',  coding.code = addressCountry "set country";\r\n    };\r\n    facility.name as name ->  test.centre as coding,  coding.code = name "set centre";\r\n  };\r\n}\r\n\r\n
" + "div": "
map "http://smart.who.int/ddcc/StructureMap/CertDIVOCtoCoreDataSet" = "CertDIVOCtoCoreDataSet"\r\n\r\n// Structure map transforming CertDIVOC logical model to bundle of Core Data Set logical model\r\n\r\nuses "http://smart.who.int/ddcc/StructureDefinition/CertDIVOC" alias DIVOC as source\r\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias DDCCBundle as target\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet" alias DDCC as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS" alias DDCCVS as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR" alias DDCCTR as produced\r\n\r\ngroup CertDIVOCtoCoreDataSetBundle(source src : DIVOC, target ddccBundle : DDCCBundle) {\r\n  src.type as type then {\r\n    type where type = 'ProofOfVaccinationCredential' then {\r\n      src.evidence as evidence ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS') as ddcc then {\r\n        src.credentialSubject as credentialSubject then CredentialSubjecttoCoreDataSet(credentialSubject, ddcc) "set patient";\r\n        src -> ddcc.certificate as certificate then CertDIVOCtoCoreDataSetCertificate(src, evidence, certificate) "set certificate";\r\n        evidence -> ddcc.vaccination as vaccination then EvidencetoCoreDataSetVS(evidence, vaccination) "set vaccination";\r\n        evidence -> outentry.resource = ddcc "set outentry";\r\n      };\r\n    } "ProofOfVaccinationCredential";\r\n    type where type = 'ProofOfTestCertificateCredential' then {\r\n      src.evidence as evidence ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR') as ddcc then {\r\n        src.credentialSubject as credentialSubject then CredentialSubjecttoCoreDataSet(credentialSubject, ddcc) "set patient";\r\n        src -> ddcc.certificate as certificate then CertDIVOCtoCoreDataSetCertificate(src, evidence, certificate) "set certificate";\r\n        evidence -> ddcc.test as test then EvidencetoCoreDataSetTR(evidence, test) "set test";\r\n        evidence -> outentry.resource = ddcc "set outentry";\r\n      };\r\n    } "ProofOfTestCertificateCredential";\r\n  };\r\n}\r\n\r\ngroup CredentialSubjecttoCoreDataSet(source credentialSubject, target ddcc : DDCC) {\r\n  credentialSubject.name as name -> ddcc.name = name "set name";\r\n  credentialSubject.dob as birthDate -> ddcc.birthDate = birthDate "set birthDate";\r\n  credentialSubject.id as id ->  create('Identifier') as identifier,  identifier.value = id then {\r\n    id -> ddcc.identifier = identifier "set identifier";\r\n  } "identifier";\r\n}\r\n\r\ngroup CertDIVOCtoCoreDataSetCertificate(source src : DIVOC, source evidence, target certificate) {\r\n  evidence.certificateId as certificateId ->  certificate.hcid as hcid,  hcid.value = certificateId "set hcid";\r\n  src.context as context then {\r\n    context where (context.contains('cowin.gov.in')) -> certificate.version = context "set version";\r\n  };\r\n  evidence -> certificate.period = create('Period') as period then {\r\n    evidence.effectiveStart as effectiveStart -> period.start = effectiveStart "set period start";\r\n    evidence.effectiveUntil as effectiveUntil -> period.end = effectiveUntil "set period end";\r\n  } "period";\r\n  src.issuer as issuer ->  certificate.issuer = create('Reference') as issuer,  issuer.display = issuer "set issuer";\r\n}\r\n\r\ngroup EvidencetoCoreDataSetVS(source evidence, target vaccination) {\r\n  evidence.icd11Code as icd11Code ->  vaccination.vaccine as coding,  coding.system = 'http://id.who.int/icd11/mms',  coding.code = icd11Code "set vaccine";\r\n  evidence.vaccine as vaccine ->  vaccination.brand as coding,  coding.code = vaccine "set brand";\r\n  evidence.manufacturer as manufacturer ->  vaccination.manufacturer as coding,  coding.code = manufacturer "set manufacturer";\r\n  evidence.batch as batch -> vaccination.lot = batch "set lot";\r\n  evidence.date as date -> vaccination.date = date "set date";\r\n  evidence.dose as dose -> vaccination.dose = dose "set dose";\r\n  evidence.totalDoses as totalDoses -> vaccination.totalDoses = totalDoses "set totalDoses";\r\n  evidence.facility as facility then {\r\n    facility.address as address then {\r\n      address.addressCountry as addressCountry ->  vaccination.country as coding,  coding.system = 'urn:iso:std:iso:3166',  coding.code = addressCountry "set country";\r\n    };\r\n    facility.name as name -> vaccination.centre = name "set centre";\r\n  };\r\n  evidence.verifier as verifier then {\r\n    verifier.name as name ->  vaccination.practitioner as practitioner,  practitioner.value = name "set practitioner";\r\n  };\r\n}\r\n\r\ngroup EvidencetoCoreDataSetTR(source evidence, target test) {\r\n  evidence.disease as disease then {\r\n    disease where disease = 'COVID-19' ->  test.pathogen as coding,  coding.system = 'http://id.who.int/icd11/mms',  coding.code = 'XN109' "set COVID-19 pathogen";\r\n    disease where (disease = 'COVID-19').not() ->  test.pathogen as coding,  coding.code = disease "set other pathogen";\r\n  };\r\n  evidence.testType as testType then {\r\n    testType ->  test.type as coding,  coding.code = testType "set default type";\r\n    testType -> c('http://smart.who.int/ddcc/CodeSystem/lab-test-type-divoc', testType) as coded then {\r\n      testType where coded.memberOf('http://smart.who.int/ddcc/ValueSet/lab-test-type-divoc') -> test.type = translate(coded, 'http://smart.who.int/ddcc/ConceptMap/lab-test-type-divoc-to-icd11', 'Coding') "translate DIVOC type";\r\n    } "coding";\r\n  };\r\n  evidence.sampleOrigin as sampleOrigin then {\r\n    sampleOrigin ->  test.origin as coding,  coding.code = sampleOrigin "set default origin";\r\n    sampleOrigin -> c('http://smart.who.int/ddcc/CodeSystem/lab-test-sample-origin-divoc', sampleOrigin) as coded then {\r\n      sampleOrigin where coded.memberOf('http://smart.who.int/ddcc/ValueSet/lab-test-sample-origin-divoc') -> test.origin = translate(coded, 'http://smart.who.int/ddcc/ConceptMap/lab-test-sample-origin-divoc-to-icd11', 'Coding') "translate DIVOC origin";\r\n    } "coding";\r\n  };\r\n  evidence.result as result then {\r\n    result ->  test.result as coding,  coding.code = result "set default result";\r\n    result -> c('http://smart.who.int/ddcc/CodeSystem/lab-test-qual-result-divoc', result) as coded then {\r\n      result where coded.memberOf('http://smart.who.int/ddcc/ValueSet/lab-test-qual-result-divoc') -> test.result = translate(coded, 'http://smart.who.int/ddcc/ConceptMap/lab-test-qual-result-divoc-to-icd11', 'Coding') "translate DIVOC result";\r\n    } "coded";\r\n  };\r\n  evidence.sampleCollectionTimestamp as date -> test.date = date "set date";\r\n  evidence.testName as testName ->  test.brand as coding,  coding.code = testName "set brand";\r\n  evidence.manufacturer as manufacturer ->  test.manufacturer as coding,  coding.code = manufacturer "set manufacturer";\r\n  evidence.facility as facility then {\r\n    facility.address as address then {\r\n      address.addressCountry as addressCountry ->  test.country as coding,  coding.system = 'urn:iso:std:iso:3166',  coding.code = addressCountry "set country";\r\n    };\r\n    facility.name as name ->  test.centre as coding,  coding.code = name "set centre";\r\n  };\r\n}\r\n\r\n
" }, "url": "http://smart.who.int/ddcc/StructureMap/CertDIVOCtoCoreDataSet", "name": "CertDIVOCtoCoreDataSet", @@ -25,11 +25,11 @@ "mode": "produced", "alias": "DDCC" }, { - "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS", + "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS", "mode": "produced", "alias": "DDCCVS" }, { - "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR", + "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR", "mode": "produced", "alias": "DDCCTR" } ], @@ -75,7 +75,7 @@ "variable": "ddcc", "transform": "create", "parameter": [ { - "valueString": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS" + "valueString": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS" } ] } ], "rule": [ { @@ -196,7 +196,7 @@ "variable": "ddcc", "transform": "create", "parameter": [ { - "valueString": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR" + "valueString": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR" } ] } ], "rule": [ { diff --git a/input/resources/StructureMap-CertICAOtoCoreDataSet.json b/input/resources/StructureMap-CertICAOtoCoreDataSet.json index a9b453bb01..be353e1489 100644 --- a/input/resources/StructureMap-CertICAOtoCoreDataSet.json +++ b/input/resources/StructureMap-CertICAOtoCoreDataSet.json @@ -7,7 +7,7 @@ }, "text": { "status": "generated", - "div": "
map "http://smart.who.int/ddcc/StructureMap/CertICAOtoCoreDataSet" = "CertICAOtoCoreDataSet"\r\n\r\n// Structure map transforming CertICAO logical model to bundle of Core Data Set logical model\r\n\r\nuses "http://smart.who.int/ddcc/StructureDefinition/CertICAOVDS" alias VDS as source\r\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias DDCCBundle as target\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet" alias DDCC as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS" alias DDCCVS as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR" alias DDCCTR as produced\r\n\r\ngroup CertICAOtoCoreDataSet(source src : VDS, target ddccBundle : DDCCBundle) {\r\n  src.data as data then {\r\n    data.msg as msg then {\r\n      msg.ve as ve then {\r\n        ve.vd as vd ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS') as ddcc then {\r\n          data.hdr as hdr -> ddcc.certificate as certificate then VDStoCoreDataSetCertificate(hdr, msg, certificate) "set certificate";\r\n          msg.pid as pid then ExtractPatient(pid, ddcc) "set patient";\r\n          vd -> ddcc.vaccination as vaccination then ExtractVaccine(ve, vd, vaccination) "set vaccination";\r\n          vd -> outentry.resource = ddcc "set outentry";\r\n        };\r\n      };\r\n      msg.tr as tr ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR') as ddcc then {\r\n        data.hdr as hdr -> ddcc.certificate as certificate then VDStoCoreDataSetCertificate(hdr, msg, certificate) "set certificate";\r\n        msg.pid as pid then ExtractPatient(pid, ddcc) "set patient";\r\n        msg.sp as sp then {\r\n          msg.dat as dat -> ddcc.test as test then ExtractTest(sp, dat, tr, test) "set test";\r\n        };\r\n        tr -> outentry.resource = ddcc "set outentry";\r\n      };\r\n    };\r\n  };\r\n}\r\n\r\ngroup VDStoCoreDataSetCertificate(source hdr, source msg, target certificate) {\r\n  hdr.v as v -> certificate.version = v "set version";\r\n  msg.uvci as uvci ->  certificate.hcid as hcid,  hcid.value = uvci "set hcid from uvci";\r\n  msg.utci as utci ->  certificate.hcid as hcid,  hcid.value = utci "set hcid from utci";\r\n  hdr.is as is ->  certificate.issuer = create('Reference') as issuer,  issuer.display = is "set issuer";\r\n}\r\n\r\ngroup ExtractPatient(source pid, target ddcc : DDCC) {\r\n  pid.n as name -> ddcc.name = name "set name";\r\n  pid.dob as birthDate -> ddcc.birthDate = birthDate "set birthDate";\r\n  pid.i as priorityIdentifier ->  ddcc.identifier as identifier,  identifier.value = priorityIdentifier "set priorityIdentifier";\r\n  pid.dn -> ddcc.identifier as identifier then ExtractDocumentTypeNumber(pid, identifier) "set Document Type Number";\r\n}\r\n\r\ngroup ExtractDocumentTypeNumber(source src, target identif : Identifier) {\r\n  src.dn as docNumber -> identif.value = docNumber "set doc number";\r\n  src.dt as docType where (docType = 'P') -> identif.system = 'PPN' "set doc number P";\r\n  // P – Passport (Doc 9303-4)\r\n  src.dt as docType where (docType = 'A') -> identif.system = 'DL' "set doc number A";\r\n  // A – ID Card (Doc 9303-5)\r\n  src.dt as docType where (docType = 'C') -> identif.system = 'DL' "set doc number C";\r\n  // C – ID Card (Doc 9303-5)\r\n  src.dt as docType where (docType = 'I') -> identif.system = 'DL' "set doc number I";\r\n  // I – ID Card Doc 9303-5)\r\n  src.dt as docType where (docType = 'AC') -> identif.system = 'EN' "set doc number AC";\r\n  // AC - Crew Member Certificate (Doc 9303-5)\r\n  src.dt as docType where (docType = 'V') -> identif.system = 'ACSN' "set doc number V";\r\n  // V – Visa (Doc 9303-7)\r\n  src.dt as docType where (docType = 'D') -> identif.system = 'DL' "set doc number D";\r\n}\r\n\r\ngroup ExtractVaccine(source ve, source vd, target vaccination) {\r\n  ve.des as des ->  vaccination.vaccine as coding,  coding.system = 'http://id.who.int/icd11/mms',  coding.code = des "set vaccine";\r\n  // brand code system is "As defined by member state"\r\n  ve.nam as nam ->  vaccination.brand as coding,  coding.code = nam "set brand";\r\n  ve.dis as dis ->  vaccination.disease as coding,  coding.system = 'http://id.who.int/icd11/mms',  coding.code = dis "set target disease";\r\n  vd.dvc as dvc -> vaccination.date = dvc "set date";\r\n  vd.seq as seq -> vaccination.dose = seq "set dose";\r\n  vd.dvn as dvn -> vaccination.nextDose = dvn "set nextDose";\r\n  vd.ctr as ctr -> vaccination.country as coding then {\r\n    ctr then ExtractCountry(ctr, coding) "set country";\r\n  };\r\n  vd.adm as adm -> vaccination.centre = adm "set centre";\r\n  vd.lot as lot -> vaccination.lot = lot "set lot";\r\n}\r\n\r\ngroup ExtractTest(source sp, source dat, source tr, target test) {\r\n  tr ->  test.pathogen as coding,  coding.system = 'http://id.who.int/icd11/mms',  coding.code = 'XN109' "set pathogen";\r\n  tr.tc as tc then {\r\n    tc ->  test.type as coding,  coding.code = tc "set default type";\r\n    tc -> c('http://smart.who.int/ddcc/CodeSystem/lab-test-type-icao', tc) as coded then {\r\n      tc where coded.memberOf('http://smart.who.int/ddcc/ValueSet/lab-test-type-icao') -> test.type = translate(coded, 'http://smart.who.int/ddcc/ConceptMap/lab-test-type-icao-to-icd11', 'Coding') "translate ICAO type";\r\n    } "coding";\r\n  };\r\n  tr.m as m then {\r\n    m ->  test.origin as coding,  coding.code = m "set default origin";\r\n    m -> c('http://smart.who.int/ddcc/CodeSystem/lab-test-sample-origin-icao', m) as coded then {\r\n      m where coded.memberOf('http://smart.who.int/ddcc/ValueSet/lab-test-sample-origin-icao') -> test.origin = translate(coded, 'http://smart.who.int/ddcc/ConceptMap/lab-test-sample-origin-icao-to-icd11', 'Coding') "translate ICAO origin";\r\n    } "coding";\r\n  };\r\n  dat.sc as date -> test.date = date "set date";\r\n  tr.r as r then {\r\n    r ->  test.result as coding,  coding.code = r "set default result";\r\n    r -> c('http://smart.who.int/ddcc/CodeSystem/lab-test-qual-result-icao', r) as coded then {\r\n      r where coded.memberOf('http://smart.who.int/ddcc/ValueSet/lab-test-qual-result-icao') -> test.result = translate(coded, 'http://smart.who.int/ddcc/ConceptMap/lab-test-qual-result-icao-to-icd11', 'Coding') "translate ICAO result";\r\n    } "coding";\r\n  };\r\n  sp.spn as spn ->  test.centre as coding,  coding.code = spn "set centre";\r\n  sp.ctr as ctr -> test.country as coding then {\r\n    ctr then ExtractCountry(ctr, coding) "set country";\r\n  };\r\n}\r\n\r\ngroup ExtractCountry(source country, target coding) {\r\n  // ICAO Doc 9303-1 country codes are a superset of ISO 3166 3 letter codes\r\n  country -> coding.code = country "set default country";\r\n  country -> c('urn:iso:std:iso:3166', country) as coded then {\r\n    country where coded.memberOf('http://hl7.org/fhir/ValueSet/iso3166-1-3') ->  coding.code = country,  coding.system = 'urn:iso:std:iso:3166' "set country with system";\r\n  } "coded";\r\n}\r\n\r\n
" + "div": "
map "http://smart.who.int/ddcc/StructureMap/CertICAOtoCoreDataSet" = "CertICAOtoCoreDataSet"\r\n\r\n// Structure map transforming CertICAO logical model to bundle of Core Data Set logical model\r\n\r\nuses "http://smart.who.int/ddcc/StructureDefinition/CertICAOVDS" alias VDS as source\r\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias DDCCBundle as target\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet" alias DDCC as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS" alias DDCCVS as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR" alias DDCCTR as produced\r\n\r\ngroup CertICAOtoCoreDataSet(source src : VDS, target ddccBundle : DDCCBundle) {\r\n  src.data as data then {\r\n    data.msg as msg then {\r\n      msg.ve as ve then {\r\n        ve.vd as vd ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS') as ddcc then {\r\n          data.hdr as hdr -> ddcc.certificate as certificate then VDStoCoreDataSetCertificate(hdr, msg, certificate) "set certificate";\r\n          msg.pid as pid then ExtractPatient(pid, ddcc) "set patient";\r\n          vd -> ddcc.vaccination as vaccination then ExtractVaccine(ve, vd, vaccination) "set vaccination";\r\n          vd -> outentry.resource = ddcc "set outentry";\r\n        };\r\n      };\r\n      msg.tr as tr ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR') as ddcc then {\r\n        data.hdr as hdr -> ddcc.certificate as certificate then VDStoCoreDataSetCertificate(hdr, msg, certificate) "set certificate";\r\n        msg.pid as pid then ExtractPatient(pid, ddcc) "set patient";\r\n        msg.sp as sp then {\r\n          msg.dat as dat -> ddcc.test as test then ExtractTest(sp, dat, tr, test) "set test";\r\n        };\r\n        tr -> outentry.resource = ddcc "set outentry";\r\n      };\r\n    };\r\n  };\r\n}\r\n\r\ngroup VDStoCoreDataSetCertificate(source hdr, source msg, target certificate) {\r\n  hdr.v as v -> certificate.version = v "set version";\r\n  msg.uvci as uvci ->  certificate.hcid as hcid,  hcid.value = uvci "set hcid from uvci";\r\n  msg.utci as utci ->  certificate.hcid as hcid,  hcid.value = utci "set hcid from utci";\r\n  hdr.is as is ->  certificate.issuer = create('Reference') as issuer,  issuer.display = is "set issuer";\r\n}\r\n\r\ngroup ExtractPatient(source pid, target ddcc : DDCC) {\r\n  pid.n as name -> ddcc.name = name "set name";\r\n  pid.dob as birthDate -> ddcc.birthDate = birthDate "set birthDate";\r\n  pid.i as priorityIdentifier ->  ddcc.identifier as identifier,  identifier.value = priorityIdentifier "set priorityIdentifier";\r\n  pid.dn -> ddcc.identifier as identifier then ExtractDocumentTypeNumber(pid, identifier) "set Document Type Number";\r\n}\r\n\r\ngroup ExtractDocumentTypeNumber(source src, target identif : Identifier) {\r\n  src.dn as docNumber -> identif.value = docNumber "set doc number";\r\n  src.dt as docType where (docType = 'P') -> identif.system = 'PPN' "set doc number P";\r\n  // P – Passport (Doc 9303-4)\r\n  src.dt as docType where (docType = 'A') -> identif.system = 'DL' "set doc number A";\r\n  // A – ID Card (Doc 9303-5)\r\n  src.dt as docType where (docType = 'C') -> identif.system = 'DL' "set doc number C";\r\n  // C – ID Card (Doc 9303-5)\r\n  src.dt as docType where (docType = 'I') -> identif.system = 'DL' "set doc number I";\r\n  // I – ID Card Doc 9303-5)\r\n  src.dt as docType where (docType = 'AC') -> identif.system = 'EN' "set doc number AC";\r\n  // AC - Crew Member Certificate (Doc 9303-5)\r\n  src.dt as docType where (docType = 'V') -> identif.system = 'ACSN' "set doc number V";\r\n  // V – Visa (Doc 9303-7)\r\n  src.dt as docType where (docType = 'D') -> identif.system = 'DL' "set doc number D";\r\n}\r\n\r\ngroup ExtractVaccine(source ve, source vd, target vaccination) {\r\n  ve.des as des ->  vaccination.vaccine as coding,  coding.system = 'http://id.who.int/icd11/mms',  coding.code = des "set vaccine";\r\n  // brand code system is "As defined by member state"\r\n  ve.nam as nam ->  vaccination.brand as coding,  coding.code = nam "set brand";\r\n  ve.dis as dis ->  vaccination.disease as coding,  coding.system = 'http://id.who.int/icd11/mms',  coding.code = dis "set target disease";\r\n  vd.dvc as dvc -> vaccination.date = dvc "set date";\r\n  vd.seq as seq -> vaccination.dose = seq "set dose";\r\n  vd.dvn as dvn -> vaccination.nextDose = dvn "set nextDose";\r\n  vd.ctr as ctr -> vaccination.country as coding then {\r\n    ctr then ExtractCountry(ctr, coding) "set country";\r\n  };\r\n  vd.adm as adm -> vaccination.centre = adm "set centre";\r\n  vd.lot as lot -> vaccination.lot = lot "set lot";\r\n}\r\n\r\ngroup ExtractTest(source sp, source dat, source tr, target test) {\r\n  tr ->  test.pathogen as coding,  coding.system = 'http://id.who.int/icd11/mms',  coding.code = 'XN109' "set pathogen";\r\n  tr.tc as tc then {\r\n    tc ->  test.type as coding,  coding.code = tc "set default type";\r\n    tc -> c('http://smart.who.int/ddcc/CodeSystem/lab-test-type-icao', tc) as coded then {\r\n      tc where coded.memberOf('http://smart.who.int/ddcc/ValueSet/lab-test-type-icao') -> test.type = translate(coded, 'http://smart.who.int/ddcc/ConceptMap/lab-test-type-icao-to-icd11', 'Coding') "translate ICAO type";\r\n    } "coding";\r\n  };\r\n  tr.m as m then {\r\n    m ->  test.origin as coding,  coding.code = m "set default origin";\r\n    m -> c('http://smart.who.int/ddcc/CodeSystem/lab-test-sample-origin-icao', m) as coded then {\r\n      m where coded.memberOf('http://smart.who.int/ddcc/ValueSet/lab-test-sample-origin-icao') -> test.origin = translate(coded, 'http://smart.who.int/ddcc/ConceptMap/lab-test-sample-origin-icao-to-icd11', 'Coding') "translate ICAO origin";\r\n    } "coding";\r\n  };\r\n  dat.sc as date -> test.date = date "set date";\r\n  tr.r as r then {\r\n    r ->  test.result as coding,  coding.code = r "set default result";\r\n    r -> c('http://smart.who.int/ddcc/CodeSystem/lab-test-qual-result-icao', r) as coded then {\r\n      r where coded.memberOf('http://smart.who.int/ddcc/ValueSet/lab-test-qual-result-icao') -> test.result = translate(coded, 'http://smart.who.int/ddcc/ConceptMap/lab-test-qual-result-icao-to-icd11', 'Coding') "translate ICAO result";\r\n    } "coding";\r\n  };\r\n  sp.spn as spn ->  test.centre as coding,  coding.code = spn "set centre";\r\n  sp.ctr as ctr -> test.country as coding then {\r\n    ctr then ExtractCountry(ctr, coding) "set country";\r\n  };\r\n}\r\n\r\ngroup ExtractCountry(source country, target coding) {\r\n  // ICAO Doc 9303-1 country codes are a superset of ISO 3166 3 letter codes\r\n  country -> coding.code = country "set default country";\r\n  country -> c('urn:iso:std:iso:3166', country) as coded then {\r\n    country where coded.memberOf('http://hl7.org/fhir/ValueSet/iso3166-1-3') ->  coding.code = country,  coding.system = 'urn:iso:std:iso:3166' "set country with system";\r\n  } "coded";\r\n}\r\n\r\n
" }, "url": "http://smart.who.int/ddcc/StructureMap/CertICAOtoCoreDataSet", "name": "CertICAOtoCoreDataSet", @@ -25,11 +25,11 @@ "mode": "produced", "alias": "DDCC" }, { - "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS", + "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS", "mode": "produced", "alias": "DDCCVS" }, { - "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR", + "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR", "mode": "produced", "alias": "DDCCTR" } ], @@ -83,7 +83,7 @@ "variable": "ddcc", "transform": "create", "parameter": [ { - "valueString": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS" + "valueString": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS" } ] } ], "rule": [ { @@ -205,7 +205,7 @@ "variable": "ddcc", "transform": "create", "parameter": [ { - "valueString": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR" + "valueString": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR" } ] } ], "rule": [ { diff --git a/input/resources/StructureMap-CertSHCtoCoreDataSet.json b/input/resources/StructureMap-CertSHCtoCoreDataSet.json index 3c139a0f28..d659c76cc6 100644 --- a/input/resources/StructureMap-CertSHCtoCoreDataSet.json +++ b/input/resources/StructureMap-CertSHCtoCoreDataSet.json @@ -7,7 +7,7 @@ }, "text": { "status": "generated", - "div": "
map "http://smart.who.int/ddcc/StructureMap/CertSHCtoCoreDataSet" = "CertSHCtoCoreDataSet"\r\n\r\n// Structure map transforming CertSHC logical model to bundle of Core Data Set logical model\r\n\r\nuses "http://smart.who.int/ddcc/StructureDefinition/CertSHC" alias JWTPayload as source\r\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias DDCCBundle as target\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet" alias DDCC as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS" alias DDCCVS as produced\r\n\r\nimports "http://smart.who.int/ddcc/StructureMap/SHCToCoreDataSetVS"\r\nimports "http://smart.who.int/ddcc/StructureMap/SHCToCoreDataSetTR"\r\n\r\ngroup CertSHCtoCoreDataSetBundle(source src : JWTPayload, target ddccBundle : Bundle) {\r\n  src.vc as vc then {\r\n    vc.credentialSubject as credentialSubject then {\r\n      credentialSubject.fhirBundle as fhirBundle then {\r\n        fhirBundle.entry as patientEntrySHC then {\r\n          patientEntrySHC.resource : Patient first as patient then {\r\n            fhirBundle.entry as entry then {\r\n              entry.resource : Immunization as immunization ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS') as ddcc then {\r\n                immunization then PatientToDDCCVS(patient, ddcc) "set patient";\r\n                immunization -> ddcc.vaccination as vaccination then ImmunizationToDDCC(immunization, vaccination) "set vaccination";\r\n                immunization then CertSHCtoCoreDataSet(src, ddcc) "set ddcc";\r\n                immunization -> outentry.resource = ddcc "set outentry";\r\n              } "immunizations";\r\n              entry.resource : Observation as lab ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR') as ddcc then {\r\n                lab then PatientToDDCCTR(patient, ddcc) "set patient";\r\n                lab -> ddcc.test as test then LabToDDCC(lab, test) "set test";\r\n                lab then CertSHCtoCoreDataSet(src, ddcc) "set ddcc";\r\n                lab -> outentry.resource = ddcc "set outentry";\r\n              } "labs";\r\n            } "entries";\r\n          } "get patient";\r\n        } "find patient";\r\n      };\r\n    };\r\n  };\r\n}\r\n\r\ngroup CertSHCtoCoreDataSet(source src : JWTPayload, target ddcc : DDCC) {\r\n  src -> ddcc.certificate as cert then {\r\n    src.iss -> cert.issuer = create('Reference') as issuer then {\r\n      src.iss as iss -> issuer.reference = iss "set issuer";\r\n    } "issuer";\r\n    src -> cert.period = create('Period') as period then {\r\n      src then JwtToPeriod(src, period) "set period";\r\n    } "period";\r\n  } "certificate";\r\n}\r\n\r\ngroup JwtToPeriod(source src : JWTPayload, target tgt : Period) {\r\n  src.nbf as nbf ->  append(nbf, ' seconds') as epoch,  tgt.start = (@1970-01-01T00:00:00.000+00:00 + epoch.toQuantity()) "set period start to notBefore";\r\n  src.iat as iat ->  append(iat, ' seconds') as epoch,  tgt.start = (@1970-01-01T00:00:00.000+00:00 + epoch.toQuantity()) "set period start to  issuedAt";\r\n  src.exp as exp ->  append(exp, ' seconds') as epoch,  tgt.end = (@1970-01-01T00:00:00.000+00:00 + epoch.toQuantity()) "set period end";\r\n}\r\n\r\n
" + "div": "
map "http://smart.who.int/ddcc/StructureMap/CertSHCtoCoreDataSet" = "CertSHCtoCoreDataSet"\r\n\r\n// Structure map transforming CertSHC logical model to bundle of Core Data Set logical model\r\n\r\nuses "http://smart.who.int/ddcc/StructureDefinition/CertSHC" alias JWTPayload as source\r\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias DDCCBundle as target\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet" alias DDCC as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS" alias DDCCVS as produced\r\n\r\nimports "http://smart.who.int/ddcc/StructureMap/SHCToCoreDataSetVS"\r\nimports "http://smart.who.int/ddcc/StructureMap/SHCToCoreDataSetTR"\r\n\r\ngroup CertSHCtoCoreDataSetBundle(source src : JWTPayload, target ddccBundle : Bundle) {\r\n  src.vc as vc then {\r\n    vc.credentialSubject as credentialSubject then {\r\n      credentialSubject.fhirBundle as fhirBundle then {\r\n        fhirBundle.entry as patientEntrySHC then {\r\n          patientEntrySHC.resource : Patient first as patient then {\r\n            fhirBundle.entry as entry then {\r\n              entry.resource : Immunization as immunization ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS') as ddcc then {\r\n                immunization then PatientToDDCCVS(patient, ddcc) "set patient";\r\n                immunization -> ddcc.vaccination as vaccination then ImmunizationToDDCC(immunization, vaccination) "set vaccination";\r\n                immunization then CertSHCtoCoreDataSet(src, ddcc) "set ddcc";\r\n                immunization -> outentry.resource = ddcc "set outentry";\r\n              } "immunizations";\r\n              entry.resource : Observation as lab ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR') as ddcc then {\r\n                lab then PatientToDDCCTR(patient, ddcc) "set patient";\r\n                lab -> ddcc.test as test then LabToDDCC(lab, test) "set test";\r\n                lab then CertSHCtoCoreDataSet(src, ddcc) "set ddcc";\r\n                lab -> outentry.resource = ddcc "set outentry";\r\n              } "labs";\r\n            } "entries";\r\n          } "get patient";\r\n        } "find patient";\r\n      };\r\n    };\r\n  };\r\n}\r\n\r\ngroup CertSHCtoCoreDataSet(source src : JWTPayload, target ddcc : DDCC) {\r\n  src -> ddcc.certificate as cert then {\r\n    src.iss -> cert.issuer = create('Reference') as issuer then {\r\n      src.iss as iss -> issuer.reference = iss "set issuer";\r\n    } "issuer";\r\n    src -> cert.period = create('Period') as period then {\r\n      src then JwtToPeriod(src, period) "set period";\r\n    } "period";\r\n  } "certificate";\r\n}\r\n\r\ngroup JwtToPeriod(source src : JWTPayload, target tgt : Period) {\r\n  src.nbf as nbf ->  append(nbf, ' seconds') as epoch,  tgt.start = (@1970-01-01T00:00:00.000+00:00 + epoch.toQuantity()) "set period start to notBefore";\r\n  src.iat as iat ->  append(iat, ' seconds') as epoch,  tgt.start = (@1970-01-01T00:00:00.000+00:00 + epoch.toQuantity()) "set period start to  issuedAt";\r\n  src.exp as exp ->  append(exp, ' seconds') as epoch,  tgt.end = (@1970-01-01T00:00:00.000+00:00 + epoch.toQuantity()) "set period end";\r\n}\r\n\r\n
" }, "url": "http://smart.who.int/ddcc/StructureMap/CertSHCtoCoreDataSet", "name": "CertSHCtoCoreDataSet", @@ -25,7 +25,7 @@ "mode": "produced", "alias": "DDCC" }, { - "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS", + "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS", "mode": "produced", "alias": "DDCCVS" } ], @@ -104,7 +104,7 @@ "variable": "ddcc", "transform": "create", "parameter": [ { - "valueString": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS" + "valueString": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS" } ] } ], "rule": [ { @@ -206,7 +206,7 @@ "variable": "ddcc", "transform": "create", "parameter": [ { - "valueString": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR" + "valueString": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR" } ] } ], "rule": [ { diff --git a/input/resources/StructureMap-CoreDataSetLibrary.json b/input/resources/StructureMap-CoreDataSetLibrary.json index 05a8d3d7ee..1e0f170a28 100644 --- a/input/resources/StructureMap-CoreDataSetLibrary.json +++ b/input/resources/StructureMap-CoreDataSetLibrary.json @@ -7,12 +7,12 @@ }, "text": { "status": "generated", - "div": "
map "http://smart.who.int/ddcc/StructureMap/CoreDataSetLibrary" = "CoreDataSetLibrary"\r\n\r\n\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS" alias DDCCVS as source\r\nuses "http://hl7.org/fhir/StructureDefinition/Patient" alias Patient as target\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCPatient" alias DDCCPatient as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCDocumentReferenceQR" alias DDCCDocRefQR as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCComposition" alias DDCCComposition as produced\r\n\r\ngroup DDCCToPatient(source src : DDCCVS, target patient : DDCCPatient, source pid) {\r\n  pid -> patient.id = pid "set id";\r\n  src.name as name -> patient.name as tName then {\r\n    name -> tName.text = name "set name";\r\n  } "set full name";\r\n  src.birthDate as birthDate -> patient.birthDate = birthDate "set birthDate";\r\n  src.identifier as identifier -> patient.identifier = identifier "set identifier";\r\n}\r\n\r\ngroup DDCCToDocumentReference(source src : DDCCVS, target ref : DDCCDocRefQR, source id, source pid) {\r\n  id -> ref.id = id "set id";\r\n  src -> ref.status = 'current' "set status";\r\n  src ->  ref.subject as patient,  patient.reference = append('Patient/', pid) "set patient";\r\n  src -> ref.content as content then {\r\n    src ->  content.attachment as attachment,  attachment.contentType = 'application/json' "set contentType";\r\n    src ->  content.format as format,  format.system = 'http://smart.who.int/ddcc/CodeSystem/DDCC-QR-Format-CodeSystem',  format.code = 'serialized' "set format code";\r\n  } "set serialized content";\r\n  src -> ref.content as content then {\r\n    src ->  content.attachment as attachment,  attachment.contentType = 'image/png' "set contentType";\r\n    src ->  content.format as format,  format.system = 'http://smart.who.int/ddcc/CodeSystem/DDCC-QR-Format-CodeSystem',  format.code = 'image' "set format code";\r\n  } "set image content";\r\n  src -> ref.content as content then {\r\n    src ->  content.attachment as attachment,  attachment.contentType = 'application/pdf' "set contentType";\r\n    src ->  content.format as format,  format.system = 'http://smart.who.int/ddcc/CodeSystem/DDCC-QR-Format-CodeSystem',  format.code = 'pdf' "set format code";\r\n  } "set pdf content";\r\n}\r\n\r\ngroup DDCCToComposition(source src : DDCCVS, target comp : DDCCComposition, source id, source pid) {\r\n  id -> comp.id = id "set id";\r\n  src ->  comp.subject as patient,  patient.reference = append('Patient/', pid) "set patient";\r\n  src ->  comp.type as type,  type.coding as coding then {\r\n    src ->  coding.system = 'http://loinc.org',  coding.code = '82593-5' "set type coding";\r\n  } "set type";\r\n  src.certificate as certificate ->  comp.author as author,  comp.event as event then {\r\n    certificate.period as period -> event.period = period "set event period";\r\n    certificate.issuer as issuer -> author.type = 'Organization' then {\r\n      issuer.identifier as pha -> author.identifier as identifier then {\r\n        pha.value as value -> identifier.value = value "set pha";\r\n      } "set author identifier";\r\n    } "set author ref";\r\n  } "set certificate";\r\n}\r\n\r\n
" + "div": "
map "http://smart.who.int/ddcc/StructureMap/CoreDataSetLibrary" = "CoreDataSetLibrary"\r\n\r\n\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS" alias DDCCVS as source\r\nuses "http://hl7.org/fhir/StructureDefinition/Patient" alias Patient as target\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCPatient" alias DDCCPatient as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCDocumentReferenceQR" alias DDCCDocRefQR as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCComposition" alias DDCCComposition as produced\r\n\r\ngroup DDCCToPatient(source src : DDCCVS, target patient : DDCCPatient, source pid) {\r\n  pid -> patient.id = pid "set id";\r\n  src.name as name -> patient.name as tName then {\r\n    name -> tName.text = name "set name";\r\n  } "set full name";\r\n  src.birthDate as birthDate -> patient.birthDate = birthDate "set birthDate";\r\n  src.identifier as identifier -> patient.identifier = identifier "set identifier";\r\n}\r\n\r\ngroup DDCCToDocumentReference(source src : DDCCVS, target ref : DDCCDocRefQR, source id, source pid) {\r\n  id -> ref.id = id "set id";\r\n  src -> ref.status = 'current' "set status";\r\n  src ->  ref.subject as patient,  patient.reference = append('Patient/', pid) "set patient";\r\n  src -> ref.content as content then {\r\n    src ->  content.attachment as attachment,  attachment.contentType = 'application/json' "set contentType";\r\n    src ->  content.format as format,  format.system = 'http://smart.who.int/ddcc/CodeSystem/DDCCQRFormatCodeSystem',  format.code = 'serialized' "set format code";\r\n  } "set serialized content";\r\n  src -> ref.content as content then {\r\n    src ->  content.attachment as attachment,  attachment.contentType = 'image/png' "set contentType";\r\n    src ->  content.format as format,  format.system = 'http://smart.who.int/ddcc/CodeSystem/DDCCQRFormatCodeSystem',  format.code = 'image' "set format code";\r\n  } "set image content";\r\n  src -> ref.content as content then {\r\n    src ->  content.attachment as attachment,  attachment.contentType = 'application/pdf' "set contentType";\r\n    src ->  content.format as format,  format.system = 'http://smart.who.int/ddcc/CodeSystem/DDCCQRFormatCodeSystem',  format.code = 'pdf' "set format code";\r\n  } "set pdf content";\r\n}\r\n\r\ngroup DDCCToComposition(source src : DDCCVS, target comp : DDCCComposition, source id, source pid) {\r\n  id -> comp.id = id "set id";\r\n  src ->  comp.subject as patient,  patient.reference = append('Patient/', pid) "set patient";\r\n  src ->  comp.type as type,  type.coding as coding then {\r\n    src ->  coding.system = 'http://loinc.org',  coding.code = '82593-5' "set type coding";\r\n  } "set type";\r\n  src.certificate as certificate ->  comp.author as author,  comp.event as event then {\r\n    certificate.period as period -> event.period = period "set event period";\r\n    certificate.issuer as issuer -> author.type = 'Organization' then {\r\n      issuer.identifier as pha -> author.identifier as identifier then {\r\n        pha.value as value -> identifier.value = value "set pha";\r\n      } "set author identifier";\r\n    } "set author ref";\r\n  } "set certificate";\r\n}\r\n\r\n
" }, "url": "http://smart.who.int/ddcc/StructureMap/CoreDataSetLibrary", "name": "CoreDataSetLibrary", "structure": [ { - "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS", + "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS", "mode": "source", "alias": "DDCCVS" }, { @@ -235,7 +235,7 @@ "element": "system", "transform": "copy", "parameter": [ { - "valueString": "http://smart.who.int/ddcc/CodeSystem/DDCC-QR-Format-CodeSystem" + "valueString": "http://smart.who.int/ddcc/CodeSystem/DDCCQRFormatCodeSystem" } ] }, { "context": "format", @@ -293,7 +293,7 @@ "element": "system", "transform": "copy", "parameter": [ { - "valueString": "http://smart.who.int/ddcc/CodeSystem/DDCC-QR-Format-CodeSystem" + "valueString": "http://smart.who.int/ddcc/CodeSystem/DDCCQRFormatCodeSystem" } ] }, { "context": "format", @@ -351,7 +351,7 @@ "element": "system", "transform": "copy", "parameter": [ { - "valueString": "http://smart.who.int/ddcc/CodeSystem/DDCC-QR-Format-CodeSystem" + "valueString": "http://smart.who.int/ddcc/CodeSystem/DDCCQRFormatCodeSystem" } ] }, { "context": "format", diff --git a/input/resources/StructureMap-CoreDataSetVSLibrary.json b/input/resources/StructureMap-CoreDataSetVSLibrary.json index 5cdb07323d..b5ebe2f364 100644 --- a/input/resources/StructureMap-CoreDataSetVSLibrary.json +++ b/input/resources/StructureMap-CoreDataSetVSLibrary.json @@ -7,13 +7,13 @@ }, "text": { "status": "generated", - "div": "
map "http://smart.who.int/ddcc/StructureMap/CoreDataSetVSLibrary" = "CoreDataSetVSLibrary"\r\n\r\n\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS" alias DDCCVS as source\r\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias AddBundle as target\r\nuses "http://hl7.org/fhir/StructureDefinition/Patient" alias Patient as target\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCPatient" alias DDCCPatient as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCDocumentReferenceQR" alias DDCCDocRefQR as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCVSComposition" alias DDCCVSComposition as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCImmunization" alias DDCCImmunization as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCImmunizationRecommendation" alias DDCCImmRec as produced\r\n\r\nimports "http://smart.who.int/ddcc/StructureMap/CoreDataSetLibrary"\r\n\r\ngroup VSToAddBundle(source ddcc : DDCCVS, target bundle : AddBundle) {\r\n  ddcc -> bundle.type = 'transaction' "set bundle type";\r\n  ddcc ->  uuid() as pid,  uuid() as compid,  uuid() as iid,  uuid() as irid,  uuid() as qrwhoid,  uuid() as qrdccid then {\r\n    ddcc ->  bundle.entry as entry,  entry.fullUrl = append('urn:uuid:', pid),  entry.request as request,  request.method = 'PUT',  request.url = append('Patient/', pid),  create('http://smart.who.int/ddcc/StructureDefinition/DDCCPatient') as patient then {\r\n      ddcc then DDCCToPatient(ddcc, patient, pid) "setup patient";\r\n      ddcc -> entry.resource = patient "set patient resource";\r\n    } "create patient resource";\r\n    ddcc ->  bundle.entry as entry,  entry.fullUrl = append('urn:uuid:', compid),  entry.request as request,  request.method = 'PUT',  request.url = append('Composition/', compid),  create('http://smart.who.int/ddcc/StructureDefinition/DDCCVSComposition') as comp then {\r\n      ddcc then DDCCToComposition(ddcc, comp, compid, pid) "setup composition";\r\n      ddcc ->  comp.category as category,  category.coding as coding,  coding.system = 'http://smart.who.int/ddcc/CodeSystem/DDCC-Composition-Category-CodeSystem',  coding.code = 'ddcc-vs' "set category";\r\n      ddcc -> comp.title = 'International Certificate of Vaccination or Prophylaxis' "set title";\r\n      ddcc -> comp.section as section then {\r\n        ddcc ->  section.code as code,  code.coding as coding,  coding.system = 'http://loinc.org',  coding.code = '11369-6' "set code";\r\n        ddcc.certificate as certificate then {\r\n          certificate.issuer as issuer -> section.author = issuer "set author";\r\n        } "set certificate";\r\n        // ddcc.certificate as certificate -> section.author as author then {\r\n        //             certificate.issuer as issuer then {\r\n        //               issuer.identifier as pha -> author.identifier as identifier, author.type = "Organization" then {\r\n        //                 pha.value as value -> identifier.value = value "set pha";\r\n        //               } "set author identifier";\r\n        //             } "set author ref";\r\n        //             \r\n        //           } "set author";\r\n        ddcc ->  section.focus as focus,  focus.reference = append('Immunization/', iid) "set focus";\r\n        ddcc ->  section.entry as entry,  entry.reference = append('Immunization/', iid) "add Immunization entry";\r\n        ddcc ->  section.entry as entry,  entry.reference = append('ImmunizationRecommendation/', irid) "add ImmunizationRecommendation entry";\r\n        ddcc ->  section.entry as entry,  entry.reference = append('DocumentReference/', qrwhoid) "add WHO QR entry";\r\n        ddcc ->  section.entry as entry,  entry.reference = append('DocumentReference/', qrdccid) "add DCC QR entry";\r\n      } "set section";\r\n      ddcc -> entry.resource = comp "set composition resource";\r\n    } "create composition resource";\r\n    ddcc ->  bundle.entry as entry,  entry.fullUrl = append('urn:uuid:', qrwhoid),  entry.request as request,  request.method = 'PUT',  request.url = append('DocumentReference/', qrwhoid),  create('http://smart.who.int/ddcc/StructureDefinition/DDCCDocumentReferenceQR') as qr then {\r\n      ddcc then DDCCToDocumentReference(ddcc, qr, qrwhoid, pid) "setup WHO DocRef";\r\n      ddcc ->  qr.category as category,  category.coding as coding,  coding.system = 'http://smart.who.int/ddcc/CodeSystem/DDCC-QR-Category-Usage-CodeSystem',  coding.code = 'who' "set category";\r\n      ddcc -> qr.description = 'WHO QR code for COVID 19 Vaccine Certificate' "set description";\r\n      ddcc -> entry.resource = qr "set WHO QR";\r\n    } "create WHO QR Doc Ref";\r\n    ddcc ->  bundle.entry as entry,  entry.fullUrl = append('urn:uuid:', qrdccid),  entry.request as request,  request.method = 'PUT',  request.url = append('DocumentReference/', qrdccid),  create('http://smart.who.int/ddcc/StructureDefinition/DDCCDocumentReferenceQR') as qr then {\r\n      ddcc then DDCCToDocumentReference(ddcc, qr, qrdccid, pid) "setup DCC DocRef";\r\n      ddcc ->  qr.category as category,  category.coding as coding,  coding.system = 'http://smart.who.int/ddcc/CodeSystem/DDCC-QR-Category-Usage-CodeSystem',  coding.code = 'dcc' "set category";\r\n      ddcc -> qr.description = 'DCC QR code for COVID 19 Vaccine Certificate' "set description";\r\n      ddcc -> entry.resource = qr "set DCC QR";\r\n    } "create DCC QR Doc Ref";\r\n    ddcc.vaccination first as vaccination ->  bundle.entry as entry,  entry.fullUrl = append('urn:uuid:', iid),  entry.request as request,  request.method = 'PUT',  request.url = append('Immunization/', iid),  create('http://smart.who.int/ddcc/StructureDefinition/DDCCImmunization') as immunization then {\r\n      ddcc.certificate as certificate then DDCCToImmunization(vaccination, immunization, certificate, iid, pid) "setup immunization";\r\n      ddcc -> entry.resource = immunization "set immunization resource";\r\n    } "create immunization resource";\r\n    ddcc.vaccination first as vaccination ->  bundle.entry as entry,  entry.fullUrl = append('urn:uuid:', irid),  entry.request as request,  request.method = 'PUT',  request.url = append('ImmunizationRecommendation/', irid),  create('http://smart.who.int/ddcc/StructureDefinition/DDCCImmunizationRecommendation') as immrec then {\r\n      vaccination then DDCCToImmRec(vaccination, immrec, irid, iid, pid) "setup immunization recommendation";\r\n      ddcc -> entry.resource = immrec "set immunization recommendation resource";\r\n    } "create immunization recommendation resource";\r\n  } "set uuids";\r\n}\r\n\r\ngroup DDCCToImmunization(source src, target immunization : DDCCImmunization, source certificate, source iid, source pid) {\r\n  iid -> immunization.id = iid "set id";\r\n  src.brand as brand -> immunization.extension as ext then {\r\n    brand ->  ext.url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCVaccineBrand',  ext.value = brand "set brand extension values";\r\n  } "set brand extension";\r\n  src.maholder as maholder -> immunization.extension as ext then {\r\n    maholder ->  ext.url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCVaccineMarketAuthorization',  ext.value = maholder "set MA Holder extension values";\r\n  } "set maholder extension";\r\n  src.country as country -> immunization.extension as ext then {\r\n    country.code as code ->  ext.url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCCountryOfVaccination',  ext.value = code "set country extension values";\r\n  } "set country extension";\r\n  src.validFrom as validFrom -> immunization.extension as ext then {\r\n    validFrom ->  ext.url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCVaccineValidFrom',  ext.value = validFrom "set valid from extension values";\r\n  } "set vaccine valid extension";\r\n  src -> immunization.status = 'completed' "set status";\r\n  src.vaccine as vaccine ->  immunization.vaccineCode as vacCode,  vacCode.coding = vaccine "set vaccine";\r\n  src ->  immunization.patient as patient,  patient.reference = append('Patient/', pid) "set patient";\r\n  src.manufacturer as manufacturer ->  immunization.manufacturer as tman,  tman.identifier as ident then {\r\n    manufacturer.system as system -> ident.system = system "set system";\r\n    manufacturer.code as code -> ident.value = code "set value";\r\n  } "set manufacturer identifier";\r\n  src.lot as lot -> immunization.lotNumber = lot "set lot number";\r\n  src.date as date -> immunization.occurrence = date "set occurrence date";\r\n  src.centre as centre -> immunization.location as location then {\r\n    centre -> location.display = centre "set location display";\r\n  } "set location";\r\n  src.practitioner as practitioner -> immunization.performer as performer then {\r\n    practitioner.value as hw -> performer.actor as actor then {\r\n      hw ->  actor.type = 'Practitioner',  actor.identifier as identifier then {\r\n        hw -> identifier.value = hw "set hw identifier";\r\n      } "set actor";\r\n    } "set performer";\r\n  } "set practitioner";\r\n  src -> immunization.protocolApplied as protocol then {\r\n    src -> protocol.authority as authority then {\r\n      certificate.issuer as issuer -> authority.type = 'Organization' then {\r\n        issuer.identifier as pha -> authority.identifier as identifier then {\r\n          pha.value as value -> identifier.value = value "set pha";\r\n        } "set issuer identifier";\r\n      } "set issuer";\r\n    } "set authority";\r\n    src.disease as disease -> protocol.targetDisease as tdisease then {\r\n      disease -> tdisease.coding = disease "set target disease code";\r\n    } "set target disease";\r\n    src.dose as dose -> protocol.doseNumber = dose "set dose number";\r\n    src.totalDoses as totalDoses -> protocol.seriesDoses = totalDoses "set total doses";\r\n  } "set protocolApplied";\r\n}\r\n\r\ngroup DDCCToImmRec(source src, target immrec : DDCCImmunizationRecommendation, source irid, source iid, source pid) {\r\n  src.date as date -> immrec.date = date "set date";\r\n  src ->  immrec.patient as patient,  patient.reference = append('Patient/', pid) "set patient";\r\n  src -> immrec.recommendation as rec then {\r\n    src.vaccine as vaccine -> rec.vaccineCode as vaccineCode then {\r\n      vaccine -> vaccineCode.coding = vaccine "set vaccine code coding";\r\n    } "set vaccine code";\r\n    src.disease as disease -> rec.targetDisease as targetDisease then {\r\n      disease -> targetDisease.coding = disease "set target disease coding";\r\n    } "set target disease";\r\n    src -> rec.forecastStatus as forecast then {\r\n      src -> forecast.coding as coding then {\r\n        src -> coding.system = 'http://terminology.hl7.org/2.1.0/CodeSystem-immunization-recommendation-status.html' "set forecast system";\r\n        src -> coding.code = 'due' "set forecast code";\r\n      } "set forecast status coding";\r\n    } "set forecast status";\r\n    src -> rec.dateCriterion as due_date then {\r\n      src -> due_date.code as code then {\r\n        src -> code.coding as coding then {\r\n          src -> coding.system = 'http://loinc.org' "set due date code system";\r\n          src -> coding.code = '30980-7' "set due date code code";\r\n        } "set due date code coding";\r\n      } "set due date code";\r\n      src.nextDose as nextDose -> due_date.value = nextDose "set due date value";\r\n    } "set date criterion";\r\n    src.dose as dose -> rec.doseNumber = (dose.toInteger() + 1) "set dose number";\r\n    src.totalDoses as totalDoses -> rec.seriesDoses = totalDoses "set total doses";\r\n    src ->  rec.supportingImmunization as imm,  imm.reference = append('Immunization/', iid) "set supporting immunization";\r\n  } "set recommendation";\r\n}\r\n\r\n
" + "div": "
map "http://smart.who.int/ddcc/StructureMap/CoreDataSetVSLibrary" = "CoreDataSetVSLibrary"\r\n\r\n\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS" alias DDCCVS as source\r\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias AddBundle as target\r\nuses "http://hl7.org/fhir/StructureDefinition/Patient" alias Patient as target\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCPatient" alias DDCCPatient as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCDocumentReferenceQR" alias DDCCDocRefQR as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCVSComposition" alias DDCCVSComposition as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCImmunization" alias DDCCImmunization as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCImmunizationRecommendation" alias DDCCImmRec as produced\r\n\r\nimports "http://smart.who.int/ddcc/StructureMap/CoreDataSetLibrary"\r\n\r\ngroup VSToAddBundle(source ddcc : DDCCVS, target bundle : AddBundle) {\r\n  ddcc -> bundle.type = 'transaction' "set bundle type";\r\n  ddcc ->  uuid() as pid,  uuid() as compid,  uuid() as iid,  uuid() as irid,  uuid() as qrwhoid,  uuid() as qrdccid then {\r\n    ddcc ->  bundle.entry as entry,  entry.fullUrl = append('urn:uuid:', pid),  entry.request as request,  request.method = 'PUT',  request.url = append('Patient/', pid),  create('http://smart.who.int/ddcc/StructureDefinition/DDCCPatient') as patient then {\r\n      ddcc then DDCCToPatient(ddcc, patient, pid) "setup patient";\r\n      ddcc -> entry.resource = patient "set patient resource";\r\n    } "create patient resource";\r\n    ddcc ->  bundle.entry as entry,  entry.fullUrl = append('urn:uuid:', compid),  entry.request as request,  request.method = 'PUT',  request.url = append('Composition/', compid),  create('http://smart.who.int/ddcc/StructureDefinition/DDCCVSComposition') as comp then {\r\n      ddcc then DDCCToComposition(ddcc, comp, compid, pid) "setup composition";\r\n      ddcc ->  comp.category as category,  category.coding as coding,  coding.system = 'http://smart.who.int/ddcc/CodeSystem/DDCCCompositionCategoryCodeSystem',  coding.code = 'ddcc-vs' "set category";\r\n      ddcc -> comp.title = 'International Certificate of Vaccination or Prophylaxis' "set title";\r\n      ddcc -> comp.section as section then {\r\n        ddcc ->  section.code as code,  code.coding as coding,  coding.system = 'http://loinc.org',  coding.code = '11369-6' "set code";\r\n        ddcc.certificate as certificate then {\r\n          certificate.issuer as issuer -> section.author = issuer "set author";\r\n        } "set certificate";\r\n        // ddcc.certificate as certificate -> section.author as author then {\r\n        //             certificate.issuer as issuer then {\r\n        //               issuer.identifier as pha -> author.identifier as identifier, author.type = "Organization" then {\r\n        //                 pha.value as value -> identifier.value = value "set pha";\r\n        //               } "set author identifier";\r\n        //             } "set author ref";\r\n        //             \r\n        //           } "set author";\r\n        ddcc ->  section.focus as focus,  focus.reference = append('Immunization/', iid) "set focus";\r\n        ddcc ->  section.entry as entry,  entry.reference = append('Immunization/', iid) "add Immunization entry";\r\n        ddcc ->  section.entry as entry,  entry.reference = append('ImmunizationRecommendation/', irid) "add ImmunizationRecommendation entry";\r\n        ddcc ->  section.entry as entry,  entry.reference = append('DocumentReference/', qrwhoid) "add WHO QR entry";\r\n        ddcc ->  section.entry as entry,  entry.reference = append('DocumentReference/', qrdccid) "add DCC QR entry";\r\n      } "set section";\r\n      ddcc -> entry.resource = comp "set composition resource";\r\n    } "create composition resource";\r\n    ddcc ->  bundle.entry as entry,  entry.fullUrl = append('urn:uuid:', qrwhoid),  entry.request as request,  request.method = 'PUT',  request.url = append('DocumentReference/', qrwhoid),  create('http://smart.who.int/ddcc/StructureDefinition/DDCCDocumentReferenceQR') as qr then {\r\n      ddcc then DDCCToDocumentReference(ddcc, qr, qrwhoid, pid) "setup WHO DocRef";\r\n      ddcc ->  qr.category as category,  category.coding as coding,  coding.system = 'http://smart.who.int/ddcc/CodeSystem/DDCCQRCategoryUsageCodeSystem',  coding.code = 'who' "set category";\r\n      ddcc -> qr.description = 'WHO QR code for COVID 19 Vaccine Certificate' "set description";\r\n      ddcc -> entry.resource = qr "set WHO QR";\r\n    } "create WHO QR Doc Ref";\r\n    ddcc ->  bundle.entry as entry,  entry.fullUrl = append('urn:uuid:', qrdccid),  entry.request as request,  request.method = 'PUT',  request.url = append('DocumentReference/', qrdccid),  create('http://smart.who.int/ddcc/StructureDefinition/DDCCDocumentReferenceQR') as qr then {\r\n      ddcc then DDCCToDocumentReference(ddcc, qr, qrdccid, pid) "setup DCC DocRef";\r\n      ddcc ->  qr.category as category,  category.coding as coding,  coding.system = 'http://smart.who.int/ddcc/CodeSystem/DDCCQRCategoryUsageCodeSystem',  coding.code = 'dcc' "set category";\r\n      ddcc -> qr.description = 'DCC QR code for COVID 19 Vaccine Certificate' "set description";\r\n      ddcc -> entry.resource = qr "set DCC QR";\r\n    } "create DCC QR Doc Ref";\r\n    ddcc.vaccination first as vaccination ->  bundle.entry as entry,  entry.fullUrl = append('urn:uuid:', iid),  entry.request as request,  request.method = 'PUT',  request.url = append('Immunization/', iid),  create('http://smart.who.int/ddcc/StructureDefinition/DDCCImmunization') as immunization then {\r\n      ddcc.certificate as certificate then DDCCToImmunization(vaccination, immunization, certificate, iid, pid) "setup immunization";\r\n      ddcc -> entry.resource = immunization "set immunization resource";\r\n    } "create immunization resource";\r\n    ddcc.vaccination first as vaccination ->  bundle.entry as entry,  entry.fullUrl = append('urn:uuid:', irid),  entry.request as request,  request.method = 'PUT',  request.url = append('ImmunizationRecommendation/', irid),  create('http://smart.who.int/ddcc/StructureDefinition/DDCCImmunizationRecommendation') as immrec then {\r\n      vaccination then DDCCToImmRec(vaccination, immrec, irid, iid, pid) "setup immunization recommendation";\r\n      ddcc -> entry.resource = immrec "set immunization recommendation resource";\r\n    } "create immunization recommendation resource";\r\n  } "set uuids";\r\n}\r\n\r\ngroup DDCCToImmunization(source src, target immunization : DDCCImmunization, source certificate, source iid, source pid) {\r\n  iid -> immunization.id = iid "set id";\r\n  src.brand as brand -> immunization.extension as ext then {\r\n    brand ->  ext.url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCVaccineBrand',  ext.value = brand "set brand extension values";\r\n  } "set brand extension";\r\n  src.maholder as maholder -> immunization.extension as ext then {\r\n    maholder ->  ext.url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCVaccineMarketAuthorization',  ext.value = maholder "set MA Holder extension values";\r\n  } "set maholder extension";\r\n  src.country as country -> immunization.extension as ext then {\r\n    country.code as code ->  ext.url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCCountryOfVaccination',  ext.value = code "set country extension values";\r\n  } "set country extension";\r\n  src.validFrom as validFrom -> immunization.extension as ext then {\r\n    validFrom ->  ext.url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCVaccineValidFrom',  ext.value = validFrom "set valid from extension values";\r\n  } "set vaccine valid extension";\r\n  src -> immunization.status = 'completed' "set status";\r\n  src.vaccine as vaccine ->  immunization.vaccineCode as vacCode,  vacCode.coding = vaccine "set vaccine";\r\n  src ->  immunization.patient as patient,  patient.reference = append('Patient/', pid) "set patient";\r\n  src.manufacturer as manufacturer ->  immunization.manufacturer as tman,  tman.identifier as ident then {\r\n    manufacturer.system as system -> ident.system = system "set system";\r\n    manufacturer.code as code -> ident.value = code "set value";\r\n  } "set manufacturer identifier";\r\n  src.lot as lot -> immunization.lotNumber = lot "set lot number";\r\n  src.date as date -> immunization.occurrence = date "set occurrence date";\r\n  src.centre as centre -> immunization.location as location then {\r\n    centre -> location.display = centre "set location display";\r\n  } "set location";\r\n  src.practitioner as practitioner -> immunization.performer as performer then {\r\n    practitioner.value as hw -> performer.actor as actor then {\r\n      hw ->  actor.type = 'Practitioner',  actor.identifier as identifier then {\r\n        hw -> identifier.value = hw "set hw identifier";\r\n      } "set actor";\r\n    } "set performer";\r\n  } "set practitioner";\r\n  src -> immunization.protocolApplied as protocol then {\r\n    src -> protocol.authority as authority then {\r\n      certificate.issuer as issuer -> authority.type = 'Organization' then {\r\n        issuer.identifier as pha -> authority.identifier as identifier then {\r\n          pha.value as value -> identifier.value = value "set pha";\r\n        } "set issuer identifier";\r\n      } "set issuer";\r\n    } "set authority";\r\n    src.disease as disease -> protocol.targetDisease as tdisease then {\r\n      disease -> tdisease.coding = disease "set target disease code";\r\n    } "set target disease";\r\n    src.dose as dose -> protocol.doseNumber = dose "set dose number";\r\n    src.totalDoses as totalDoses -> protocol.seriesDoses = totalDoses "set total doses";\r\n  } "set protocolApplied";\r\n}\r\n\r\ngroup DDCCToImmRec(source src, target immrec : DDCCImmunizationRecommendation, source irid, source iid, source pid) {\r\n  src.date as date -> immrec.date = date "set date";\r\n  src ->  immrec.patient as patient,  patient.reference = append('Patient/', pid) "set patient";\r\n  src -> immrec.recommendation as rec then {\r\n    src.vaccine as vaccine -> rec.vaccineCode as vaccineCode then {\r\n      vaccine -> vaccineCode.coding = vaccine "set vaccine code coding";\r\n    } "set vaccine code";\r\n    src.disease as disease -> rec.targetDisease as targetDisease then {\r\n      disease -> targetDisease.coding = disease "set target disease coding";\r\n    } "set target disease";\r\n    src -> rec.forecastStatus as forecast then {\r\n      src -> forecast.coding as coding then {\r\n        src -> coding.system = 'http://terminology.hl7.org/2.1.0/CodeSystem-immunization-recommendation-status.html' "set forecast system";\r\n        src -> coding.code = 'due' "set forecast code";\r\n      } "set forecast status coding";\r\n    } "set forecast status";\r\n    src -> rec.dateCriterion as due_date then {\r\n      src -> due_date.code as code then {\r\n        src -> code.coding as coding then {\r\n          src -> coding.system = 'http://loinc.org' "set due date code system";\r\n          src -> coding.code = '30980-7' "set due date code code";\r\n        } "set due date code coding";\r\n      } "set due date code";\r\n      src.nextDose as nextDose -> due_date.value = nextDose "set due date value";\r\n    } "set date criterion";\r\n    src.dose as dose -> rec.doseNumber = (dose.toInteger() + 1) "set dose number";\r\n    src.totalDoses as totalDoses -> rec.seriesDoses = totalDoses "set total doses";\r\n    src ->  rec.supportingImmunization as imm,  imm.reference = append('Immunization/', iid) "set supporting immunization";\r\n  } "set recommendation";\r\n}\r\n\r\n
" }, "url": "http://smart.who.int/ddcc/StructureMap/CoreDataSetVSLibrary", "name": "CoreDataSetVSLibrary", "structure": [ { - "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS", + "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS", "mode": "source", "alias": "DDCCVS" }, @@ -423,7 +423,7 @@ "transform": "copy", "parameter": [ { - "valueString": "http://smart.who.int/ddcc/CodeSystem/DDCC-Composition-Category-CodeSystem" + "valueString": "http://smart.who.int/ddcc/CodeSystem/DDCCCompositionCategoryCodeSystem" } ] }, @@ -883,7 +883,7 @@ "transform": "copy", "parameter": [ { - "valueString": "http://smart.who.int/ddcc/CodeSystem/DDCC-QR-Category-Usage-CodeSystem" + "valueString": "http://smart.who.int/ddcc/CodeSystem/DDCCQRCategoryUsageCodeSystem" } ] }, @@ -1095,7 +1095,7 @@ "transform": "copy", "parameter": [ { - "valueString": "http://smart.who.int/ddcc/CodeSystem/DDCC-QR-Category-Usage-CodeSystem" + "valueString": "http://smart.who.int/ddcc/CodeSystem/DDCCQRCategoryUsageCodeSystem" } ] }, diff --git a/input/resources/StructureMap-CoreDataSetVSToAddBundle.json b/input/resources/StructureMap-CoreDataSetVSToAddBundle.json index a4a2264cd2..71d4699692 100644 --- a/input/resources/StructureMap-CoreDataSetVSToAddBundle.json +++ b/input/resources/StructureMap-CoreDataSetVSToAddBundle.json @@ -7,13 +7,13 @@ }, "text": { "status": "generated", - "div": "
map "http://smart.who.int/ddcc/StructureMap/CoreDataSetVSToAddBundle" = "CoreDataSetVSToAddBundle"\r\n\r\n\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS" alias DDCCVS as source\r\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias AddBundle as target\r\n\r\nimports "http://smart.who.int/ddcc/StructureMap/CoreDataSetVSLibrary"\r\n\r\ngroup CoreDataSetVSToAddBundle(source ddcc : DDCCVS, target bundle : AddBundle) {\r\n  ddcc -> bundle then VSToAddBundle(ddcc, bundle) "setup add bundle";\r\n}\r\n\r\n
" + "div": "
map "http://smart.who.int/ddcc/StructureMap/CoreDataSetVSToAddBundle" = "CoreDataSetVSToAddBundle"\r\n\r\n\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS" alias DDCCVS as source\r\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias AddBundle as target\r\n\r\nimports "http://smart.who.int/ddcc/StructureMap/CoreDataSetVSLibrary"\r\n\r\ngroup CoreDataSetVSToAddBundle(source ddcc : DDCCVS, target bundle : AddBundle) {\r\n  ddcc -> bundle then VSToAddBundle(ddcc, bundle) "setup add bundle";\r\n}\r\n\r\n
" }, "url": "http://smart.who.int/ddcc/StructureMap/CoreDataSetVSToAddBundle", "name": "CoreDataSetVSToAddBundle", "structure": [ { - "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS", + "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS", "mode": "source", "alias": "DDCCVS" }, diff --git a/input/resources/StructureMap-CoreDataSetVSToSHC.json b/input/resources/StructureMap-CoreDataSetVSToSHC.json index 740ae6ac68..b6445db4ae 100644 --- a/input/resources/StructureMap-CoreDataSetVSToSHC.json +++ b/input/resources/StructureMap-CoreDataSetVSToSHC.json @@ -7,12 +7,12 @@ }, "text": { "status": "generated", - "div": "
map "http://smart.who.int/ddcc/StructureMap/CoreDataSetVSToSHC" = "CoreDataSetVSToSHC"\r\n\r\n\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS" alias DDCCVS as source\r\nuses "http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-vaccination-bundle-dm" alias SHCVaccinationBundleDM as target\r\nuses "http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-patient-general-dm" alias SHCPatientDM as produced\r\nuses "http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-vaccination-dm" alias SHCImmunizationDM as produced\r\n\r\ngroup VSToSHC(source ddcc : DDCCVS, target shc : SHCVaccinationBundleDM) {\r\n  ddcc -> shc.type = 'collection' "set bundle type";\r\n  ddcc -> shc then {\r\n    ddcc ->  shc.entry as entry,  entry.fullUrl = 'resource:0',  create('http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-patient-general-dm') as patient then {\r\n      ddcc then DDCCToPatient(ddcc, patient) "setup patient";\r\n      ddcc -> entry.resource = patient "set patient resource";\r\n    } "create patient resource";\r\n    ddcc.vaccination first as vaccination ->  shc.entry as entry,  entry.fullUrl = 'resource:1',  create('http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-vaccination-dm') as immunization then {\r\n      vaccination then DDCCToImmunization(vaccination, immunization) "setup immunization";\r\n      ddcc -> entry.resource = immunization "set immunization resource";\r\n    } "create immunization resource";\r\n  } "set bundle entries";\r\n}\r\n\r\ngroup DDCCToPatient(source src : DDCCVS, target patient : SHCPatientDM) {\r\n  src.name as name -> patient.name as tName then {\r\n    name as content -> tName.text = content "set name";\r\n  } "set full name";\r\n  src.birthDate as birthDate -> patient.birthDate = birthDate "set birthDate";\r\n}\r\n\r\ngroup DDCCToImmunization(source src : DDCCVS, target immunization : SHCImmunizationDM) {\r\n  src -> immunization.status = 'completed' "set status";\r\n  src.vaccine as vaccine ->  immunization.vaccineCode as vaccineCode,  vaccineCode.coding as coding then {\r\n    vaccine.system as system -> coding.system = system "set vaccine code system";\r\n    vaccine.code as code -> coding.code = code "set vaccine code";\r\n  } "set vaccine";\r\n  src ->  immunization.patient as patient,  patient.reference = 'resource:0' "set patient";\r\n  src.maholder as maholder where src.maholder.code.hasValue() ->  immunization.manufacturer as tman,  tman.identifier as ident then {\r\n    maholder.system as system -> ident.system = system "set system";\r\n    maholder.code as code -> ident.value = code "set value";\r\n  } "set maholder";\r\n  src as ddccvs where ddccvs.maholder.code.hasValue().not() then {\r\n    ddccvs.manufacturer as manufacturer ->  immunization.manufacturer as tman,  tman.identifier as ident then {\r\n      manufacturer.system as system -> ident.system = system "set system";\r\n      manufacturer.code as code -> ident.value = code "set value";\r\n    } "set manufacturer";\r\n  } "if maholder code empty";\r\n  src.lot as lot -> immunization.lotNumber = lot "set lot number";\r\n  src.date as date -> immunization.occurrence = date "set occurrence date";\r\n  src.centre as centre ->  immunization.performer as performer,  performer.actor as actor then {\r\n    centre -> actor.display = centre "set actor display";\r\n  } "set performer";\r\n}\r\n\r\n
" + "div": "
map "http://smart.who.int/ddcc/StructureMap/CoreDataSetVSToSHC" = "CoreDataSetVSToSHC"\r\n\r\n\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS" alias DDCCVS as source\r\nuses "http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-vaccination-bundle-dm" alias SHCVaccinationBundleDM as target\r\nuses "http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-patient-general-dm" alias SHCPatientDM as produced\r\nuses "http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-vaccination-dm" alias SHCImmunizationDM as produced\r\n\r\ngroup VSToSHC(source ddcc : DDCCVS, target shc : SHCVaccinationBundleDM) {\r\n  ddcc -> shc.type = 'collection' "set bundle type";\r\n  ddcc -> shc then {\r\n    ddcc ->  shc.entry as entry,  entry.fullUrl = 'resource:0',  create('http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-patient-general-dm') as patient then {\r\n      ddcc then DDCCToPatient(ddcc, patient) "setup patient";\r\n      ddcc -> entry.resource = patient "set patient resource";\r\n    } "create patient resource";\r\n    ddcc.vaccination first as vaccination ->  shc.entry as entry,  entry.fullUrl = 'resource:1',  create('http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-vaccination-dm') as immunization then {\r\n      vaccination then DDCCToImmunization(vaccination, immunization) "setup immunization";\r\n      ddcc -> entry.resource = immunization "set immunization resource";\r\n    } "create immunization resource";\r\n  } "set bundle entries";\r\n}\r\n\r\ngroup DDCCToPatient(source src : DDCCVS, target patient : SHCPatientDM) {\r\n  src.name as name -> patient.name as tName then {\r\n    name as content -> tName.text = content "set name";\r\n  } "set full name";\r\n  src.birthDate as birthDate -> patient.birthDate = birthDate "set birthDate";\r\n}\r\n\r\ngroup DDCCToImmunization(source src : DDCCVS, target immunization : SHCImmunizationDM) {\r\n  src -> immunization.status = 'completed' "set status";\r\n  src.vaccine as vaccine ->  immunization.vaccineCode as vaccineCode,  vaccineCode.coding as coding then {\r\n    vaccine.system as system -> coding.system = system "set vaccine code system";\r\n    vaccine.code as code -> coding.code = code "set vaccine code";\r\n  } "set vaccine";\r\n  src ->  immunization.patient as patient,  patient.reference = 'resource:0' "set patient";\r\n  src.maholder as maholder where src.maholder.code.hasValue() ->  immunization.manufacturer as tman,  tman.identifier as ident then {\r\n    maholder.system as system -> ident.system = system "set system";\r\n    maholder.code as code -> ident.value = code "set value";\r\n  } "set maholder";\r\n  src as ddccvs where ddccvs.maholder.code.hasValue().not() then {\r\n    ddccvs.manufacturer as manufacturer ->  immunization.manufacturer as tman,  tman.identifier as ident then {\r\n      manufacturer.system as system -> ident.system = system "set system";\r\n      manufacturer.code as code -> ident.value = code "set value";\r\n    } "set manufacturer";\r\n  } "if maholder code empty";\r\n  src.lot as lot -> immunization.lotNumber = lot "set lot number";\r\n  src.date as date -> immunization.occurrence = date "set occurrence date";\r\n  src.centre as centre ->  immunization.performer as performer,  performer.actor as actor then {\r\n    centre -> actor.display = centre "set actor display";\r\n  } "set performer";\r\n}\r\n\r\n
" }, "url": "http://smart.who.int/ddcc/StructureMap/CoreDataSetVSToSHC", "name": "CoreDataSetVSToSHC", "structure": [ { - "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS", + "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS", "mode": "source", "alias": "DDCCVS" }, { diff --git a/input/resources/StructureMap-DDCCtoCoredataset.json b/input/resources/StructureMap-DDCCtoCoredataset.json index 2a270725dc..1cc183d69d 100644 --- a/input/resources/StructureMap-DDCCtoCoredataset.json +++ b/input/resources/StructureMap-DDCCtoCoredataset.json @@ -7,7 +7,7 @@ }, "text": { "status": "generated", - "div": "
map "http://smart.who.int/ddcc/StructureMap/DDCCtoCoredataset" = "DDCCtoCoredataset"\r\n\r\n\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCVSComposition" alias DDCC as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCDocument" alias DDCCDocument as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCPatient" alias DDCCPatient as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCVSComposition" alias DDCCVSComposition as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCountryOfVaccination" alias DDCCCountryOfVaccination as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCVaccineBrand" alias DDCCVaccineBrand as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCOrganization" alias DDCCOrganization as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCImmunization" alias DDCCImmunization as source\r\nuses "http://smart.who.int/ddcc/DDCCCoreDataSet.VS.PoV" alias DDCCCoreDataSetPoV as target\r\n\r\ngroup DecodeDDCCtoQR(source ddcc : DDCCDocument, target qr : DDCCCoreDataSetPoV) {\r\n  ddcc.entry as entry then {\r\n    // entry.resource : DDCCPatient as patient\r\n    entry.resource : Patient as patient then DecodePatientToQR(patient, qr) "Patient";\r\n  };\r\n  ddcc.entry as entry then {\r\n    entry.resource : Immunization as immunization log immunization then DecodeImmunizationToQR(ddcc, immunization, qr) "Immunization";\r\n  };\r\n}\r\n\r\ngroup DecodePatientToQR(source patient : DDCCPatient, target qr : DDCCCoreDataSetPoV) {\r\n  patient.birthDate as birthDate -> qr.birthDate = birthDate;\r\n  patient.name as name then {\r\n    name.text as text -> qr.name = text;\r\n  };\r\n}\r\n\r\ngroup DecodeImmunizationToQR(source ddcc : DDCCDocument, source immunization : DDCCImmunization, target qr : DDCCCoreDataSetPoV) {\r\n  immunization -> qr.vaccination = create('BackboneElement') as vacEvent then {\r\n    immunization.protocolApplied as protocol then {\r\n      protocol.doseNumberPositiveInt as dose -> vacEvent.dose = dose;\r\n      protocol.seriesDosesPositiveInt as doseNum -> vacEvent.totalDoses = doseNum;\r\n      protocol.targetDisease as targetDisease then {\r\n        targetDisease.valueCodableConcept as valueCodableConcept -> vacEvent.disease = valueCodableConcept;\r\n      } "Target-Disease";\r\n    };\r\n    immunization.occurrenceDateTime as date -> vacEvent.date = date;\r\n    // TODO: need to populate vacEvent.maholder\r\n    immunization.extension as country where (url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCCountryOfEvent') then {\r\n      country.valueCode as code ->  vacEvent.country = create('Coding') as coding,  coding.code = code,  coding.system = 'http://hl7.org/fhir/ValueSet/iso3166-1-3';\r\n    } "Country";\r\n    // immunization.extension : DDCCBrand as brand\r\n    immunization.extension as brand where (url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCEventBrand') then {\r\n      brand.valueCoding as valueCoding -> vacEvent.brand = valueCoding;\r\n    } "Vaccine-Brand";\r\n    immunization.vaccineCode as vaccineCode then {\r\n      vaccineCode.coding as coding -> vacEvent.vaccine = coding;\r\n    } "Vaccine-Code";\r\n    ddcc.entry as entry then {\r\n      // entry.resource : DDCCOrganization as organization\r\n      entry.resource : Organization as organization then {\r\n        organization.name as name -> vacEvent.centre = name;\r\n      } "Centre-Name";\r\n    } "Vaccination-Centre";\r\n    ddcc.entry as entry then {\r\n      // entry.resource : DDCCVSComposition as composition\r\n      entry.resource : Composition as composition then {\r\n        composition.identifier as identifier -> qr.identifier = identifier;\r\n      } "Vaccination-Event-ID";\r\n    } "Vaccination-Event";\r\n  } "Vaccination";\r\n}\r\n\r\n
" + "div": "
map "http://smart.who.int/ddcc/StructureMap/DDCCtoCoredataset" = "DDCCtoCoredataset"\r\n\r\n\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCVSComposition" alias DDCC as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCDocument" alias DDCCDocument as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCPatient" alias DDCCPatient as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCVSComposition" alias DDCCVSComposition as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCountryOfVaccination" alias DDCCCountryOfVaccination as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCVaccineBrand" alias DDCCVaccineBrand as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCOrganization" alias DDCCOrganization as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCImmunization" alias DDCCImmunization as source\r\nuses "http://smart.who.int/ddcc/DDCCCoreDataSet-VS-PoV" alias DDCCCoreDataSetPoV as target\r\n\r\ngroup DecodeDDCCtoQR(source ddcc : DDCCDocument, target qr : DDCCCoreDataSetPoV) {\r\n  ddcc.entry as entry then {\r\n    // entry.resource : DDCCPatient as patient\r\n    entry.resource : Patient as patient then DecodePatientToQR(patient, qr) "Patient";\r\n  };\r\n  ddcc.entry as entry then {\r\n    entry.resource : Immunization as immunization log immunization then DecodeImmunizationToQR(ddcc, immunization, qr) "Immunization";\r\n  };\r\n}\r\n\r\ngroup DecodePatientToQR(source patient : DDCCPatient, target qr : DDCCCoreDataSetPoV) {\r\n  patient.birthDate as birthDate -> qr.birthDate = birthDate;\r\n  patient.name as name then {\r\n    name.text as text -> qr.name = text;\r\n  };\r\n}\r\n\r\ngroup DecodeImmunizationToQR(source ddcc : DDCCDocument, source immunization : DDCCImmunization, target qr : DDCCCoreDataSetPoV) {\r\n  immunization -> qr.vaccination = create('BackboneElement') as vacEvent then {\r\n    immunization.protocolApplied as protocol then {\r\n      protocol.doseNumberPositiveInt as dose -> vacEvent.dose = dose;\r\n      protocol.seriesDosesPositiveInt as doseNum -> vacEvent.totalDoses = doseNum;\r\n      protocol.targetDisease as targetDisease then {\r\n        targetDisease.valueCodableConcept as valueCodableConcept -> vacEvent.disease = valueCodableConcept;\r\n      } "Target-Disease";\r\n    };\r\n    immunization.occurrenceDateTime as date -> vacEvent.date = date;\r\n    // TODO: need to populate vacEvent.maholder\r\n    immunization.extension as country where (url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCCountryOfEvent') then {\r\n      country.valueCode as code ->  vacEvent.country = create('Coding') as coding,  coding.code = code,  coding.system = 'http://hl7.org/fhir/ValueSet/iso3166-1-3';\r\n    } "Country";\r\n    // immunization.extension : DDCCBrand as brand\r\n    immunization.extension as brand where (url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCEventBrand') then {\r\n      brand.valueCoding as valueCoding -> vacEvent.brand = valueCoding;\r\n    } "Vaccine-Brand";\r\n    immunization.vaccineCode as vaccineCode then {\r\n      vaccineCode.coding as coding -> vacEvent.vaccine = coding;\r\n    } "Vaccine-Code";\r\n    ddcc.entry as entry then {\r\n      // entry.resource : DDCCOrganization as organization\r\n      entry.resource : Organization as organization then {\r\n        organization.name as name -> vacEvent.centre = name;\r\n      } "Centre-Name";\r\n    } "Vaccination-Centre";\r\n    ddcc.entry as entry then {\r\n      // entry.resource : DDCCVSComposition as composition\r\n      entry.resource : Composition as composition then {\r\n        composition.identifier as identifier -> qr.identifier = identifier;\r\n      } "Vaccination-Event-ID";\r\n    } "Vaccination-Event";\r\n  } "Vaccination";\r\n}\r\n\r\n
" }, "url": "http://smart.who.int/ddcc/StructureMap/DDCCtoCoredataset", "name": "DDCCtoCoredataset", @@ -44,7 +44,7 @@ "mode": "source", "alias": "DDCCImmunization" }, { - "url": "http://smart.who.int/ddcc/DDCCCoreDataSet.VS.PoV", + "url": "http://smart.who.int/ddcc/DDCCCoreDataSet-VS-PoV", "mode": "target", "alias": "DDCCCoreDataSetPoV" } ], diff --git a/input/resources/StructureMap-IPSToCoreDataSetVS.json b/input/resources/StructureMap-IPSToCoreDataSetVS.json index d082ed00e6..50f12506b8 100644 --- a/input/resources/StructureMap-IPSToCoreDataSetVS.json +++ b/input/resources/StructureMap-IPSToCoreDataSetVS.json @@ -3,7 +3,7 @@ "id": "IPSToCoreDataSetVS", "text": { "status": "generated", - "div": "
map "http://smart.who.int/ddcc/StructureMap/IPSToCoreDataSetVS" = "IPSToCoreDataSetVS"\r\n\r\n\r\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias IPS as source\r\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias DDCCBundle as target\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS.PoV" alias DDCC as produced\r\n\r\ngroup IPSToCoreDataSetVS(source ips : IPS, target ddccBundle : DDCCBundle) {\r\n  ips.id as id -> ddccBundle.id = id "set id";\r\n  ips.entry first as compentry then {\r\n    compentry.resource : Composition as composition then {\r\n      composition.subject as subject then {\r\n        subject.reference as patientid then {\r\n          ips.entry as findpatient where resource.is(Patient) and (resource.id = patientid.replaceMatches('.*Patient/(?<id>[A-Za-z0-9\\\\-\\\\.]{1,64})$', '${id}')) then {\r\n            findpatient.resource as patient then {\r\n              ips.entry as entry then {\r\n                entry.resource : Immunization as immunization where vaccineCode.memberOf('http://smart.who.int/ddcc/ValueSet/who-ddcc-allowed-vaccines-covid-19') ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS.PoV') as ddcc then {\r\n                  immunization then PatientToDDCC(patient, ddcc) "set patient info";\r\n                  immunization -> ddcc.vaccination as vaccination then ImmunizationToVaccination(immunization, vaccination) "set vaccination";\r\n                  immunization -> ddcc.certificate as certificate then IPSToCertificate(composition, certificate, immunization) "set certificate";\r\n                  immunization -> outentry.resource = ddcc "set outentry";\r\n                } "immunizations";\r\n              } "entries";\r\n            } "get patient";\r\n          } "find patient";\r\n        } "get subject reference";\r\n      } "get subject";\r\n    } "get composition";\r\n  } "get first entry";\r\n}\r\n\r\ngroup ImmunizationToVaccination(source immunization, target vaccination) {\r\n  immunization.vaccineCode as vaccine then {\r\n    vaccine.coding as coding where memberOf('http://smart.who.int/ddcc/ValueSet/who-ddcc-vaccines-covid-19') then {\r\n      coding -> vaccination.vaccine = coding "set coding";\r\n    } "copy vaccine";\r\n    vaccine.coding as coding where memberOf('http://smart.who.int/ddcc/ValueSet/who-ddcc-vaccines-covid-19').not() then {\r\n      coding -> vaccination.vaccine = translate(coding, 'who-ddcc-map-cvx-icd11-vaccines', 'Coding') "translate code";\r\n    } "translate vaccine coding";\r\n    vaccine.coding as coding -> vaccination.brand = translate(coding, 'who-ddcc-map-cvx-icd11-brands', 'Coding') "translate brand";\r\n  } "set vaccine";\r\n  immunization -> vaccination.country = c('urn:iso:std:iso:3166', 'USA') "set country";\r\n  immunization.lotNumber as lot -> vaccination.lot = lot "set lot";\r\n  immunization.occurrence as occurrence -> vaccination.date = occurrence "set date";\r\n  immunization.manufacturer as manufacturer then {\r\n    manufacturer.identifier as identifier -> vaccination.manufacturer as vMan then {\r\n      identifier.system as system -> vMan.system = system "set manufacturer system";\r\n      identifier.value as value -> vMan.code = value "set manufactutuer code";\r\n    } "set manufacturer id";\r\n  } "set manufacturer";\r\n}\r\n\r\ngroup IPSToCertificate(source composition, target certificate, source immunization) {\r\n  immunization.id as id ->  certificate.ddccid as ddccid,  ddccid.value = id "set ddccid";\r\n  composition.id as id ->  certificate.hcid as hcid,  hcid.value = id "set hcid";\r\n  composition.author first as author -> certificate.issuer = author "set issuer";\r\n}\r\n\r\ngroup PatientToDDCC(source patient, target ddcc) {\r\n  patient.name as name then NameToText(name, ddcc) "set name";\r\n  patient.birthDate as birthDate -> ddcc.birthDate = birthDate "set birthdate";\r\n  // patient.gender as gender -> ddcc.sex = gender "set sex";\r\n  patient.identifier first as identifier -> ddcc.identifier = identifier "set identifier";\r\n}\r\n\r\ngroup NameToText(source name : HumanName, target ddcc) {\r\n  // annoying because append doesn't work until ddcc.name is set\r\n  name.given first as given -> ddcc.name = (given.replaceMatches('$', ' ')) "set first name";\r\n  // name.given not_first as other -> ddcc.name as tName, ddcc.name = append( tName, other ) "set other names";\r\n  name.given not_first as other ->  ddcc.name as tName,  (other.replaceMatches('$', ' ')) as spaced,  ddcc.name = append(tName, spaced) "set other names";\r\n  name.family as family ->  ddcc.name as tName,  ddcc.name = append(tName, family) "add family name";\r\n  name.text as text -> ddcc.name = text "set full name";\r\n}\r\n\r\n
" + "div": "
map "http://smart.who.int/ddcc/StructureMap/IPSToCoreDataSetVS" = "IPSToCoreDataSetVS"\r\n\r\n\r\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias IPS as source\r\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias DDCCBundle as target\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS-PoV" alias DDCC as produced\r\n\r\ngroup IPSToCoreDataSetVS(source ips : IPS, target ddccBundle : DDCCBundle) {\r\n  ips.id as id -> ddccBundle.id = id "set id";\r\n  ips.entry first as compentry then {\r\n    compentry.resource : Composition as composition then {\r\n      composition.subject as subject then {\r\n        subject.reference as patientid then {\r\n          ips.entry as findpatient where resource.is(Patient) and (resource.id = patientid.replaceMatches('.*Patient/(?<id>[A-Za-z0-9\\\\-\\\\.]{1,64})$', '${id}')) then {\r\n            findpatient.resource as patient then {\r\n              ips.entry as entry then {\r\n                entry.resource : Immunization as immunization where vaccineCode.memberOf('http://smart.who.int/ddcc/ValueSet/who-ddcc-allowed-vaccines-covid-19') ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS-PoV') as ddcc then {\r\n                  immunization then PatientToDDCC(patient, ddcc) "set patient info";\r\n                  immunization -> ddcc.vaccination as vaccination then ImmunizationToVaccination(immunization, vaccination) "set vaccination";\r\n                  immunization -> ddcc.certificate as certificate then IPSToCertificate(composition, certificate, immunization) "set certificate";\r\n                  immunization -> outentry.resource = ddcc "set outentry";\r\n                } "immunizations";\r\n              } "entries";\r\n            } "get patient";\r\n          } "find patient";\r\n        } "get subject reference";\r\n      } "get subject";\r\n    } "get composition";\r\n  } "get first entry";\r\n}\r\n\r\ngroup ImmunizationToVaccination(source immunization, target vaccination) {\r\n  immunization.vaccineCode as vaccine then {\r\n    vaccine.coding as coding where memberOf('http://smart.who.int/ddcc/ValueSet/WHODDCCVaccinesCOVID19') then {\r\n      coding -> vaccination.vaccine = coding "set coding";\r\n    } "copy vaccine";\r\n    vaccine.coding as coding where memberOf('http://smart.who.int/ddcc/ValueSet/WHODDCCVaccinesCOVID19').not() then {\r\n      coding -> vaccination.vaccine = translate(coding, 'who-ddcc-map-cvx-icd11-vaccines', 'Coding') "translate code";\r\n    } "translate vaccine coding";\r\n    vaccine.coding as coding -> vaccination.brand = translate(coding, 'who-ddcc-map-cvx-icd11-brands', 'Coding') "translate brand";\r\n  } "set vaccine";\r\n  immunization -> vaccination.country = c('urn:iso:std:iso:3166', 'USA') "set country";\r\n  immunization.lotNumber as lot -> vaccination.lot = lot "set lot";\r\n  immunization.occurrence as occurrence -> vaccination.date = occurrence "set date";\r\n  immunization.manufacturer as manufacturer then {\r\n    manufacturer.identifier as identifier -> vaccination.manufacturer as vMan then {\r\n      identifier.system as system -> vMan.system = system "set manufacturer system";\r\n      identifier.value as value -> vMan.code = value "set manufactutuer code";\r\n    } "set manufacturer id";\r\n  } "set manufacturer";\r\n}\r\n\r\ngroup IPSToCertificate(source composition, target certificate, source immunization) {\r\n  immunization.id as id ->  certificate.ddccid as ddccid,  ddccid.value = id "set ddccid";\r\n  composition.id as id ->  certificate.hcid as hcid,  hcid.value = id "set hcid";\r\n  composition.author first as author -> certificate.issuer = author "set issuer";\r\n}\r\n\r\ngroup PatientToDDCC(source patient, target ddcc) {\r\n  patient.name as name then NameToText(name, ddcc) "set name";\r\n  patient.birthDate as birthDate -> ddcc.birthDate = birthDate "set birthdate";\r\n  // patient.gender as gender -> ddcc.sex = gender "set sex";\r\n  patient.identifier first as identifier -> ddcc.identifier = identifier "set identifier";\r\n}\r\n\r\ngroup NameToText(source name : HumanName, target ddcc) {\r\n  // annoying because append doesn't work until ddcc.name is set\r\n  name.given first as given -> ddcc.name = (given.replaceMatches('$', ' ')) "set first name";\r\n  // name.given not_first as other -> ddcc.name as tName, ddcc.name = append( tName, other ) "set other names";\r\n  name.given not_first as other ->  ddcc.name as tName,  (other.replaceMatches('$', ' ')) as spaced,  ddcc.name = append(tName, spaced) "set other names";\r\n  name.family as family ->  ddcc.name as tName,  ddcc.name = append(tName, family) "add family name";\r\n  name.text as text -> ddcc.name = text "set full name";\r\n}\r\n\r\n
" }, "url": "http://smart.who.int/ddcc/StructureMap/IPSToCoreDataSetVS", "name": "IPSToCoreDataSetVS", @@ -16,7 +16,7 @@ "mode": "target", "alias": "DDCCBundle" }, { - "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS.PoV", + "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS-PoV", "mode": "produced", "alias": "DDCC" } ], @@ -119,7 +119,7 @@ "variable": "ddcc", "transform": "create", "parameter": [ { - "valueString": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS.PoV" + "valueString": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS-PoV" } ] } ], "rule": [ { @@ -245,7 +245,7 @@ "context": "vaccine", "element": "coding", "variable": "coding", - "condition": "memberOf('http://smart.who.int/ddcc/ValueSet/who-ddcc-vaccines-covid-19')" + "condition": "memberOf('http://smart.who.int/ddcc/ValueSet/WHODDCCVaccinesCOVID19')" } ], "rule": [ { "name": "set coding", @@ -268,7 +268,7 @@ "context": "vaccine", "element": "coding", "variable": "coding", - "condition": "memberOf('http://smart.who.int/ddcc/ValueSet/who-ddcc-vaccines-covid-19').not()" + "condition": "memberOf('http://smart.who.int/ddcc/ValueSet/WHODDCCVaccinesCOVID19').not()" } ], "rule": [ { "name": "translate code", diff --git a/input/resources/StructureMap-QRespToVSCoreDataSet.json b/input/resources/StructureMap-QRespToVSCoreDataSet.json index 6ce8c06044..ce9d32930a 100644 --- a/input/resources/StructureMap-QRespToVSCoreDataSet.json +++ b/input/resources/StructureMap-QRespToVSCoreDataSet.json @@ -7,7 +7,7 @@ }, "text": { "status": "generated", - "div": "
map "http://smart.who.int/ddcc/StructureMap/QRespToVSCoreDataSet" = "QRespToVSCoreDataSet"\r\n\r\n\r\nuses "http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse" alias QResp as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS.CoC" alias DDCC as target\r\n\r\ngroup QRespToCoreDataSet(source qr : QResp, target ddcc : DDCC) {\r\n  qr as src then QRespToHeader(src, ddcc) "set header content";\r\n  qr as src -> ddcc.vaccination as vaccination then QRespToVaccination(src, vaccination) "set vaccination content";\r\n  qr as src -> ddcc.certificate as certificate then QRespToCertificate(src, certificate) "set certificate content";\r\n}\r\n\r\ngroup QRespToHeader(source qr, target ddcc) {\r\n  qr.item as item then {\r\n    item.answer first as answer where item.linkId = 'name' then {\r\n      answer.valueString as content -> ddcc.name = content "set name";\r\n    } "first answser for name";\r\n    item.answer first as answer where item.linkId = 'birthDate' then {\r\n      answer.valueDate as content -> ddcc.birthDate = content "set birthDate";\r\n    } "first answer for birthDate";\r\n    item.answer first as answer where item.linkId = 'identifier' -> ddcc.identifier as identifier then {\r\n      answer.valueString as content -> identifier.value = content "set identifier";\r\n    } "first answer for identifier";\r\n    item.answer first as answer where item.linkId = 'sex' then {\r\n      answer.valueCoding as coding then {\r\n        coding.code as content -> ddcc.sex = content "set sex";\r\n      } "process coding";\r\n    } "first answer for sex";\r\n  } "header items";\r\n}\r\n\r\ngroup QRespToVaccination(source qr, target vaccination) {\r\n  qr.item as item then {\r\n    item.answer first as answer where item.linkId = 'vaccine' then {\r\n      answer.valueCoding as content -> vaccination.vaccine = content "set vaccine";\r\n    } "first answer for vaccine";\r\n    item.answer first as answer where item.linkId = 'brand' then {\r\n      answer.valueCoding as content -> vaccination.brand = content "set brand";\r\n    } "first answer for brand";\r\n    item.answer first as answer where item.linkId = 'manufacturer' then {\r\n      answer.valueCoding as content -> vaccination.manufacturer = content "set manufacturer";\r\n    } "first answer for manufacturer";\r\n    item.answer first as answer where item.linkId = 'ma_holder' then {\r\n      answer.valueCoding as content -> vaccination.maholder = content "set maholder";\r\n    } "first answer for maholder";\r\n    item.answer first as answer where item.linkId = 'lot' then {\r\n      answer.valueString as content -> vaccination.lot = content "set lot";\r\n    } "first answser for lot";\r\n    item.answer first as answer where item.linkId = 'date' then {\r\n      answer.valueDate as content -> vaccination.date = content "set date";\r\n    } "first answer for date";\r\n    item.answer first as answer where item.linkId = 'vaccine_valid' then {\r\n      answer.valueDate as content -> vaccination.validFrom = content "set validFrom";\r\n    } "first answer for validFrom";\r\n    item.answer first as answer where item.linkId = 'dose' then {\r\n      answer.valueInteger as content -> vaccination.dose = content "set dose";\r\n    } "first answer for dose";\r\n    item.answer first as answer where item.linkId = 'total_doses' then {\r\n      answer.valueInteger as content -> vaccination.totalDoses = content "set totalDoses";\r\n    } "first answer for totalDoses";\r\n    item.answer first as answer where item.linkId = 'country' then {\r\n      answer.valueCoding as content -> vaccination.country = content "set country";\r\n    } "first answer for country";\r\n    item.answer first as answer where item.linkId = 'centre' then {\r\n      answer.valueString as content -> vaccination.centre = content "set centre";\r\n    } "first answser for centre";\r\n    item.answer first as answer where item.linkId = 'hw' -> vaccination.practitioner as identifier then {\r\n      answer.valueString as content -> identifier.value = content "set practitioner";\r\n    } "first answser for practitioner";\r\n    item.answer first as answer where item.linkId = 'disease' then {\r\n      answer.valueCoding as content -> vaccination.disease = content "set disease";\r\n    } "first answer for disease";\r\n    item.answer first as answer where item.linkId = 'due_date' then {\r\n      answer.valueDate as content -> vaccination.nextDose = content "set nextDose";\r\n    } "first answer for nextDose";\r\n  } "vaccination items";\r\n}\r\n\r\ngroup QRespToPeriod(source qr, target period) {\r\n  qr.item as item then {\r\n    item.answer first as answer where item.linkId = 'valid_from' then {\r\n      answer.valueDate as content -> period.start = content "set valid_from";\r\n    } "first answer for valid_from";\r\n    item.answer first as answer where item.linkId = 'valid_until' then {\r\n      answer.valueDate as content -> period.end = content "set valid_until";\r\n    } "first answer for valid_until";\r\n  } "vaccination validity items";\r\n}\r\n\r\ngroup QRespToCertificate(source qr, target certificate) {\r\n  qr.item as item then {\r\n    item.answer first as answer where item.linkId = 'pha' -> certificate.issuer as issuer then {\r\n      answer.valueString as content -> issuer.identifier as identifier then {\r\n        content as value -> identifier.value = value "set issuer identifier";\r\n      } "set issuer";\r\n    } "first answser for hcid";\r\n    item.answer first as answer where item.linkId = 'hcid' -> certificate.hcid as hcid then {\r\n      answer.valueString as content ->  hcid.value = content,  certificate.version = 'RC2' "set hcid and version";\r\n    } "first answser for hcid";\r\n  } "certificate items";\r\n  qr as src -> certificate.period as period then QRespToPeriod(src, period) "set vaccination period";\r\n}\r\n\r\n
" + "div": "
map "http://smart.who.int/ddcc/StructureMap/QRespToVSCoreDataSet" = "QRespToVSCoreDataSet"\r\n\r\n\r\nuses "http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse" alias QResp as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS-CoC" alias DDCC as target\r\n\r\ngroup QRespToCoreDataSet(source qr : QResp, target ddcc : DDCC) {\r\n  qr as src then QRespToHeader(src, ddcc) "set header content";\r\n  qr as src -> ddcc.vaccination as vaccination then QRespToVaccination(src, vaccination) "set vaccination content";\r\n  qr as src -> ddcc.certificate as certificate then QRespToCertificate(src, certificate) "set certificate content";\r\n}\r\n\r\ngroup QRespToHeader(source qr, target ddcc) {\r\n  qr.item as item then {\r\n    item.answer first as answer where item.linkId = 'name' then {\r\n      answer.valueString as content -> ddcc.name = content "set name";\r\n    } "first answser for name";\r\n    item.answer first as answer where item.linkId = 'birthDate' then {\r\n      answer.valueDate as content -> ddcc.birthDate = content "set birthDate";\r\n    } "first answer for birthDate";\r\n    item.answer first as answer where item.linkId = 'identifier' -> ddcc.identifier as identifier then {\r\n      answer.valueString as content -> identifier.value = content "set identifier";\r\n    } "first answer for identifier";\r\n    item.answer first as answer where item.linkId = 'sex' then {\r\n      answer.valueCoding as coding then {\r\n        coding.code as content -> ddcc.sex = content "set sex";\r\n      } "process coding";\r\n    } "first answer for sex";\r\n  } "header items";\r\n}\r\n\r\ngroup QRespToVaccination(source qr, target vaccination) {\r\n  qr.item as item then {\r\n    item.answer first as answer where item.linkId = 'vaccine' then {\r\n      answer.valueCoding as content -> vaccination.vaccine = content "set vaccine";\r\n    } "first answer for vaccine";\r\n    item.answer first as answer where item.linkId = 'brand' then {\r\n      answer.valueCoding as content -> vaccination.brand = content "set brand";\r\n    } "first answer for brand";\r\n    item.answer first as answer where item.linkId = 'manufacturer' then {\r\n      answer.valueCoding as content -> vaccination.manufacturer = content "set manufacturer";\r\n    } "first answer for manufacturer";\r\n    item.answer first as answer where item.linkId = 'ma_holder' then {\r\n      answer.valueCoding as content -> vaccination.maholder = content "set maholder";\r\n    } "first answer for maholder";\r\n    item.answer first as answer where item.linkId = 'lot' then {\r\n      answer.valueString as content -> vaccination.lot = content "set lot";\r\n    } "first answser for lot";\r\n    item.answer first as answer where item.linkId = 'date' then {\r\n      answer.valueDate as content -> vaccination.date = content "set date";\r\n    } "first answer for date";\r\n    item.answer first as answer where item.linkId = 'vaccine_valid' then {\r\n      answer.valueDate as content -> vaccination.validFrom = content "set validFrom";\r\n    } "first answer for validFrom";\r\n    item.answer first as answer where item.linkId = 'dose' then {\r\n      answer.valueInteger as content -> vaccination.dose = content "set dose";\r\n    } "first answer for dose";\r\n    item.answer first as answer where item.linkId = 'total_doses' then {\r\n      answer.valueInteger as content -> vaccination.totalDoses = content "set totalDoses";\r\n    } "first answer for totalDoses";\r\n    item.answer first as answer where item.linkId = 'country' then {\r\n      answer.valueCoding as content -> vaccination.country = content "set country";\r\n    } "first answer for country";\r\n    item.answer first as answer where item.linkId = 'centre' then {\r\n      answer.valueString as content -> vaccination.centre = content "set centre";\r\n    } "first answser for centre";\r\n    item.answer first as answer where item.linkId = 'hw' -> vaccination.practitioner as identifier then {\r\n      answer.valueString as content -> identifier.value = content "set practitioner";\r\n    } "first answser for practitioner";\r\n    item.answer first as answer where item.linkId = 'disease' then {\r\n      answer.valueCoding as content -> vaccination.disease = content "set disease";\r\n    } "first answer for disease";\r\n    item.answer first as answer where item.linkId = 'due_date' then {\r\n      answer.valueDate as content -> vaccination.nextDose = content "set nextDose";\r\n    } "first answer for nextDose";\r\n  } "vaccination items";\r\n}\r\n\r\ngroup QRespToPeriod(source qr, target period) {\r\n  qr.item as item then {\r\n    item.answer first as answer where item.linkId = 'valid_from' then {\r\n      answer.valueDate as content -> period.start = content "set valid_from";\r\n    } "first answer for valid_from";\r\n    item.answer first as answer where item.linkId = 'valid_until' then {\r\n      answer.valueDate as content -> period.end = content "set valid_until";\r\n    } "first answer for valid_until";\r\n  } "vaccination validity items";\r\n}\r\n\r\ngroup QRespToCertificate(source qr, target certificate) {\r\n  qr.item as item then {\r\n    item.answer first as answer where item.linkId = 'pha' -> certificate.issuer as issuer then {\r\n      answer.valueString as content -> issuer.identifier as identifier then {\r\n        content as value -> identifier.value = value "set issuer identifier";\r\n      } "set issuer";\r\n    } "first answser for hcid";\r\n    item.answer first as answer where item.linkId = 'hcid' -> certificate.hcid as hcid then {\r\n      answer.valueString as content ->  hcid.value = content,  certificate.version = 'RC2' "set hcid and version";\r\n    } "first answser for hcid";\r\n  } "certificate items";\r\n  qr as src -> certificate.period as period then QRespToPeriod(src, period) "set vaccination period";\r\n}\r\n\r\n
" }, "url": "http://smart.who.int/ddcc/StructureMap/QRespToVSCoreDataSet", "name": "QRespToVSCoreDataSet", @@ -16,7 +16,7 @@ "mode": "source", "alias": "QResp" }, { - "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS.CoC", + "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS-CoC", "mode": "target", "alias": "DDCC" } ], diff --git a/input/resources/StructureMap-ResourcesToCoreDataSet.json b/input/resources/StructureMap-ResourcesToCoreDataSet.json index 2659738cde..181a059bfe 100644 --- a/input/resources/StructureMap-ResourcesToCoreDataSet.json +++ b/input/resources/StructureMap-ResourcesToCoreDataSet.json @@ -7,7 +7,7 @@ }, "text": { "status": "generated", - "div": "
map "http://smart.who.int/ddcc/StructureMap/ResourcesToCoreDataSet" = "ResourcesToCoreDataSet"\r\n\r\n\r\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias Bundle as source\r\nuses "http://hl7.org/fhir/StructureDefinition/HumanName" alias HumanName as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCPatient" alias DDCCPatient as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCImmunization" alias DDCCImmunization as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCImmunizationRecommendation" alias DDCCImmunizationRecommendation as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCComposition" alias DDCCComposition as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS.PoV" alias DDCCPoV as target\r\n\r\ngroup ResourcesToCoreDataSet(source bundle : Bundle, target ddcc : DDCCPoV) {\r\n  bundle ->  ddcc.vaccination as vaccination,  ddcc.certificate as certificate then {\r\n    bundle.link first as link -> certificate.hcid as hcid then {\r\n      // There's got to be a better way to do this\r\n      link.url as url -> hcid.value = (url.replaceMatches('[Uu][Rr][Nn]:[Hh][Cc][Ii][Dd]:', '')) "set hcid value";\r\n    } "set hcid";\r\n    bundle.id as id ->  certificate.ddccid as ddccid,  ddccid.value = id "set ddcc id value";\r\n    bundle.entry as entry then {\r\n      entry.resource : Patient first as patient then PatientToDDCCVS(patient, ddcc) "set patient details";\r\n      entry.resource : Immunization first as immunization then ImmunizationToDDCCVS(immunization, vaccination, certificate) "set immunization";\r\n      entry.resource : ImmunizationRecommendation first as immRec then ImmRecToDDCCVS(immRec, vaccination) "set immunization recommendation";\r\n      entry.resource : Composition first as composition then CompositionToDDCCVS(composition, certificate) "set composition";\r\n    } "set header from patient";\r\n  } "setup ddcc";\r\n}\r\n\r\ngroup CompositionToDDCCVS(source composition : DDCCComposition, target certificate) {\r\n  composition -> certificate.version = 'RC2' "set version";\r\n  composition.event first as event then {\r\n    event.period as period -> certificate.period as tPeriod then {\r\n      period.start as start -> tPeriod.start = start "set period start";\r\n      period.end as end -> tPeriod.end = end "set period end";\r\n    } "set period";\r\n  } "set certificate period";\r\n}\r\n\r\ngroup PatientToDDCCVS(source patient : DDCCPatient, target ddcc : DDCCPoV) {\r\n  patient.name as name then NameToText(name, ddcc) "set name";\r\n  patient.birthDate as bday -> ddcc.birthDate = bday "set birth date";\r\n  patient.id as id ->  ddcc.identifier as identifier,  identifier.value = id "set identifier from id";\r\n  // this will override what was set from id if it exists\r\n  patient.identifier first as sId -> ddcc.identifier as identifier then {\r\n    sId.value as id -> identifier.value = id "set identifier value";\r\n  } "set identifier from identifier";\r\n  patient.gender as gender -> ddcc.sex = gender "set sex";\r\n}\r\n\r\ngroup NameToText(source name : HumanName, target ddcc) {\r\n  // annoying because append doesn't work until ddcc.name is set\r\n  name.given first as given -> ddcc.name = (given.replaceMatches('$', ' ')) "set first name";\r\n  // name.given not_first as other -> ddcc.name as tName, ddcc.name = append( tName, other ) "set other names";\r\n  name.given not_first as other ->  ddcc.name as tName,  (other.replaceMatches('$', ' ')) as spaced,  ddcc.name = append(tName, spaced) "set other names";\r\n  name.family as family ->  ddcc.name as tName,  ddcc.name = append(tName, family) "add family name";\r\n  name.text as text -> ddcc.name = text "set full name";\r\n}\r\n\r\ngroup ImmunizationToDDCCVS(source immunization : DDCCImmunization, target vaccination, target certificate) {\r\n  immunization.vaccineCode as code then {\r\n    code.coding first as coding -> vaccination.vaccine = coding "set vaccine";\r\n  } "set vaccine code";\r\n  immunization.extension as ext then {\r\n    ext first as brand where ext.url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCVaccineBrand' then {\r\n      brand.valueCoding as coding -> vaccination.brand = coding "set brand code";\r\n    } "set brand";\r\n    ext first as maholder where ext.url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCVaccineMarketAuthorization' then {\r\n      maholder.valueCoding as coding -> vaccination.maholder = coding "set maholder code";\r\n    } "set maholder";\r\n    ext first as valid where ext.url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCVaccineValidFrom' then {\r\n      valid.valueDateTime as date -> vaccination.validFrom = date "set validFrom date";\r\n    } "set validFrom";\r\n    ext first as country where ext.url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCCountryOfVaccination' then {\r\n      country.valueCode as code ->  vaccination.country as vCountry,  vCountry.system = 'urn:iso:std:iso:3166',  vCountry.code = code "set country code";\r\n    } "set country";\r\n  } "set extensions";\r\n  immunization.manufacturer as manufacturer then {\r\n    manufacturer.identifier as identifier -> vaccination.manufacturer as vMan then {\r\n      identifier.system as system -> vMan.system = system "set manufacturer system";\r\n      identifier.value as value -> vMan.code = value "set manufactutuer code";\r\n    } "set manufacturer id";\r\n  } "set manufacturer";\r\n  immunization.lotNumber as lot -> vaccination.lot = lot "set lot number";\r\n  immunization.occurrence as date -> vaccination.date = date "set date";\r\n  immunization.protocolApplied first as protocol then {\r\n    protocol.doseNumber as dose -> vaccination.dose = dose "set dose";\r\n    protocol.seriesDoses as totalDoses -> vaccination.totalDoses = totalDoses "set totalDoses";\r\n    protocol.targetDisease first as disease then {\r\n      disease.coding first as coding -> vaccination.disease = coding "set disease coding";\r\n    } "set disease";\r\n    protocol.authority as authority -> certificate.issuer as issuer then {\r\n      authority.reference as reference -> issuer.identifier as identifier then {\r\n        reference -> identifier.value = reference "set reference";\r\n      } "set issuer from reference";\r\n      authority.identifier as identifier -> issuer.identifier = identifier "set issuer identifier";\r\n    } "set issuer";\r\n  } "set protocol applied";\r\n  immunization.location as location then {\r\n    location.reference as reference -> vaccination.centre = reference "set vaccination centre from reference";\r\n    location.display as centre -> vaccination.centre = centre "set vaccination centre";\r\n  } "set vaccination centre location";\r\n  immunization.performer first as performer then {\r\n    performer.actor as actor then {\r\n      actor.identifier as identifier -> vaccination.practitioner = identifier "set practitioner";\r\n    } "set actor";\r\n  } "set performer";\r\n}\r\n\r\ngroup ImmRecToDDCCVS(source immRec : DDCCImmunizationRecommendation, target vaccination) {\r\n  immRec.recommendation as rec then {\r\n    rec.dateCriterion first as due_date then {\r\n      due_date.value as date -> vaccination.nextDose = date "set due date";\r\n    } "get date criterion";\r\n  } "get recommendation";\r\n}\r\n\r\n
" + "div": "
map "http://smart.who.int/ddcc/StructureMap/ResourcesToCoreDataSet" = "ResourcesToCoreDataSet"\r\n\r\n\r\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias Bundle as source\r\nuses "http://hl7.org/fhir/StructureDefinition/HumanName" alias HumanName as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCPatient" alias DDCCPatient as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCImmunization" alias DDCCImmunization as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCImmunizationRecommendation" alias DDCCImmunizationRecommendation as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCComposition" alias DDCCComposition as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS-PoV" alias DDCCPoV as target\r\n\r\ngroup ResourcesToCoreDataSet(source bundle : Bundle, target ddcc : DDCCPoV) {\r\n  bundle ->  ddcc.vaccination as vaccination,  ddcc.certificate as certificate then {\r\n    bundle.link first as link -> certificate.hcid as hcid then {\r\n      // There's got to be a better way to do this\r\n      link.url as url -> hcid.value = (url.replaceMatches('[Uu][Rr][Nn]:[Hh][Cc][Ii][Dd]:', '')) "set hcid value";\r\n    } "set hcid";\r\n    bundle.id as id ->  certificate.ddccid as ddccid,  ddccid.value = id "set ddcc id value";\r\n    bundle.entry as entry then {\r\n      entry.resource : Patient first as patient then PatientToDDCCVS(patient, ddcc) "set patient details";\r\n      entry.resource : Immunization first as immunization then ImmunizationToDDCCVS(immunization, vaccination, certificate) "set immunization";\r\n      entry.resource : ImmunizationRecommendation first as immRec then ImmRecToDDCCVS(immRec, vaccination) "set immunization recommendation";\r\n      entry.resource : Composition first as composition then CompositionToDDCCVS(composition, certificate) "set composition";\r\n    } "set header from patient";\r\n  } "setup ddcc";\r\n}\r\n\r\ngroup CompositionToDDCCVS(source composition : DDCCComposition, target certificate) {\r\n  composition -> certificate.version = 'RC2' "set version";\r\n  composition.event first as event then {\r\n    event.period as period -> certificate.period as tPeriod then {\r\n      period.start as start -> tPeriod.start = start "set period start";\r\n      period.end as end -> tPeriod.end = end "set period end";\r\n    } "set period";\r\n  } "set certificate period";\r\n}\r\n\r\ngroup PatientToDDCCVS(source patient : DDCCPatient, target ddcc : DDCCPoV) {\r\n  patient.name as name then NameToText(name, ddcc) "set name";\r\n  patient.birthDate as bday -> ddcc.birthDate = bday "set birth date";\r\n  patient.id as id ->  ddcc.identifier as identifier,  identifier.value = id "set identifier from id";\r\n  // this will override what was set from id if it exists\r\n  patient.identifier first as sId -> ddcc.identifier as identifier then {\r\n    sId.value as id -> identifier.value = id "set identifier value";\r\n  } "set identifier from identifier";\r\n  patient.gender as gender -> ddcc.sex = gender "set sex";\r\n}\r\n\r\ngroup NameToText(source name : HumanName, target ddcc) {\r\n  // annoying because append doesn't work until ddcc.name is set\r\n  name.given first as given -> ddcc.name = (given.replaceMatches('$', ' ')) "set first name";\r\n  // name.given not_first as other -> ddcc.name as tName, ddcc.name = append( tName, other ) "set other names";\r\n  name.given not_first as other ->  ddcc.name as tName,  (other.replaceMatches('$', ' ')) as spaced,  ddcc.name = append(tName, spaced) "set other names";\r\n  name.family as family ->  ddcc.name as tName,  ddcc.name = append(tName, family) "add family name";\r\n  name.text as text -> ddcc.name = text "set full name";\r\n}\r\n\r\ngroup ImmunizationToDDCCVS(source immunization : DDCCImmunization, target vaccination, target certificate) {\r\n  immunization.vaccineCode as code then {\r\n    code.coding first as coding -> vaccination.vaccine = coding "set vaccine";\r\n  } "set vaccine code";\r\n  immunization.extension as ext then {\r\n    ext first as brand where ext.url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCVaccineBrand' then {\r\n      brand.valueCoding as coding -> vaccination.brand = coding "set brand code";\r\n    } "set brand";\r\n    ext first as maholder where ext.url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCVaccineMarketAuthorization' then {\r\n      maholder.valueCoding as coding -> vaccination.maholder = coding "set maholder code";\r\n    } "set maholder";\r\n    ext first as valid where ext.url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCVaccineValidFrom' then {\r\n      valid.valueDateTime as date -> vaccination.validFrom = date "set validFrom date";\r\n    } "set validFrom";\r\n    ext first as country where ext.url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCCountryOfVaccination' then {\r\n      country.valueCode as code ->  vaccination.country as vCountry,  vCountry.system = 'urn:iso:std:iso:3166',  vCountry.code = code "set country code";\r\n    } "set country";\r\n  } "set extensions";\r\n  immunization.manufacturer as manufacturer then {\r\n    manufacturer.identifier as identifier -> vaccination.manufacturer as vMan then {\r\n      identifier.system as system -> vMan.system = system "set manufacturer system";\r\n      identifier.value as value -> vMan.code = value "set manufactutuer code";\r\n    } "set manufacturer id";\r\n  } "set manufacturer";\r\n  immunization.lotNumber as lot -> vaccination.lot = lot "set lot number";\r\n  immunization.occurrence as date -> vaccination.date = date "set date";\r\n  immunization.protocolApplied first as protocol then {\r\n    protocol.doseNumber as dose -> vaccination.dose = dose "set dose";\r\n    protocol.seriesDoses as totalDoses -> vaccination.totalDoses = totalDoses "set totalDoses";\r\n    protocol.targetDisease first as disease then {\r\n      disease.coding first as coding -> vaccination.disease = coding "set disease coding";\r\n    } "set disease";\r\n    protocol.authority as authority -> certificate.issuer as issuer then {\r\n      authority.reference as reference -> issuer.identifier as identifier then {\r\n        reference -> identifier.value = reference "set reference";\r\n      } "set issuer from reference";\r\n      authority.identifier as identifier -> issuer.identifier = identifier "set issuer identifier";\r\n    } "set issuer";\r\n  } "set protocol applied";\r\n  immunization.location as location then {\r\n    location.reference as reference -> vaccination.centre = reference "set vaccination centre from reference";\r\n    location.display as centre -> vaccination.centre = centre "set vaccination centre";\r\n  } "set vaccination centre location";\r\n  immunization.performer first as performer then {\r\n    performer.actor as actor then {\r\n      actor.identifier as identifier -> vaccination.practitioner = identifier "set practitioner";\r\n    } "set actor";\r\n  } "set performer";\r\n}\r\n\r\ngroup ImmRecToDDCCVS(source immRec : DDCCImmunizationRecommendation, target vaccination) {\r\n  immRec.recommendation as rec then {\r\n    rec.dateCriterion first as due_date then {\r\n      due_date.value as date -> vaccination.nextDose = date "set due date";\r\n    } "get date criterion";\r\n  } "get recommendation";\r\n}\r\n\r\n
" }, "url": "http://smart.who.int/ddcc/StructureMap/ResourcesToCoreDataSet", "name": "ResourcesToCoreDataSet", @@ -36,7 +36,7 @@ "mode": "source", "alias": "DDCCComposition" }, { - "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS.PoV", + "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS-PoV", "mode": "target", "alias": "DDCCPoV" } ], diff --git a/input/resources/StructureMap-ResourcesToVSCoreDataSet.json b/input/resources/StructureMap-ResourcesToVSCoreDataSet.json index 8c6ae18dd4..ea5de0785f 100644 --- a/input/resources/StructureMap-ResourcesToVSCoreDataSet.json +++ b/input/resources/StructureMap-ResourcesToVSCoreDataSet.json @@ -7,7 +7,7 @@ }, "text": { "status": "generated", - "div": "
map "http://smart.who.int/ddcc/StructureMap/ResourcesToVSCoreDataSet" = "ResourcesToVSCoreDataSet"\r\n\r\n\r\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias Bundle as source\r\nuses "http://hl7.org/fhir/StructureDefinition/HumanName" alias HumanName as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCPatient" alias DDCCPatient as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCImmunization" alias DDCCImmunization as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCImmunizationRecommendation" alias DDCCImmunizationRecommendation as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCVSComposition" alias DDCCVSComposition as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS.PoV" alias DDCCPoV as target\r\n\r\ngroup ResourcesToCoreDataSet(source bundle : Bundle, target ddcc : DDCCPoV) {\r\n  bundle ->  ddcc.vaccination as vaccination,  ddcc.certificate as certificate then {\r\n    bundle.link first as link -> certificate.hcid as hcid then {\r\n      // There's got to be a better way to do this\r\n      link.url as url -> hcid.value = (url.replaceMatches('[Uu][Rr][Nn]:[Hh][Cc][Ii][Dd]:', '')) "set hcid value";\r\n    } "set hcid";\r\n    bundle.id as id ->  certificate.ddccid as ddccid,  ddccid.value = id "set ddcc id value";\r\n    bundle.entry as entry then {\r\n      entry.resource : Patient first as patient then PatientToDDCCVS(patient, ddcc) "set patient details";\r\n      entry.resource : Immunization first as immunization then ImmunizationToDDCCVS(immunization, vaccination, certificate) "set immunization";\r\n      entry.resource : ImmunizationRecommendation first as immRec then ImmRecToDDCCVS(immRec, vaccination) "set immunization recommendation";\r\n      entry.resource : Composition first as composition then CompositionToDDCCVS(composition, certificate) "set composition";\r\n    } "set header from patient";\r\n  } "setup ddcc";\r\n}\r\n\r\ngroup CompositionToDDCCVS(source composition : DDCCVSComposition, target certificate) {\r\n  composition -> certificate.version = 'RC2' "set version";\r\n  composition.event first as event then {\r\n    event.period as period -> certificate.period as tPeriod then {\r\n      period.start as start -> tPeriod.start = start "set period start";\r\n      period.end as end -> tPeriod.end = end "set period end";\r\n    } "set period";\r\n  } "set certificate period";\r\n}\r\n\r\ngroup PatientToDDCCVS(source patient : DDCCPatient, target ddcc : DDCCPoV) {\r\n  patient.name as name then NameToText(name, ddcc) "set name";\r\n  patient.birthDate as bday -> ddcc.birthDate = bday "set birth date";\r\n  patient.id as id ->  ddcc.identifier as identifier,  identifier.value = id "set identifier from id";\r\n  // this will override what was set from id if it exists\r\n  patient.identifier first as sId -> ddcc.identifier as identifier then {\r\n    sId.value as id -> identifier.value = id "set identifier value";\r\n  } "set identifier from identifier";\r\n  patient.gender as gender -> ddcc.sex = gender "set sex";\r\n}\r\n\r\ngroup NameToText(source name : HumanName, target ddcc) {\r\n  // annoying because append doesn't work until ddcc.name is set\r\n  name.given first as given -> ddcc.name = (given.replaceMatches('$', ' ')) "set first name";\r\n  // name.given not_first as other -> ddcc.name as tName, ddcc.name = append( tName, other ) "set other names";\r\n  name.given not_first as other ->  ddcc.name as tName,  (other.replaceMatches('$', ' ')) as spaced,  ddcc.name = append(tName, spaced) "set other names";\r\n  name.family as family ->  ddcc.name as tName,  ddcc.name = append(tName, family) "add family name";\r\n  name.text as text -> ddcc.name = text "set full name";\r\n}\r\n\r\ngroup ImmunizationToDDCCVS(source immunization : DDCCImmunization, target vaccination, target certificate) {\r\n  immunization.vaccineCode as code then {\r\n    code.coding first as coding -> vaccination.vaccine = coding "set vaccine";\r\n  } "set vaccine code";\r\n  immunization.extension as ext then {\r\n    ext first as brand where ext.url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCVaccineBrand' then {\r\n      brand.valueCoding as coding -> vaccination.brand = coding "set brand code";\r\n    } "set brand";\r\n    ext first as maholder where ext.url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCVaccineMarketAuthorization' then {\r\n      maholder.valueCoding as coding -> vaccination.maholder = coding "set maholder code";\r\n    } "set maholder";\r\n    ext first as valid where ext.url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCVaccineValidFrom' then {\r\n      valid.valueDateTime as date -> vaccination.validFrom = date "set validFrom date";\r\n    } "set validFrom";\r\n    ext first as country where ext.url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCCountryOfVaccination' then {\r\n      country.valueCode as code ->  vaccination.country as vCountry,  vCountry.system = 'urn:iso:std:iso:3166',  vCountry.code = code "set country code";\r\n    } "set country";\r\n  } "set extensions";\r\n  immunization.manufacturer as manufacturer then {\r\n    manufacturer.identifier as identifier -> vaccination.manufacturer as vMan then {\r\n      identifier.system as system -> vMan.system = system "set manufacturer system";\r\n      identifier.value as value -> vMan.code = value "set manufactutuer code";\r\n    } "set manufacturer id";\r\n  } "set manufacturer";\r\n  immunization.lotNumber as lot -> vaccination.lot = lot "set lot number";\r\n  immunization.occurrence as date -> vaccination.date = date "set date";\r\n  immunization.protocolApplied first as protocol then {\r\n    protocol.doseNumber as dose -> vaccination.dose = dose "set dose";\r\n    protocol.seriesDoses as totalDoses -> vaccination.totalDoses = totalDoses "set totalDoses";\r\n    protocol.targetDisease first as disease then {\r\n      disease.coding first as coding -> vaccination.disease = coding "set disease coding";\r\n    } "set disease";\r\n    protocol.authority as authority -> certificate.issuer as issuer then {\r\n      authority.reference as reference -> issuer.identifier as identifier then {\r\n        reference -> identifier.value = reference "set reference";\r\n      } "set issuer from reference";\r\n      authority.identifier as identifier -> issuer.identifier = identifier "set issuer identifier";\r\n    } "set issuer";\r\n  } "set protocol applied";\r\n  immunization.location as location then {\r\n    location.reference as reference -> vaccination.centre = reference "set vaccination centre from reference";\r\n    location.display as centre -> vaccination.centre = centre "set vaccination centre";\r\n  } "set vaccination centre location";\r\n  immunization.performer first as performer then {\r\n    performer.actor as actor then {\r\n      actor.identifier as identifier -> vaccination.practitioner = identifier "set practitioner";\r\n    } "set actor";\r\n  } "set performer";\r\n}\r\n\r\ngroup ImmRecToDDCCVS(source immRec : DDCCImmunizationRecommendation, target vaccination) {\r\n  immRec.recommendation as rec then {\r\n    rec.dateCriterion first as due_date then {\r\n      due_date.value as date -> vaccination.nextDose = date "set due date";\r\n    } "get date criterion";\r\n  } "get recommendation";\r\n}\r\n\r\n
" + "div": "
map "http://smart.who.int/ddcc/StructureMap/ResourcesToVSCoreDataSet" = "ResourcesToVSCoreDataSet"\r\n\r\n\r\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias Bundle as source\r\nuses "http://hl7.org/fhir/StructureDefinition/HumanName" alias HumanName as produced\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCPatient" alias DDCCPatient as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCImmunization" alias DDCCImmunization as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCImmunizationRecommendation" alias DDCCImmunizationRecommendation as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCVSComposition" alias DDCCVSComposition as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS-PoV" alias DDCCPoV as target\r\n\r\ngroup ResourcesToCoreDataSet(source bundle : Bundle, target ddcc : DDCCPoV) {\r\n  bundle ->  ddcc.vaccination as vaccination,  ddcc.certificate as certificate then {\r\n    bundle.link first as link -> certificate.hcid as hcid then {\r\n      // There's got to be a better way to do this\r\n      link.url as url -> hcid.value = (url.replaceMatches('[Uu][Rr][Nn]:[Hh][Cc][Ii][Dd]:', '')) "set hcid value";\r\n    } "set hcid";\r\n    bundle.id as id ->  certificate.ddccid as ddccid,  ddccid.value = id "set ddcc id value";\r\n    bundle.entry as entry then {\r\n      entry.resource : Patient first as patient then PatientToDDCCVS(patient, ddcc) "set patient details";\r\n      entry.resource : Immunization first as immunization then ImmunizationToDDCCVS(immunization, vaccination, certificate) "set immunization";\r\n      entry.resource : ImmunizationRecommendation first as immRec then ImmRecToDDCCVS(immRec, vaccination) "set immunization recommendation";\r\n      entry.resource : Composition first as composition then CompositionToDDCCVS(composition, certificate) "set composition";\r\n    } "set header from patient";\r\n  } "setup ddcc";\r\n}\r\n\r\ngroup CompositionToDDCCVS(source composition : DDCCVSComposition, target certificate) {\r\n  composition -> certificate.version = 'RC2' "set version";\r\n  composition.event first as event then {\r\n    event.period as period -> certificate.period as tPeriod then {\r\n      period.start as start -> tPeriod.start = start "set period start";\r\n      period.end as end -> tPeriod.end = end "set period end";\r\n    } "set period";\r\n  } "set certificate period";\r\n}\r\n\r\ngroup PatientToDDCCVS(source patient : DDCCPatient, target ddcc : DDCCPoV) {\r\n  patient.name as name then NameToText(name, ddcc) "set name";\r\n  patient.birthDate as bday -> ddcc.birthDate = bday "set birth date";\r\n  patient.id as id ->  ddcc.identifier as identifier,  identifier.value = id "set identifier from id";\r\n  // this will override what was set from id if it exists\r\n  patient.identifier first as sId -> ddcc.identifier as identifier then {\r\n    sId.value as id -> identifier.value = id "set identifier value";\r\n  } "set identifier from identifier";\r\n  patient.gender as gender -> ddcc.sex = gender "set sex";\r\n}\r\n\r\ngroup NameToText(source name : HumanName, target ddcc) {\r\n  // annoying because append doesn't work until ddcc.name is set\r\n  name.given first as given -> ddcc.name = (given.replaceMatches('$', ' ')) "set first name";\r\n  // name.given not_first as other -> ddcc.name as tName, ddcc.name = append( tName, other ) "set other names";\r\n  name.given not_first as other ->  ddcc.name as tName,  (other.replaceMatches('$', ' ')) as spaced,  ddcc.name = append(tName, spaced) "set other names";\r\n  name.family as family ->  ddcc.name as tName,  ddcc.name = append(tName, family) "add family name";\r\n  name.text as text -> ddcc.name = text "set full name";\r\n}\r\n\r\ngroup ImmunizationToDDCCVS(source immunization : DDCCImmunization, target vaccination, target certificate) {\r\n  immunization.vaccineCode as code then {\r\n    code.coding first as coding -> vaccination.vaccine = coding "set vaccine";\r\n  } "set vaccine code";\r\n  immunization.extension as ext then {\r\n    ext first as brand where ext.url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCVaccineBrand' then {\r\n      brand.valueCoding as coding -> vaccination.brand = coding "set brand code";\r\n    } "set brand";\r\n    ext first as maholder where ext.url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCVaccineMarketAuthorization' then {\r\n      maholder.valueCoding as coding -> vaccination.maholder = coding "set maholder code";\r\n    } "set maholder";\r\n    ext first as valid where ext.url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCVaccineValidFrom' then {\r\n      valid.valueDateTime as date -> vaccination.validFrom = date "set validFrom date";\r\n    } "set validFrom";\r\n    ext first as country where ext.url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCCountryOfVaccination' then {\r\n      country.valueCode as code ->  vaccination.country as vCountry,  vCountry.system = 'urn:iso:std:iso:3166',  vCountry.code = code "set country code";\r\n    } "set country";\r\n  } "set extensions";\r\n  immunization.manufacturer as manufacturer then {\r\n    manufacturer.identifier as identifier -> vaccination.manufacturer as vMan then {\r\n      identifier.system as system -> vMan.system = system "set manufacturer system";\r\n      identifier.value as value -> vMan.code = value "set manufactutuer code";\r\n    } "set manufacturer id";\r\n  } "set manufacturer";\r\n  immunization.lotNumber as lot -> vaccination.lot = lot "set lot number";\r\n  immunization.occurrence as date -> vaccination.date = date "set date";\r\n  immunization.protocolApplied first as protocol then {\r\n    protocol.doseNumber as dose -> vaccination.dose = dose "set dose";\r\n    protocol.seriesDoses as totalDoses -> vaccination.totalDoses = totalDoses "set totalDoses";\r\n    protocol.targetDisease first as disease then {\r\n      disease.coding first as coding -> vaccination.disease = coding "set disease coding";\r\n    } "set disease";\r\n    protocol.authority as authority -> certificate.issuer as issuer then {\r\n      authority.reference as reference -> issuer.identifier as identifier then {\r\n        reference -> identifier.value = reference "set reference";\r\n      } "set issuer from reference";\r\n      authority.identifier as identifier -> issuer.identifier = identifier "set issuer identifier";\r\n    } "set issuer";\r\n  } "set protocol applied";\r\n  immunization.location as location then {\r\n    location.reference as reference -> vaccination.centre = reference "set vaccination centre from reference";\r\n    location.display as centre -> vaccination.centre = centre "set vaccination centre";\r\n  } "set vaccination centre location";\r\n  immunization.performer first as performer then {\r\n    performer.actor as actor then {\r\n      actor.identifier as identifier -> vaccination.practitioner = identifier "set practitioner";\r\n    } "set actor";\r\n  } "set performer";\r\n}\r\n\r\ngroup ImmRecToDDCCVS(source immRec : DDCCImmunizationRecommendation, target vaccination) {\r\n  immRec.recommendation as rec then {\r\n    rec.dateCriterion first as due_date then {\r\n      due_date.value as date -> vaccination.nextDose = date "set due date";\r\n    } "get date criterion";\r\n  } "get recommendation";\r\n}\r\n\r\n
" }, "url": "http://smart.who.int/ddcc/StructureMap/ResourcesToVSCoreDataSet", "name": "ResourcesToVSCoreDataSet", @@ -36,7 +36,7 @@ "mode": "source", "alias": "DDCCVSComposition" }, { - "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS.PoV", + "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS-PoV", "mode": "target", "alias": "DDCCPoV" } ], diff --git a/input/resources/StructureMap-SHCToCoreDataSetTR.json b/input/resources/StructureMap-SHCToCoreDataSetTR.json index 6abe5defb5..ac36a053af 100644 --- a/input/resources/StructureMap-SHCToCoreDataSetTR.json +++ b/input/resources/StructureMap-SHCToCoreDataSetTR.json @@ -7,7 +7,7 @@ }, "text": { "status": "generated", - "div": "
map "http://smart.who.int/ddcc/StructureMap/SHCToCoreDataSetTR" = "SHCToCoreDataSetTR"\r\n\r\n\r\nuses "http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-infectious-disease-laboratory-bundle-dm" alias SHCLabBundleDM as source\r\nuses "http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-patient-general-dm" alias SHCPatientDM as source\r\nuses "http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-infectious-disease-laboratory-result-observation-dm" alias SHCLabDM as source\r\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias DDCCBundle as target\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR" alias DDCCTR as produced\r\n\r\ngroup SHCToTR(source shc : SHCLabBundleDM, target ddccBundle : DDCCBundle) {\r\n  shc.entry as patientEntrySHC then {\r\n    patientEntrySHC.resource : Patient first as patient then {\r\n      shc.entry as entry then {\r\n        // entry.resource : Immunization as immunization where vaccineCode.memberOf('http://smart.who.int/ddcc/ValueSet/who-ddcc-allowed-vaccines-covid-19') ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS') as ddcc then {\r\n        entry.resource : Observation as lab ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR') as ddcc then {\r\n          lab then PatientToDDCCTR(patient, ddcc) "set patient";\r\n          lab -> ddcc.test as test then LabToDDCC(lab, test) "set test";\r\n          lab -> outentry.resource = ddcc "set outentry";\r\n        } "labs";\r\n      } "entries";\r\n    } "get patient";\r\n  } "find patient";\r\n}\r\n\r\ngroup PatientToDDCCTR(source patient : SHCPatientDM, target tgt : DDCCTR) {\r\n  patient.name as name then NameToText(name, tgt) "set name";\r\n  patient.birthDate as birthDate -> tgt.birthDate = birthDate "set birthDate";\r\n  patient.identifier first as identifier -> tgt.identifier = identifier "set identifier";\r\n}\r\n\r\ngroup NameToText(source name : HumanName, target ddcc) {\r\n  // append doesn't work until ddcc.name is set\r\n  name.given first as given -> ddcc.name = (given.replaceMatches('$', ' ')) "set first name";\r\n  // name.given not_first as other -> ddcc.name as tName, ddcc.name = append( tName, other ) "set other names";\r\n  name.given not_first as other ->  ddcc.name as tName,  (other.replaceMatches('$', ' ')) as spaced,  ddcc.name = append(tName, spaced) "set other names";\r\n  name.family as family ->  ddcc.name as tName,  ddcc.name = append(tName, family) "add family name";\r\n  name.text as text -> ddcc.name = text "set full name";\r\n}\r\n\r\ngroup LabToDDCC(source lab : SHCLabDM, target test) {\r\n  lab.code as code then {\r\n    code.coding first as labType then {\r\n      labType -> test.type = labType "set default type";\r\n      labType where labType.memberOf('http://smart.who.int/ddcc/ValueSet/lab-test-type-covid19-loinc') -> test.type = translate(labType, 'http://smart.who.int/ddcc/ConceptMap/lab-test-type-covid19-loinc-to-icd11', 'Coding') "translate loinc type";\r\n      labType where labType.memberOf('http://smart.who.int/ddcc/ValueSet/lab-test-type-covid19-loinc') -> test.pathogen = c('http://id.who.int/icd11/mms', 'XN109') "set pathogen to COVID";\r\n    };\r\n  };\r\n  lab.effectiveDateTime as date -> test.date = date "set date";\r\n  lab.valueCodeableConcept as value then {\r\n    value.coding first as result then {\r\n      result -> test.result = result "set default result";\r\n      result where result.memberOf('http://smart.who.int/ddcc/ValueSet/lab-test-qual-result-snomed') -> test.result = translate(result, 'http://smart.who.int/ddcc/ConceptMap/lab-test-qual-result-snomed-to-icd11') "translate snomed result";\r\n    };\r\n  };\r\n}\r\n\r\n
" + "div": "
map "http://smart.who.int/ddcc/StructureMap/SHCToCoreDataSetTR" = "SHCToCoreDataSetTR"\r\n\r\n\r\nuses "http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-infectious-disease-laboratory-bundle-dm" alias SHCLabBundleDM as source\r\nuses "http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-patient-general-dm" alias SHCPatientDM as source\r\nuses "http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-infectious-disease-laboratory-result-observation-dm" alias SHCLabDM as source\r\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias DDCCBundle as target\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR" alias DDCCTR as produced\r\n\r\ngroup SHCToTR(source shc : SHCLabBundleDM, target ddccBundle : DDCCBundle) {\r\n  shc.entry as patientEntrySHC then {\r\n    patientEntrySHC.resource : Patient first as patient then {\r\n      shc.entry as entry then {\r\n        // entry.resource : Immunization as immunization where vaccineCode.memberOf('http://smart.who.int/ddcc/ValueSet/who-ddcc-allowed-vaccines-covid-19') ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS') as ddcc then {\r\n        entry.resource : Observation as lab ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR') as ddcc then {\r\n          lab then PatientToDDCCTR(patient, ddcc) "set patient";\r\n          lab -> ddcc.test as test then LabToDDCC(lab, test) "set test";\r\n          lab -> outentry.resource = ddcc "set outentry";\r\n        } "labs";\r\n      } "entries";\r\n    } "get patient";\r\n  } "find patient";\r\n}\r\n\r\ngroup PatientToDDCCTR(source patient : SHCPatientDM, target tgt : DDCCTR) {\r\n  patient.name as name then NameToText(name, tgt) "set name";\r\n  patient.birthDate as birthDate -> tgt.birthDate = birthDate "set birthDate";\r\n  patient.identifier first as identifier -> tgt.identifier = identifier "set identifier";\r\n}\r\n\r\ngroup NameToText(source name : HumanName, target ddcc) {\r\n  // append doesn't work until ddcc.name is set\r\n  name.given first as given -> ddcc.name = (given.replaceMatches('$', ' ')) "set first name";\r\n  // name.given not_first as other -> ddcc.name as tName, ddcc.name = append( tName, other ) "set other names";\r\n  name.given not_first as other ->  ddcc.name as tName,  (other.replaceMatches('$', ' ')) as spaced,  ddcc.name = append(tName, spaced) "set other names";\r\n  name.family as family ->  ddcc.name as tName,  ddcc.name = append(tName, family) "add family name";\r\n  name.text as text -> ddcc.name = text "set full name";\r\n}\r\n\r\ngroup LabToDDCC(source lab : SHCLabDM, target test) {\r\n  lab.code as code then {\r\n    code.coding first as labType then {\r\n      labType -> test.type = labType "set default type";\r\n      labType where labType.memberOf('http://smart.who.int/ddcc/ValueSet/lab-test-type-covid19-loinc') -> test.type = translate(labType, 'http://smart.who.int/ddcc/ConceptMap/lab-test-type-covid19-loinc-to-icd11', 'Coding') "translate loinc type";\r\n      labType where labType.memberOf('http://smart.who.int/ddcc/ValueSet/lab-test-type-covid19-loinc') -> test.pathogen = c('http://id.who.int/icd11/mms', 'XN109') "set pathogen to COVID";\r\n    };\r\n  };\r\n  lab.effectiveDateTime as date -> test.date = date "set date";\r\n  lab.valueCodeableConcept as value then {\r\n    value.coding first as result then {\r\n      result -> test.result = result "set default result";\r\n      result where result.memberOf('http://smart.who.int/ddcc/ValueSet/lab-test-qual-result-snomed') -> test.result = translate(result, 'http://smart.who.int/ddcc/ConceptMap/lab-test-qual-result-snomed-to-icd11') "translate snomed result";\r\n    };\r\n  };\r\n}\r\n\r\n
" }, "url": "http://smart.who.int/ddcc/StructureMap/SHCToCoreDataSetTR", "name": "SHCToCoreDataSetTR", @@ -28,7 +28,7 @@ "mode": "target", "alias": "DDCCBundle" }, { - "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR", + "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR", "mode": "produced", "alias": "DDCCTR" } ], @@ -85,7 +85,7 @@ "variable": "ddcc", "transform": "create", "parameter": [ { - "valueString": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.TR" + "valueString": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-TR" } ] } ], "rule": [ { @@ -149,7 +149,7 @@ } ] } ] } ], - "documentation": "entry.resource : Immunization as immunization where vaccineCode.memberOf('http://smart.who.int/ddcc/ValueSet/who-ddcc-allowed-vaccines-covid-19') -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS') as ddcc then {" + "documentation": "entry.resource : Immunization as immunization where vaccineCode.memberOf('http://smart.who.int/ddcc/ValueSet/who-ddcc-allowed-vaccines-covid-19') -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS') as ddcc then {" } ] } ] } ] diff --git a/input/resources/StructureMap-SHCToCoreDataSetVS.json b/input/resources/StructureMap-SHCToCoreDataSetVS.json index 82fb78401f..636901999c 100644 --- a/input/resources/StructureMap-SHCToCoreDataSetVS.json +++ b/input/resources/StructureMap-SHCToCoreDataSetVS.json @@ -7,7 +7,7 @@ }, "text": { "status": "generated", - "div": "
map "http://smart.who.int/ddcc/StructureMap/SHCToCoreDataSetVS" = "SHCToCoreDataSetVS"\r\n\r\n\r\nuses "http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-vaccination-bundle-dm" alias SHCVaccinationBundleDM as source\r\nuses "http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-patient-general-dm" alias SHCPatientDM as source\r\nuses "http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-vaccination-dm" alias SHCImmunizationDM as source\r\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias DDCCBundle as target\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS" alias DDCCVS as produced\r\n\r\ngroup SHCToVS(source shc : SHCVaccinationBundleDM, target ddccBundle : DDCCBundle) {\r\n  shc.entry as patientEntrySHC then {\r\n    patientEntrySHC.resource : Patient first as patient then {\r\n      shc.entry as entry then {\r\n        // entry.resource : Immunization as immunization where vaccineCode.memberOf('http://smart.who.int/ddcc/ValueSet/who-ddcc-allowed-vaccines-covid-19') ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS') as ddcc then {\r\n        entry.resource : Immunization as immunization ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS') as ddcc then {\r\n          immunization then PatientToDDCCVS(patient, ddcc) "set patient";\r\n          immunization -> ddcc.vaccination as vaccination then ImmunizationToDDCC(immunization, vaccination) "set vaccination";\r\n          immunization -> outentry.resource = ddcc "set outentry";\r\n        } "immunizations";\r\n      } "entries";\r\n    } "get patient";\r\n  } "find patient";\r\n}\r\n\r\ngroup PatientToDDCCVS(source patient : SHCPatientDM, target tgt : DDCCVS) {\r\n  patient.name as name then NameToText(name, tgt) "set name";\r\n  patient.birthDate as birthDate -> tgt.birthDate = birthDate "set birthDate";\r\n  patient.identifier first as identifier -> tgt.identifier = identifier "set identifier";\r\n}\r\n\r\ngroup NameToText(source name : HumanName, target ddcc) {\r\n  // append doesn't work until ddcc.name is set\r\n  name.given first as given -> ddcc.name = (given.replaceMatches('$', ' ')) "set first name";\r\n  // name.given not_first as other -> ddcc.name as tName, ddcc.name = append( tName, other ) "set other names";\r\n  name.given not_first as other ->  ddcc.name as tName,  (other.replaceMatches('$', ' ')) as spaced,  ddcc.name = append(tName, spaced) "set other names";\r\n  name.family as family ->  ddcc.name as tName,  ddcc.name = append(tName, family) "add family name";\r\n  name.text as text -> ddcc.name = text "set full name";\r\n}\r\n\r\ngroup ImmunizationToDDCC(source immunization : SHCImmunizationDM, target vaccination) {\r\n  immunization.vaccineCode as vaccine then {\r\n    vaccine.coding as coding then {\r\n      coding -> vaccination.vaccine = coding "set default vaccine";\r\n      coding -> vaccination.brand = coding "set default brand";\r\n      coding where coding.memberOf('http://smart.who.int/ddcc/ValueSet/vaccine-covid19-cvx') -> vaccination.vaccine = translate(coding, 'http://smart.who.int/ddcc/ConceptMap/vaccine-covid19-cvx-to-icd11', 'Coding') "translate COVID CVX vaccine";\r\n      coding where coding.memberOf('http://smart.who.int/ddcc/ValueSet/vaccine-covid19-snomed') -> vaccination.vaccine = translate(coding, 'http://smart.who.int/ddcc/ConceptMap/vaccine-covid19-snomed-to-icd11', 'Coding') "translate COVID SNOMED vaccine";\r\n    };\r\n  };\r\n  immunization.manufacturer as tman then {\r\n    tman.identifier as identifier -> vaccination.manufacturer as manufacturer then {\r\n      identifier.system as system -> manufacturer.system = system "set manufacturer system";\r\n      identifier.value as value -> manufacturer.code = value "set manufacturer value";\r\n    } "set manufacturer id";\r\n  };\r\n  immunization.lotNumber as lot -> vaccination.lot = lot "set lot";\r\n  immunization.occurrence as date -> vaccination.date = date "set date";\r\n  immunization.performer as performer then {\r\n    performer.actor as actor then {\r\n      actor.display as centre -> vaccination.centre = centre "set centre";\r\n    };\r\n  };\r\n}\r\n\r\n
" + "div": "
map "http://smart.who.int/ddcc/StructureMap/SHCToCoreDataSetVS" = "SHCToCoreDataSetVS"\r\n\r\n\r\nuses "http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-vaccination-bundle-dm" alias SHCVaccinationBundleDM as source\r\nuses "http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-patient-general-dm" alias SHCPatientDM as source\r\nuses "http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-vaccination-dm" alias SHCImmunizationDM as source\r\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias DDCCBundle as target\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS" alias DDCCVS as produced\r\n\r\ngroup SHCToVS(source shc : SHCVaccinationBundleDM, target ddccBundle : DDCCBundle) {\r\n  shc.entry as patientEntrySHC then {\r\n    patientEntrySHC.resource : Patient first as patient then {\r\n      shc.entry as entry then {\r\n        // entry.resource : Immunization as immunization where vaccineCode.memberOf('http://smart.who.int/ddcc/ValueSet/who-ddcc-allowed-vaccines-covid-19') ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS') as ddcc then {\r\n        entry.resource : Immunization as immunization ->  ddccBundle.entry as outentry,  create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS') as ddcc then {\r\n          immunization then PatientToDDCCVS(patient, ddcc) "set patient";\r\n          immunization -> ddcc.vaccination as vaccination then ImmunizationToDDCC(immunization, vaccination) "set vaccination";\r\n          immunization -> outentry.resource = ddcc "set outentry";\r\n        } "immunizations";\r\n      } "entries";\r\n    } "get patient";\r\n  } "find patient";\r\n}\r\n\r\ngroup PatientToDDCCVS(source patient : SHCPatientDM, target tgt : DDCCVS) {\r\n  patient.name as name then NameToText(name, tgt) "set name";\r\n  patient.birthDate as birthDate -> tgt.birthDate = birthDate "set birthDate";\r\n  patient.identifier first as identifier -> tgt.identifier = identifier "set identifier";\r\n}\r\n\r\ngroup NameToText(source name : HumanName, target ddcc) {\r\n  // append doesn't work until ddcc.name is set\r\n  name.given first as given -> ddcc.name = (given.replaceMatches('$', ' ')) "set first name";\r\n  // name.given not_first as other -> ddcc.name as tName, ddcc.name = append( tName, other ) "set other names";\r\n  name.given not_first as other ->  ddcc.name as tName,  (other.replaceMatches('$', ' ')) as spaced,  ddcc.name = append(tName, spaced) "set other names";\r\n  name.family as family ->  ddcc.name as tName,  ddcc.name = append(tName, family) "add family name";\r\n  name.text as text -> ddcc.name = text "set full name";\r\n}\r\n\r\ngroup ImmunizationToDDCC(source immunization : SHCImmunizationDM, target vaccination) {\r\n  immunization.vaccineCode as vaccine then {\r\n    vaccine.coding as coding then {\r\n      coding -> vaccination.vaccine = coding "set default vaccine";\r\n      coding -> vaccination.brand = coding "set default brand";\r\n      coding where coding.memberOf('http://smart.who.int/ddcc/ValueSet/vaccine-covid19-cvx') -> vaccination.vaccine = translate(coding, 'http://smart.who.int/ddcc/ConceptMap/vaccine-covid19-cvx-to-icd11', 'Coding') "translate COVID CVX vaccine";\r\n      coding where coding.memberOf('http://smart.who.int/ddcc/ValueSet/vaccine-covid19-snomed') -> vaccination.vaccine = translate(coding, 'http://smart.who.int/ddcc/ConceptMap/vaccine-covid19-snomed-to-icd11', 'Coding') "translate COVID SNOMED vaccine";\r\n    };\r\n  };\r\n  immunization.manufacturer as tman then {\r\n    tman.identifier as identifier -> vaccination.manufacturer as manufacturer then {\r\n      identifier.system as system -> manufacturer.system = system "set manufacturer system";\r\n      identifier.value as value -> manufacturer.code = value "set manufacturer value";\r\n    } "set manufacturer id";\r\n  };\r\n  immunization.lotNumber as lot -> vaccination.lot = lot "set lot";\r\n  immunization.occurrence as date -> vaccination.date = date "set date";\r\n  immunization.performer as performer then {\r\n    performer.actor as actor then {\r\n      actor.display as centre -> vaccination.centre = centre "set centre";\r\n    };\r\n  };\r\n}\r\n\r\n
" }, "url": "http://smart.who.int/ddcc/StructureMap/SHCToCoreDataSetVS", "name": "SHCToCoreDataSetVS", @@ -28,7 +28,7 @@ "mode": "target", "alias": "DDCCBundle" }, { - "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS", + "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS", "mode": "produced", "alias": "DDCCVS" } ], @@ -85,7 +85,7 @@ "variable": "ddcc", "transform": "create", "parameter": [ { - "valueString": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS" + "valueString": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS" } ] } ], "rule": [ { @@ -149,7 +149,7 @@ } ] } ] } ], - "documentation": "entry.resource : Immunization as immunization where vaccineCode.memberOf('http://smart.who.int/ddcc/ValueSet/who-ddcc-allowed-vaccines-covid-19') -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet.VS') as ddcc then {" + "documentation": "entry.resource : Immunization as immunization where vaccineCode.memberOf('http://smart.who.int/ddcc/ValueSet/who-ddcc-allowed-vaccines-covid-19') -> ddccBundle.entry as outentry, create('http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet-VS') as ddcc then {" } ] } ] } ]