| 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()"
}
]
}
]
}
]
}
]
}