Package | who.ddcc |
Resource Type | StructureMap |
Id | CertSHCtoCoreDataSet |
FHIR Version | R4 |
Source | http://smart.who.int/ddcc/https://build.fhir.org/ig/WorldHealthOrganization/ddcc/StructureMap-CertSHCtoCoreDataSet.html |
URL | http://smart.who.int/ddcc/StructureMap/CertSHCtoCoreDataSet |
Version | 1.0.0 |
Status | draft |
Date | 2025-06-24T09:07:32+00:00 |
Name | CertSHCtoCoreDataSet |
Realm | uv |
Authority | who |
Description | Structure map transforming CertSHC logical model to bundle of Core Data Set logical model |
No resources found
No resources found
Note: links and images are rebased to the (stated) source
Generated Narrative: StructureMap CertSHCtoCoreDataSet
map "http://smart.who.int/ddcc/StructureMap/CertSHCtoCoreDataSet" = "CertSHCtoCoreDataSet" // Structure map transforming CertSHC logical model to bundle of Core Data Set logical model uses "http://smart.who.int/ddcc/StructureDefinition/CertSHC" alias JWTPayload as source uses "http://hl7.org/fhir/StructureDefinition/Bundle" alias DDCCBundle as target uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet" alias DDCC as target uses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSetVS" alias DDCCVS as target imports "http://smart.who.int/ddcc/StructureMap/SHCToCoreDataSetVS" imports "http://smart.who.int/ddcc/StructureMap/SHCToCoreDataSetTR" group CertSHCtoCoreDataSetBundle(source src : JWTPayload, target ddccBundle : Bundle) { src.vc as vc then { vc.credentialSubject as credentialSubject then { credentialSubject.fhirBundle as fhirBundle then { 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/DDCCCoreDataSetVS') 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/DDCCCoreDataSetTR') 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"; lab -> outentry.resource = ddcc "set outentry"; } "labs"; } "entries"; } "get patient"; } "find patient"; }; }; }; } group CertSHCtoCoreDataSet(source src : JWTPayload, target ddcc : DDCC) { src -> ddcc.certificate as cert then { src.iss -> cert.issuer = create('Reference') as issuer then { src.iss as iss -> issuer.reference = iss "set issuer"; } "issuer"; src -> cert.period = create('Period') as period then { src then JwtToPeriod(src, period) "set period"; } "period"; } "certificate"; } group JwtToPeriod(source src : JWTPayload, target tgt : Period) { 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"; 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"; src.exp as exp -> append(exp, ' seconds') as epoch, tgt.end = (@1970-01-01T00:00:00.000+00:00 + epoch.toQuantity()) "set period end"; }
{ "resourceType": "StructureMap", "id": "CertSHCtoCoreDataSet", "text": { "status": "generated", "div": "<!-- snip (see above) -->" }, "url": "http://smart.who.int/ddcc/StructureMap/CertSHCtoCoreDataSet", "version": "1.0.0", "name": "CertSHCtoCoreDataSet", "status": "draft", "date": "2025-06-24T09:07:32+00:00", "publisher": "WHO", "contact": [ { "name": "WHO", "telecom": [ { "system": "url", "value": "http://who.int" } ] } ], "description": "Structure map transforming CertSHC logical model to bundle of Core Data Set logical model", "jurisdiction": [ { "coding": [ { "system": "http://unstats.un.org/unsd/methods/m49/m49.htm", "code": "001" } ] } ], "structure": [ { "url": "http://smart.who.int/ddcc/StructureDefinition/CertSHC", "mode": "source", "alias": "JWTPayload" }, { "url": "http://hl7.org/fhir/StructureDefinition/Bundle", "mode": "target", "alias": "DDCCBundle" }, { "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSet", "mode": "target", "alias": "DDCC" }, { "url": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSetVS", "mode": "target", "alias": "DDCCVS" } ], "import": [ "http://smart.who.int/ddcc/StructureMap/SHCToCoreDataSetVS", "http://smart.who.int/ddcc/StructureMap/SHCToCoreDataSetTR" ], "group": [ { "name": "CertSHCtoCoreDataSetBundle", "typeMode": "none", "input": [ { "name": "src", "type": "JWTPayload", "mode": "source" }, { "name": "ddccBundle", "type": "Bundle", "mode": "target" } ], "rule": [ { "name": "vc", "source": [ { "context": "src", "element": "vc", "variable": "vc" } ], "rule": [ { "name": "credentialSubject", "source": [ { "context": "vc", "element": "credentialSubject", "variable": "credentialSubject" } ], "rule": [ { "name": "fhirBundle", "source": [ { "context": "credentialSubject", "element": "fhirBundle", "variable": "fhirBundle" } ], "rule": [ { "name": "find patient", "source": [ { "context": "fhirBundle", "element": "entry", "variable": "patientEntrySHC" } ], "rule": [ { "name": "get patient", "source": [ { "context": "patientEntrySHC", "type": "Patient", "element": "resource", "listMode": "first", "variable": "patient" } ], "rule": [ { "name": "entries", "source": [ { "context": "fhirBundle", "element": "entry", "variable": "entry" } ], "rule": [ { "name": "immunizations", "source": [ { "context": "entry", "type": "Immunization", "element": "resource", "variable": "immunization" } ], "target": [ { "context": "ddccBundle", "contextType": "variable", "element": "entry", "variable": "outentry" }, { "contextType": "variable", "variable": "ddcc", "transform": "create", "parameter": [ { "valueString": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSetVS" } ] } ], "rule": [ { "name": "set patient", "source": [ { "context": "immunization" } ], "dependent": [ { "name": "PatientToDDCCVS", "variable": [ "patient", "ddcc" ] } ] }, { "name": "set vaccination", "source": [ { "context": "immunization" } ], "target": [ { "context": "ddcc", "contextType": "variable", "element": "vaccination", "variable": "vaccination" } ], "dependent": [ { "name": "ImmunizationToDDCC", "variable": [ "immunization", "vaccination" ] } ] }, { "name": "set ddcc", "source": [ { "context": "immunization" } ], "dependent": [ { "name": "CertSHCtoCoreDataSet", "variable": [ "src", "ddcc" ] } ] }, { "name": "set outentry", "source": [ { "context": "immunization" } ], "target": [ { "context": "outentry", "contextType": "variable", "element": "resource", "transform": "copy", "parameter": [ { "valueId": "ddcc" } ] } ] } ] }, { "name": "labs", "source": [ { "context": "entry", "type": "Observation", "element": "resource", "variable": "lab" } ], "target": [ { "context": "ddccBundle", "contextType": "variable", "element": "entry", "variable": "outentry" }, { "contextType": "variable", "variable": "ddcc", "transform": "create", "parameter": [ { "valueString": "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSetTR" } ] } ], "rule": [ { "name": "set patient", "source": [ { "context": "lab" } ], "dependent": [ { "name": "PatientToDDCCTR", "variable": [ "patient", "ddcc" ] } ] }, { "name": "set test", "source": [ { "context": "lab" } ], "target": [ { "context": "ddcc", "contextType": "variable", "element": "test", "variable": "test" } ], "dependent": [ { "name": "LabToDDCC", "variable": [ "lab", "test" ] } ] }, { "name": "set ddcc", "source": [ { "context": "lab" } ], "dependent": [ { "name": "CertSHCtoCoreDataSet", "variable": [ "src", "ddcc" ] } ] }, { "name": "set outentry", "source": [ { "context": "lab" } ], "target": [ { "context": "outentry", "contextType": "variable", "element": "resource", "transform": "copy", "parameter": [ { "valueId": "ddcc" } ] } ] } ] } ] } ] } ] } ] } ] } ] } ] }, { "name": "CertSHCtoCoreDataSet", "typeMode": "none", "input": [ { "name": "src", "type": "JWTPayload", "mode": "source" }, { "name": "ddcc", "type": "DDCC", "mode": "target" } ], "rule": [ { "name": "certificate", "source": [ { "context": "src" } ], "target": [ { "context": "ddcc", "contextType": "variable", "element": "certificate", "variable": "cert" } ], "rule": [ { "name": "issuer", "source": [ { "context": "src", "element": "iss" } ], "target": [ { "context": "cert", "contextType": "variable", "element": "issuer", "variable": "issuer", "transform": "create", "parameter": [ { "valueString": "Reference" } ] } ], "rule": [ { "name": "set issuer", "source": [ { "context": "src", "element": "iss", "variable": "iss" } ], "target": [ { "context": "issuer", "contextType": "variable", "element": "reference", "transform": "copy", "parameter": [ { "valueId": "iss" } ] } ] } ] }, { "name": "period", "source": [ { "context": "src" } ], "target": [ { "context": "cert", "contextType": "variable", "element": "period", "variable": "period", "transform": "create", "parameter": [ { "valueString": "Period" } ] } ], "rule": [ { "name": "set period", "source": [ { "context": "src" } ], "dependent": [ { "name": "JwtToPeriod", "variable": [ "src", "period" ] } ] } ] } ] } ] }, { "name": "JwtToPeriod", "typeMode": "none", "input": [ { "name": "src", "type": "JWTPayload", "mode": "source" }, { "name": "tgt", "type": "Period", "mode": "target" } ], "rule": [ { "name": "set period start to notBefore", "source": [ { "context": "src", "element": "nbf", "variable": "nbf" } ], "target": [ { "contextType": "variable", "variable": "epoch", "transform": "append", "parameter": [ { "valueId": "nbf" }, { "valueString": " seconds" } ] }, { "context": "tgt", "contextType": "variable", "element": "start", "transform": "evaluate", "parameter": [ { "valueString": "@1970-01-01T00:00:00.000+00:00 + epoch.toQuantity()" } ] } ] }, { "name": "set period start to issuedAt", "source": [ { "context": "src", "element": "iat", "variable": "iat" } ], "target": [ { "contextType": "variable", "variable": "epoch", "transform": "append", "parameter": [ { "valueId": "iat" }, { "valueString": " seconds" } ] }, { "context": "tgt", "contextType": "variable", "element": "start", "transform": "evaluate", "parameter": [ { "valueString": "@1970-01-01T00:00:00.000+00:00 + epoch.toQuantity()" } ] } ] }, { "name": "set period end", "source": [ { "context": "src", "element": "exp", "variable": "exp" } ], "target": [ { "contextType": "variable", "variable": "epoch", "transform": "append", "parameter": [ { "valueId": "exp" }, { "valueString": " seconds" } ] }, { "context": "tgt", "contextType": "variable", "element": "end", "transform": "evaluate", "parameter": [ { "valueString": "@1970-01-01T00:00:00.000+00:00 + epoch.toQuantity()" } ] } ] } ] } ] }