| Package | ch.fhir.ig.cda-fhir-maps |
| Resource Type | StructureMap |
| Id | BundleToCda |
| FHIR Version | R4 |
| Source | http://fhir.ch/ig/cda-fhir-maps/http://fhir.ch/ig/cda-fhir-maps/StructureMap-BundleToCda.html |
| URL | http://fhir.ch/ig/cda-fhir-maps/StructureMap/BundleToCda |
| Version | 0.3.0 |
| Status | draft |
| Date | 2022-02-11T11:14:39+01:00 |
| Name | BundleToCda |
| Realm | ch |
| Authority | hl7 |
| Description | CDA document 2020-01-16 Oliver Egger, copyright ahdis ag, Apache License CDA: http://build.fhir.org/ig/ahdis/cda-core-2.0/branches/master/index.html FHIR: http://hl7.org/fhir/r4/ |
| Copyright | CC-BY-SA-4.0 |
No resources found
No resources found
Note: links and images are rebased to the (stated) source
map "http://fhir.ch/ig/cda-fhir-maps/StructureMap/BundleToCda" = "BundleToCda"
// CDA document
// 2020-01-16 Oliver Egger, copyright ahdis ag, Apache License
// CDA: http://build.fhir.org/ig/ahdis/cda-core-2.0/branches/master/index.html
// FHIR: http://hl7.org/fhir/r4/
uses "http://hl7.org/fhir/cda/StructureDefinition/ClinicalDocument" alias ClinicalDocument as target
uses "http://hl7.org/fhir/cda/StructureDefinition/Author" alias Author as target
uses "http://hl7.org/fhir/cda/StructureDefinition/RecordTarget" alias RecordTarget as target
uses "http://hl7.org/fhir/cda/StructureDefinition/Custodian" alias Custodian as target
uses "http://hl7.org/fhir/cda/StructureDefinition/Organization" alias CdaOrganization as target
uses "http://hl7.org/fhir/cda/StructureDefinition/LegalAuthenticator" alias LegalAuthenticator as target
uses "http://hl7.org/fhir/cda/StructureDefinition/Section" alias CdaSection as target
uses "http://hl7.org/fhir/StructureDefinition/Bundle" alias Bundle as source
uses "http://hl7.org/fhir/StructureDefinition/Composition" alias Composition as source
uses "http://hl7.org/fhir/StructureDefinition/Practitioner" alias Practitioner as source
uses "http://hl7.org/fhir/StructureDefinition/Patient" alias Patient as source
uses "http://hl7.org/fhir/StructureDefinition/Organization" alias Organization as source
uses "http://hl7.org/fhir/StructureDefinition/BackboneElement" alias BackboneElement as source
imports "http://fhir.ch/ig/cda-fhir-maps/StructureMap/FhirToCdaTypes"
group BundleToCda(source bundle : Bundle, target cda : ClinicalDocument) {
bundle -> cda.recordTarget as recordTarget, cda.author as author then BundleToClinicalDocument(bundle, recordTarget, author, cda) "bundle";
}
group BundleToClinicalDocument(source bundle : Bundle, target recordTarget : RecordTarget, target author : Author, target cda : ClinicalDocument) {
bundle -> cda.typeId as typeId then {
bundle -> typeId.root = '2.16.840.1.113883.1.3' "root";
bundle -> typeId.extension = 'POCD_HD000040' "extension";
} "typeId";
bundle.identifier as identifier -> cda.id as id then IdentifierII(identifier, id) "id";
bundle.timestamp as timestamp -> cda.effectiveTime as effectiveTime then InstantTS(timestamp, effectiveTime) "effectiveTime";
bundle.entry as entry then {
entry.resource as resource where $this.ofType(FHIR.Composition) then CompositionClinicalDocument(bundle, resource, recordTarget, author, cda);
};
}
// _________________________ Section Level Templates _________________________
group SectionCdaSection(source bundle : Bundle, source section : BackboneElement, target cdasection : CdaSection) {
section.extension as extension where $this.url = 'http://fhir.ch/ig/ch-core/StructureDefinition/ch-ext-epr-sectionid' -> cdasection.id as id then {
extension.valueIdentifier as valueIdentifier then IdentifierII(valueIdentifier, id) "IdentifierII";
} "valueIdentifier";
section as section where $this.extension.where(url = 'http://fhir.ch/ig/ch-core/StructureDefinition/ch-ext-epr-sectionid').exists() = false -> cdasection.id as id then {
bundle.identifier as identifier -> cdasection.id as id then IdentifierII(identifier, id) "setId";
} "sectionid";
section.code as code then {
code.coding as coding where $this.system = 'http://loinc.org' -> cdasection.code as cdacode then CodingCE(coding, cdacode) "codingsection";
};
section.title as title -> cdasection.title as cdatitle, cdatitle.data = title;
section.text as text then {
text.div as div -> cdasection.text = div;
};
}
// _________________________ Entry Level Templates ________________________
// _________________________ Header Level Templates _________________________
group CompositionClinicalDocument(source bundle : Bundle, source composition : Composition, target recordTarget : RecordTarget, target author : Author, target cda : ClinicalDocument) {
composition.type as type then {
type.coding as coding where $this.system = 'http://loinc.org' -> cda.code as code share docCode then CodingCE(coding, code) "code";
};
composition.title as title -> cda.title as t then {
title -> t.data = title "titleInner";
};
composition.confidentiality as conf -> cda.confidentialityCode as cdaconf then {
conf -> cdaconf.code = conf "conf";
conf -> cdaconf.codeSystem = '2.16.840.1.113883.5.25' "codeSystem";
} "confidentialityCode";
composition.language as language -> cda.languageCode as languageCode, languageCode.code = language "languageCode";
bundle.entry as entry then {
entry.fullUrl where ($this in %composition.subject.reference) and $this.startsWith('urn:uuid') then {
entry.resource : Patient as patient then PatientRecordTarget(patient, bundle, recordTarget) "patient";
} "uuid";
entry.resource as patient where ('Patient' + '/' + $this.id) in %composition.subject.reference then PatientRecordTarget(patient, bundle, recordTarget) "patient";
entry.fullUrl where ($this in %composition.custodian.reference) and $this.startsWith('urn:uuid') then {
entry.resource : Organization as organization -> cda.custodian as custodian then OrganizationCustodian(organization, custodian) "custodian";
} "uuid";
entry.resource as organization where ('Organization' + '/' + $this.id) in %composition.custodian.reference -> cda.custodian as custodian then OrganizationCustodian(organization, custodian) "custodian";
entry.fullUrl where ($this in %composition.author.reference) and $this.startsWith('urn:uuid') then {
entry.resource : Practitioner as practitioner then PractitionerAuthor(bundle, composition, practitioner, author) "author";
} "uuid";
entry.resource as practitioner where ('Practitioner' + '/' + $this.id) in %composition.author.reference then PractitionerAuthor(bundle, composition, practitioner, author) "author";
entry.fullUrl where ($this in %composition.attester.party.reference) and $this.startsWith('urn:uuid') then {
entry.resource : Practitioner as practitioner -> cda.legalAuthenticator as legalAuthenticator then PractitionerLegalAuthenticator(bundle, composition, practitioner, legalAuthenticator) "legalAuthenticator";
} "uuid";
entry.resource as practitioner where ('Practitioner' + '/' + $this.id) in %composition.attester.party.reference -> cda.legalAuthenticator as legalAuthenticator then PractitionerLegalAuthenticator(bundle, composition, practitioner, legalAuthenticator) "legalAuthenticator";
} "patient";
// source.date -> tgt.effectiveTime "effectiveTime";
composition.section as section where $this.code.exists() = false -> cda.component as component then {
section -> component.contextConductionInd = true "contextConductionInd";
section -> component.structuredBody as structuredBody, structuredBody.component as component, component.section as cdasection then SectionCdaSection(bundle, section, cdasection) "cdasection";
};
}
group PatientRecordTarget(source src : Patient, source bundle : Bundle, target tgt : RecordTarget) {
src -> tgt.patientRole as patientRole then {
src.identifier as identifier -> patientRole.id as id then IdentifierII(identifier, id);
src.address as address -> patientRole.addr as ad then AddressAD(address, ad);
src -> patientRole.patient as patient then {
src.name as humanname -> patient.name as en then HumanNameEN(humanname, en);
src.birthDate as birthDate -> patient.birthTime as birthTime then DateTS(birthDate, birthTime);
src.gender as v log $this -> patient.administrativeGenderCode as adminGender then {
v -> adminGender.code = translate(v, 'http://hl7.org/fhir/ConceptMap/cm-administrative-gender-v3', 'code') "gender";
v -> adminGender.codeSystem = '2.16.840.1.113883.5.1' "codeSytem";
v -> adminGender.codeSystemName = 'HL7 AdministrativeGender' "codeSystemName";
v as v where $this = 'male' -> adminGender.displayName = 'Male' "male";
v as v where $this = 'female' -> adminGender.displayName = 'Female' "female";
v as v where $this = 'other' -> adminGender.displayName = 'Undifferentiated' "other";
};
} "patient";
src.telecom as telecom -> patientRole.telecom as tel then ContactPointTEL(telecom, tel);
src.managingOrganization as managingOrganization then {
bundle.entry as entry then {
entry.fullUrl where ($this in %managingOrganization.reference) and $this.startsWith('urn:uuid') -> patientRole.providerOrganization as providerOrganization then Organization2CdaOrganization(managingOrganization, providerOrganization) "providerOrganization";
entry.resource as organization where ('Organization' + '/' + $this.id) in %managingOrganization.reference -> patientRole.providerOrganization as providerOrganization then Organization2CdaOrganization(managingOrganization, providerOrganization) "providerOrganization";
};
};
} "patientRole";
}
group PractitionerAuthor(source bundle : Bundle, source composition : Composition, source src : Practitioner, target tgt : Author) {
composition.author as srcauthor then {
srcauthor.extension as extensionTime where $this.url = 'http://fhir.ch/ig/ch-core/StructureDefinition/ch-ext-epr-time' then {
extensionTime.valueDateTime as valueDateTime -> tgt.time as time then DateTimeTS(valueDateTime, time) "DateTime";
} "extensionTime";
} "srcAuthor";
bundle.timestamp as valueDateTime where composition.author.extension.where(url = 'http://fhir.ch/ig/ch-core/StructureDefinition/ch-ext-epr-time').empty() -> tgt.time as time then DateTimeTS(valueDateTime, time) "DateTimeBundle";
src -> tgt.assignedAuthor as assignedAuthor then {
src.identifier as identifier -> assignedAuthor.id as id then IdentifierII(identifier, id) "id";
src.telecom first as telecom -> assignedAuthor.telecom as tel then ContactPointTEL(telecom, tel);
src.address as address -> assignedAuthor.addr as ad then AddressAD(address, ad);
src.name as name -> assignedAuthor.assignedPerson as assignedPerson, assignedPerson.name as en then HumanNameEN(name, en);
bundle.entry as entry then {
entry.fullUrl where ($this in %composition.author.reference) and $this.startsWith('urn:uuid') then {
entry.resource : Organization as organization -> assignedAuthor.representedOrganization as cdaorganization then Organization2CdaOrganization(organization, cdaorganization) "organization";
} "uuid";
entry.resource as organization where ('Organization' + '/' + $this.id) in %composition.author.reference -> assignedAuthor.representedOrganization as cdaorganization then Organization2CdaOrganization(organization, cdaorganization) "organization";
} "patient";
} "assignedAuthor";
}
group OrganizationCustodian(source src : Organization, target tgt : Custodian) {
src -> tgt.assignedCustodian as assignedCustodian then {
src -> assignedCustodian.representedCustodianOrganization as representedCustodianOrganization then Organization2CdaOrganizationCustodian(src, representedCustodianOrganization) "representedCustodianOrganization";
} "assignedCustodian";
}
group Organization2CdaOrganizationCustodian(source src : Organization, target tgt : CdaOrganization) {
src.identifier as identifier -> tgt.id as id then IdentifierII(identifier, id) "id";
src.name as name -> tgt.name as orgname, orgname.other = name;
src.address as address -> tgt.addr as ad then AddressAD(address, ad);
// target telecom is 0..1
src.telecom first as telecom -> tgt.telecom as tel then ContactPointTEL(telecom, tel);
}
group Organization2CdaOrganization(source src : Organization, target tgt : CdaOrganization) {
src.identifier as identifier -> tgt.id as id then IdentifierII(identifier, id) "id";
src.name as name -> tgt.name as orgname, orgname.other = name;
src.address as address -> tgt.addr as ad then AddressAD(address, ad);
src.telecom as telecom -> tgt.telecom as tel then ContactPointTEL(telecom, tel);
}
group PractitionerLegalAuthenticator(source bundle : Bundle, source composition : Composition, source src : Practitioner, target tgt : LegalAuthenticator) {
src -> tgt.templateId as templateId, templateId.root = '2.16.756.5.30.1.1.10.2.5' "templateId";
composition.attester as attester then {
attester.time as srcTime -> tgt.time as time then InstantTS(srcTime, time) "timestamp";
} "time";
// src -> tgt.signatureCode = 'S' "S";
src -> tgt.signatureCode as signatureCode, signatureCode.code = 'S' "signature";
src -> tgt.assignedEntity as assignedEntity then {
src.identifier as identifier -> assignedEntity.id as id then IdentifierII(identifier, id);
src.name as name -> assignedEntity.assignedPerson as assignedPerson, assignedPerson.name as en then HumanNameEN(name, en);
} "assignedEntity";
}
{
"resourceType": "StructureMap",
"id": "BundleToCda",
"meta": {
"versionId": "3",
"lastUpdated": "2022-01-11T22:14:50.980+01:00"
},
"text": {
"status": "generated",
"div": "<!-- snip (see above) -->"
},
"url": "http://fhir.ch/ig/cda-fhir-maps/StructureMap/BundleToCda",
"version": "0.3.0",
"name": "BundleToCda",
"status": "draft",
"date": "2022-02-11T11:14:39+01:00",
"publisher": "ahdis",
"contact": [
{
"name": "ahdis",
"telecom": [
{
"system": "url",
"value": "http://www.ahdis.ch/"
}
]
}
],
"description": "\r\nCDA document\r\n2020-01-16 Oliver Egger, copyright ahdis ag, Apache License\r\nCDA: http://build.fhir.org/ig/ahdis/cda-core-2.0/branches/master/index.html\r\nFHIR: http://hl7.org/fhir/r4/\r\n",
"copyright": "CC-BY-SA-4.0",
"structure": [
{
"url": "http://hl7.org/fhir/cda/StructureDefinition/ClinicalDocument",
"mode": "target",
"alias": "ClinicalDocument"
},
{
"url": "http://hl7.org/fhir/cda/StructureDefinition/Author",
"mode": "target",
"alias": "Author"
},
{
"url": "http://hl7.org/fhir/cda/StructureDefinition/RecordTarget",
"mode": "target",
"alias": "RecordTarget"
},
{
"url": "http://hl7.org/fhir/cda/StructureDefinition/Custodian",
"mode": "target",
"alias": "Custodian"
},
{
"url": "http://hl7.org/fhir/cda/StructureDefinition/Organization",
"mode": "target",
"alias": "CdaOrganization"
},
{
"url": "http://hl7.org/fhir/cda/StructureDefinition/LegalAuthenticator",
"mode": "target",
"alias": "LegalAuthenticator"
},
{
"url": "http://hl7.org/fhir/cda/StructureDefinition/Section",
"mode": "target",
"alias": "CdaSection"
},
{
"url": "http://hl7.org/fhir/StructureDefinition/Bundle",
"mode": "source",
"alias": "Bundle"
},
{
"url": "http://hl7.org/fhir/StructureDefinition/Composition",
"mode": "source",
"alias": "Composition"
},
{
"url": "http://hl7.org/fhir/StructureDefinition/Practitioner",
"mode": "source",
"alias": "Practitioner"
},
{
"url": "http://hl7.org/fhir/StructureDefinition/Patient",
"mode": "source",
"alias": "Patient"
},
{
"url": "http://hl7.org/fhir/StructureDefinition/Organization",
"mode": "source",
"alias": "Organization"
},
{
"url": "http://hl7.org/fhir/StructureDefinition/BackboneElement",
"mode": "source",
"alias": "BackboneElement"
}
],
"import": [
"http://fhir.ch/ig/cda-fhir-maps/StructureMap/FhirToCdaTypes"
],
"group": [
{
"name": "BundleToCda",
"typeMode": "none",
"input": [
{
"name": "bundle",
"type": "Bundle",
"mode": "source"
},
{
"name": "cda",
"type": "ClinicalDocument",
"mode": "target"
}
],
"rule": [
{
"name": "bundle",
"source": [
{
"context": "bundle"
}
],
"target": [
{
"context": "cda",
"contextType": "variable",
"element": "recordTarget",
"variable": "recordTarget"
},
{
"context": "cda",
"contextType": "variable",
"element": "author",
"variable": "author"
}
],
"dependent": [
{
"name": "BundleToClinicalDocument",
"variable": [
"bundle",
"recordTarget",
"author",
"cda"
]
}
]
}
]
},
{
"name": "BundleToClinicalDocument",
"typeMode": "none",
"input": [
{
"name": "bundle",
"type": "Bundle",
"mode": "source"
},
{
"name": "recordTarget",
"type": "RecordTarget",
"mode": "target"
},
{
"name": "author",
"type": "Author",
"mode": "target"
},
{
"name": "cda",
"type": "ClinicalDocument",
"mode": "target"
}
],
"rule": [
{
"name": "typeId",
"source": [
{
"context": "bundle"
}
],
"target": [
{
"context": "cda",
"contextType": "variable",
"element": "typeId",
"variable": "typeId"
}
],
"rule": [
{
"name": "root",
"source": [
{
"context": "bundle"
}
],
"target": [
{
"context": "typeId",
"contextType": "variable",
"element": "root",
"transform": "copy",
"parameter": [
{
"valueString": "2.16.840.1.113883.1.3"
}
]
}
]
},
{
"name": "extension",
"source": [
{
"context": "bundle"
}
],
"target": [
{
"context": "typeId",
"contextType": "variable",
"element": "extension",
"transform": "copy",
"parameter": [
{
"valueString": "POCD_HD000040"
}
]
}
]
}
]
},
{
"name": "id",
"source": [
{
"context": "bundle",
"element": "identifier",
"variable": "identifier"
}
],
"target": [
{
"context": "cda",
"contextType": "variable",
"element": "id",
"variable": "id"
}
],
"dependent": [
{
"name": "IdentifierII",
"variable": [
"identifier",
"id"
]
}
]
},
{
"name": "effectiveTime",
"source": [
{
"context": "bundle",
"element": "timestamp",
"variable": "timestamp"
}
],
"target": [
{
"context": "cda",
"contextType": "variable",
"element": "effectiveTime",
"variable": "effectiveTime"
}
],
"dependent": [
{
"name": "InstantTS",
"variable": [
"timestamp",
"effectiveTime"
]
}
]
},
{
"name": "entry",
"source": [
{
"context": "bundle",
"element": "entry",
"variable": "entry"
}
],
"rule": [
{
"name": "resource",
"source": [
{
"context": "entry",
"element": "resource",
"variable": "resource",
"condition": "$this.ofType(FHIR.Composition)"
}
],
"dependent": [
{
"name": "CompositionClinicalDocument",
"variable": [
"bundle",
"resource",
"recordTarget",
"author",
"cda"
]
}
]
}
]
}
]
},
{
"name": "SectionCdaSection",
"typeMode": "none",
"documentation": "_________________________ Section Level Templates _________________________",
"input": [
{
"name": "bundle",
"type": "Bundle",
"mode": "source"
},
{
"name": "section",
"type": "BackboneElement",
"mode": "source"
},
{
"name": "cdasection",
"type": "CdaSection",
"mode": "target"
}
],
"rule": [
{
"name": "valueIdentifier",
"source": [
{
"context": "section",
"element": "extension",
"variable": "extension",
"condition": "$this.url = 'http://fhir.ch/ig/ch-core/StructureDefinition/ch-ext-epr-sectionid'"
}
],
"target": [
{
"context": "cdasection",
"contextType": "variable",
"element": "id",
"variable": "id"
}
],
"rule": [
{
"name": "IdentifierII",
"source": [
{
"context": "extension",
"element": "valueIdentifier",
"variable": "valueIdentifier"
}
],
"dependent": [
{
"name": "IdentifierII",
"variable": [
"valueIdentifier",
"id"
]
}
]
}
]
},
{
"name": "sectionid",
"source": [
{
"context": "section",
"variable": "section",
"condition": "$this.extension.where(url = 'http://fhir.ch/ig/ch-core/StructureDefinition/ch-ext-epr-sectionid').exists() = false"
}
],
"target": [
{
"context": "cdasection",
"contextType": "variable",
"element": "id",
"variable": "id"
}
],
"rule": [
{
"name": "setId",
"source": [
{
"context": "bundle",
"element": "identifier",
"variable": "identifier"
}
],
"target": [
{
"context": "cdasection",
"contextType": "variable",
"element": "id",
"variable": "id"
}
],
"dependent": [
{
"name": "IdentifierII",
"variable": [
"identifier",
"id"
]
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "section",
"element": "code",
"variable": "code"
}
],
"rule": [
{
"name": "codingsection",
"source": [
{
"context": "code",
"element": "coding",
"variable": "coding",
"condition": "$this.system = 'http://loinc.org'"
}
],
"target": [
{
"context": "cdasection",
"contextType": "variable",
"element": "code",
"variable": "cdacode"
}
],
"dependent": [
{
"name": "CodingCE",
"variable": [
"coding",
"cdacode"
]
}
]
}
]
},
{
"name": "title",
"source": [
{
"context": "section",
"element": "title",
"variable": "title"
}
],
"target": [
{
"context": "cdasection",
"contextType": "variable",
"element": "title",
"variable": "cdatitle"
},
{
"context": "cdatitle",
"contextType": "variable",
"element": "data",
"transform": "copy",
"parameter": [
{
"valueId": "title"
}
]
}
]
},
{
"name": "text",
"source": [
{
"context": "section",
"element": "text",
"variable": "text"
}
],
"rule": [
{
"name": "div",
"source": [
{
"context": "text",
"element": "div",
"variable": "div"
}
],
"target": [
{
"context": "cdasection",
"contextType": "variable",
"element": "text",
"transform": "copy",
"parameter": [
{
"valueId": "div"
}
]
}
]
}
]
}
]
},
{
"name": "CompositionClinicalDocument",
"typeMode": "none",
"documentation": "_________________________ Entry Level Templates ________________________\r\n_________________________ Header Level Templates _________________________",
"input": [
{
"name": "bundle",
"type": "Bundle",
"mode": "source"
},
{
"name": "composition",
"type": "Composition",
"mode": "source"
},
{
"name": "recordTarget",
"type": "RecordTarget",
"mode": "target"
},
{
"name": "author",
"type": "Author",
"mode": "target"
},
{
"name": "cda",
"type": "ClinicalDocument",
"mode": "target"
}
],
"rule": [
{
"name": "type",
"source": [
{
"context": "composition",
"element": "type",
"variable": "type"
}
],
"rule": [
{
"name": "code",
"source": [
{
"context": "type",
"element": "coding",
"variable": "coding",
"condition": "$this.system = 'http://loinc.org'"
}
],
"target": [
{
"context": "cda",
"contextType": "variable",
"element": "code",
"variable": "code",
"listMode": [
"share"
],
"listRuleId": "docCode"
}
],
"dependent": [
{
"name": "CodingCE",
"variable": [
"coding",
"code"
]
}
]
}
]
},
{
"name": "title",
"source": [
{
"context": "composition",
"element": "title",
"variable": "title"
}
],
"target": [
{
"context": "cda",
"contextType": "variable",
"element": "title",
"variable": "t"
}
],
"rule": [
{
"name": "titleInner",
"source": [
{
"context": "title"
}
],
"target": [
{
"context": "t",
"contextType": "variable",
"element": "data",
"transform": "copy",
"parameter": [
{
"valueId": "title"
}
]
}
]
}
]
},
{
"name": "confidentialityCode",
"source": [
{
"context": "composition",
"element": "confidentiality",
"variable": "conf"
}
],
"target": [
{
"context": "cda",
"contextType": "variable",
"element": "confidentialityCode",
"variable": "cdaconf"
}
],
"rule": [
{
"name": "conf",
"source": [
{
"context": "conf"
}
],
"target": [
{
"context": "cdaconf",
"contextType": "variable",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueId": "conf"
}
]
}
]
},
{
"name": "codeSystem",
"source": [
{
"context": "conf"
}
],
"target": [
{
"context": "cdaconf",
"contextType": "variable",
"element": "codeSystem",
"transform": "copy",
"parameter": [
{
"valueString": "2.16.840.1.113883.5.25"
}
]
}
]
}
]
},
{
"name": "languageCode",
"source": [
{
"context": "composition",
"element": "language",
"variable": "language"
}
],
"target": [
{
"context": "cda",
"contextType": "variable",
"element": "languageCode",
"variable": "languageCode"
},
{
"context": "languageCode",
"contextType": "variable",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueId": "language"
}
]
}
]
},
{
"name": "patient",
"source": [
{
"context": "bundle",
"element": "entry",
"variable": "entry"
}
],
"rule": [
{
"name": "uuid",
"source": [
{
"context": "entry",
"element": "fullUrl",
"condition": "($this in %composition.subject.reference) and $this.startsWith('urn:uuid')"
}
],
"rule": [
{
"name": "patient",
"source": [
{
"context": "entry",
"type": "Patient",
"element": "resource",
"variable": "patient"
}
],
"dependent": [
{
"name": "PatientRecordTarget",
"variable": [
"patient",
"bundle",
"recordTarget"
]
}
]
}
]
},
{
"name": "patient",
"source": [
{
"context": "entry",
"element": "resource",
"variable": "patient",
"condition": "('Patient' + '/' + $this.id) in %composition.subject.reference"
}
],
"dependent": [
{
"name": "PatientRecordTarget",
"variable": [
"patient",
"bundle",
"recordTarget"
]
}
]
},
{
"name": "uuid",
"source": [
{
"context": "entry",
"element": "fullUrl",
"condition": "($this in %composition.custodian.reference) and $this.startsWith('urn:uuid')"
}
],
"rule": [
{
"name": "custodian",
"source": [
{
"context": "entry",
"type": "Organization",
"element": "resource",
"variable": "organization"
}
],
"target": [
{
"context": "cda",
"contextType": "variable",
"element": "custodian",
"variable": "custodian"
}
],
"dependent": [
{
"name": "OrganizationCustodian",
"variable": [
"organization",
"custodian"
]
}
]
}
]
},
{
"name": "custodian",
"source": [
{
"context": "entry",
"element": "resource",
"variable": "organization",
"condition": "('Organization' + '/' + $this.id) in %composition.custodian.reference"
}
],
"target": [
{
"context": "cda",
"contextType": "variable",
"element": "custodian",
"variable": "custodian"
}
],
"dependent": [
{
"name": "OrganizationCustodian",
"variable": [
"organization",
"custodian"
]
}
]
},
{
"name": "uuid",
"source": [
{
"context": "entry",
"element": "fullUrl",
"condition": "($this in %composition.author.reference) and $this.startsWith('urn:uuid')"
}
],
"rule": [
{
"name": "author",
"source": [
{
"context": "entry",
"type": "Practitioner",
"element": "resource",
"variable": "practitioner"
}
],
"dependent": [
{
"name": "PractitionerAuthor",
"variable": [
"bundle",
"composition",
"practitioner",
"author"
]
}
]
}
]
},
{
"name": "author",
"source": [
{
"context": "entry",
"element": "resource",
"variable": "practitioner",
"condition": "('Practitioner' + '/' + $this.id) in %composition.author.reference"
}
],
"dependent": [
{
"name": "PractitionerAuthor",
"variable": [
"bundle",
"composition",
"practitioner",
"author"
]
}
]
},
{
"name": "uuid",
"source": [
{
"context": "entry",
"element": "fullUrl",
"condition": "($this in %composition.attester.party.reference) and $this.startsWith('urn:uuid')"
}
],
"rule": [
{
"name": "legalAuthenticator",
"source": [
{
"context": "entry",
"type": "Practitioner",
"element": "resource",
"variable": "practitioner"
}
],
"target": [
{
"context": "cda",
"contextType": "variable",
"element": "legalAuthenticator",
"variable": "legalAuthenticator"
}
],
"dependent": [
{
"name": "PractitionerLegalAuthenticator",
"variable": [
"bundle",
"composition",
"practitioner",
"legalAuthenticator"
]
}
]
}
]
},
{
"name": "legalAuthenticator",
"source": [
{
"context": "entry",
"element": "resource",
"variable": "practitioner",
"condition": "('Practitioner' + '/' + $this.id) in %composition.attester.party.reference"
}
],
"target": [
{
"context": "cda",
"contextType": "variable",
"element": "legalAuthenticator",
"variable": "legalAuthenticator"
}
],
"dependent": [
{
"name": "PractitionerLegalAuthenticator",
"variable": [
"bundle",
"composition",
"practitioner",
"legalAuthenticator"
]
}
]
}
]
},
{
"name": "section",
"source": [
{
"context": "composition",
"element": "section",
"variable": "section",
"condition": "$this.code.exists() = false"
}
],
"target": [
{
"context": "cda",
"contextType": "variable",
"element": "component",
"variable": "component"
}
],
"rule": [
{
"name": "contextConductionInd",
"source": [
{
"context": "section"
}
],
"target": [
{
"context": "component",
"contextType": "variable",
"element": "contextConductionInd",
"transform": "copy",
"parameter": [
{
"valueBoolean": true
}
]
}
]
},
{
"name": "cdasection",
"source": [
{
"context": "section"
}
],
"target": [
{
"context": "component",
"contextType": "variable",
"element": "structuredBody",
"variable": "structuredBody"
},
{
"context": "structuredBody",
"contextType": "variable",
"element": "component",
"variable": "component"
},
{
"context": "component",
"contextType": "variable",
"element": "section",
"variable": "cdasection"
}
],
"dependent": [
{
"name": "SectionCdaSection",
"variable": [
"bundle",
"section",
"cdasection"
]
}
]
}
],
"documentation": "source.date -> tgt.effectiveTime \"effectiveTime\";"
}
]
},
{
"name": "PatientRecordTarget",
"typeMode": "none",
"input": [
{
"name": "src",
"type": "Patient",
"mode": "source"
},
{
"name": "bundle",
"type": "Bundle",
"mode": "source"
},
{
"name": "tgt",
"type": "RecordTarget",
"mode": "target"
}
],
"rule": [
{
"name": "patientRole",
"source": [
{
"context": "src"
}
],
"target": [
{
"context": "tgt",
"contextType": "variable",
"element": "patientRole",
"variable": "patientRole"
}
],
"rule": [
{
"name": "identifier",
"source": [
{
"context": "src",
"element": "identifier",
"variable": "identifier"
}
],
"target": [
{
"context": "patientRole",
"contextType": "variable",
"element": "id",
"variable": "id"
}
],
"dependent": [
{
"name": "IdentifierII",
"variable": [
"identifier",
"id"
]
}
]
},
{
"name": "address",
"source": [
{
"context": "src",
"element": "address",
"variable": "address"
}
],
"target": [
{
"context": "patientRole",
"contextType": "variable",
"element": "addr",
"variable": "ad"
}
],
"dependent": [
{
"name": "AddressAD",
"variable": [
"address",
"ad"
]
}
]
},
{
"name": "patient",
"source": [
{
"context": "src"
}
],
"target": [
{
"context": "patientRole",
"contextType": "variable",
"element": "patient",
"variable": "patient"
}
],
"rule": [
{
"name": "name",
"source": [
{
"context": "src",
"element": "name",
"variable": "humanname"
}
],
"target": [
{
"context": "patient",
"contextType": "variable",
"element": "name",
"variable": "en"
}
],
"dependent": [
{
"name": "HumanNameEN",
"variable": [
"humanname",
"en"
]
}
]
},
{
"name": "birthDate",
"source": [
{
"context": "src",
"element": "birthDate",
"variable": "birthDate"
}
],
"target": [
{
"context": "patient",
"contextType": "variable",
"element": "birthTime",
"variable": "birthTime"
}
],
"dependent": [
{
"name": "DateTS",
"variable": [
"birthDate",
"birthTime"
]
}
]
},
{
"name": "gender",
"source": [
{
"context": "src",
"element": "gender",
"variable": "v",
"logMessage": "$this"
}
],
"target": [
{
"context": "patient",
"contextType": "variable",
"element": "administrativeGenderCode",
"variable": "adminGender"
}
],
"rule": [
{
"name": "gender",
"source": [
{
"context": "v"
}
],
"target": [
{
"context": "adminGender",
"contextType": "variable",
"element": "code",
"transform": "translate",
"parameter": [
{
"valueId": "v"
},
{
"valueString": "http://hl7.org/fhir/ConceptMap/cm-administrative-gender-v3"
},
{
"valueString": "code"
}
]
}
]
},
{
"name": "codeSytem",
"source": [
{
"context": "v"
}
],
"target": [
{
"context": "adminGender",
"contextType": "variable",
"element": "codeSystem",
"transform": "copy",
"parameter": [
{
"valueString": "2.16.840.1.113883.5.1"
}
]
}
]
},
{
"name": "codeSystemName",
"source": [
{
"context": "v"
}
],
"target": [
{
"context": "adminGender",
"contextType": "variable",
"element": "codeSystemName",
"transform": "copy",
"parameter": [
{
"valueString": "HL7 AdministrativeGender"
}
]
}
]
},
{
"name": "male",
"source": [
{
"context": "v",
"variable": "v",
"condition": "$this = 'male'"
}
],
"target": [
{
"context": "adminGender",
"contextType": "variable",
"element": "displayName",
"transform": "copy",
"parameter": [
{
"valueString": "Male"
}
]
}
]
},
{
"name": "female",
"source": [
{
"context": "v",
"variable": "v",
"condition": "$this = 'female'"
}
],
"target": [
{
"context": "adminGender",
"contextType": "variable",
"element": "displayName",
"transform": "copy",
"parameter": [
{
"valueString": "Female"
}
]
}
]
},
{
"name": "other",
"source": [
{
"context": "v",
"variable": "v",
"condition": "$this = 'other'"
}
],
"target": [
{
"context": "adminGender",
"contextType": "variable",
"element": "displayName",
"transform": "copy",
"parameter": [
{
"valueString": "Undifferentiated"
}
]
}
]
}
]
}
]
},
{
"name": "telecom",
"source": [
{
"context": "src",
"element": "telecom",
"variable": "telecom"
}
],
"target": [
{
"context": "patientRole",
"contextType": "variable",
"element": "telecom",
"variable": "tel"
}
],
"dependent": [
{
"name": "ContactPointTEL",
"variable": [
"telecom",
"tel"
]
}
]
},
{
"name": "managingOrganization",
"source": [
{
"context": "src",
"element": "managingOrganization",
"variable": "managingOrganization"
}
],
"rule": [
{
"name": "entry",
"source": [
{
"context": "bundle",
"element": "entry",
"variable": "entry"
}
],
"rule": [
{
"name": "providerOrganization",
"source": [
{
"context": "entry",
"element": "fullUrl",
"condition": "($this in %managingOrganization.reference) and $this.startsWith('urn:uuid')"
}
],
"target": [
{
"context": "patientRole",
"contextType": "variable",
"element": "providerOrganization",
"variable": "providerOrganization"
}
],
"dependent": [
{
"name": "Organization2CdaOrganization",
"variable": [
"managingOrganization",
"providerOrganization"
]
}
]
},
{
"name": "providerOrganization",
"source": [
{
"context": "entry",
"element": "resource",
"variable": "organization",
"condition": "('Organization' + '/' + $this.id) in %managingOrganization.reference"
}
],
"target": [
{
"context": "patientRole",
"contextType": "variable",
"element": "providerOrganization",
"variable": "providerOrganization"
}
],
"dependent": [
{
"name": "Organization2CdaOrganization",
"variable": [
"managingOrganization",
"providerOrganization"
]
}
]
}
]
}
]
}
]
}
]
},
{
"name": "PractitionerAuthor",
"typeMode": "none",
"input": [
{
"name": "bundle",
"type": "Bundle",
"mode": "source"
},
{
"name": "composition",
"type": "Composition",
"mode": "source"
},
{
"name": "src",
"type": "Practitioner",
"mode": "source"
},
{
"name": "tgt",
"type": "Author",
"mode": "target"
}
],
"rule": [
{
"name": "srcAuthor",
"source": [
{
"context": "composition",
"element": "author",
"variable": "srcauthor"
}
],
"rule": [
{
"name": "extensionTime",
"source": [
{
"context": "srcauthor",
"element": "extension",
"variable": "extensionTime",
"condition": "$this.url = 'http://fhir.ch/ig/ch-core/StructureDefinition/ch-ext-epr-time'"
}
],
"rule": [
{
"name": "DateTime",
"source": [
{
"context": "extensionTime",
"element": "valueDateTime",
"variable": "valueDateTime"
}
],
"target": [
{
"context": "tgt",
"contextType": "variable",
"element": "time",
"variable": "time"
}
],
"dependent": [
{
"name": "DateTimeTS",
"variable": [
"valueDateTime",
"time"
]
}
]
}
]
}
]
},
{
"name": "DateTimeBundle",
"source": [
{
"context": "bundle",
"element": "timestamp",
"variable": "valueDateTime",
"condition": "composition.author.extension.where(url = 'http://fhir.ch/ig/ch-core/StructureDefinition/ch-ext-epr-time').empty()"
}
],
"target": [
{
"context": "tgt",
"contextType": "variable",
"element": "time",
"variable": "time"
}
],
"dependent": [
{
"name": "DateTimeTS",
"variable": [
"valueDateTime",
"time"
]
}
]
},
{
"name": "assignedAuthor",
"source": [
{
"context": "src"
}
],
"target": [
{
"context": "tgt",
"contextType": "variable",
"element": "assignedAuthor",
"variable": "assignedAuthor"
}
],
"rule": [
{
"name": "id",
"source": [
{
"context": "src",
"element": "identifier",
"variable": "identifier"
}
],
"target": [
{
"context": "assignedAuthor",
"contextType": "variable",
"element": "id",
"variable": "id"
}
],
"dependent": [
{
"name": "IdentifierII",
"variable": [
"identifier",
"id"
]
}
]
},
{
"name": "telecom",
"source": [
{
"context": "src",
"element": "telecom",
"listMode": "first",
"variable": "telecom"
}
],
"target": [
{
"context": "assignedAuthor",
"contextType": "variable",
"element": "telecom",
"variable": "tel"
}
],
"dependent": [
{
"name": "ContactPointTEL",
"variable": [
"telecom",
"tel"
]
}
]
},
{
"name": "address",
"source": [
{
"context": "src",
"element": "address",
"variable": "address"
}
],
"target": [
{
"context": "assignedAuthor",
"contextType": "variable",
"element": "addr",
"variable": "ad"
}
],
"dependent": [
{
"name": "AddressAD",
"variable": [
"address",
"ad"
]
}
]
},
{
"name": "name",
"source": [
{
"context": "src",
"element": "name",
"variable": "name"
}
],
"target": [
{
"context": "assignedAuthor",
"contextType": "variable",
"element": "assignedPerson",
"variable": "assignedPerson"
},
{
"context": "assignedPerson",
"contextType": "variable",
"element": "name",
"variable": "en"
}
],
"dependent": [
{
"name": "HumanNameEN",
"variable": [
"name",
"en"
]
}
]
},
{
"name": "patient",
"source": [
{
"context": "bundle",
"element": "entry",
"variable": "entry"
}
],
"rule": [
{
"name": "uuid",
"source": [
{
"context": "entry",
"element": "fullUrl",
"condition": "($this in %composition.author.reference) and $this.startsWith('urn:uuid')"
}
],
"rule": [
{
"name": "organization",
"source": [
{
"context": "entry",
"type": "Organization",
"element": "resource",
"variable": "organization"
}
],
"target": [
{
"context": "assignedAuthor",
"contextType": "variable",
"element": "representedOrganization",
"variable": "cdaorganization"
}
],
"dependent": [
{
"name": "Organization2CdaOrganization",
"variable": [
"organization",
"cdaorganization"
]
}
]
}
]
},
{
"name": "organization",
"source": [
{
"context": "entry",
"element": "resource",
"variable": "organization",
"condition": "('Organization' + '/' + $this.id) in %composition.author.reference"
}
],
"target": [
{
"context": "assignedAuthor",
"contextType": "variable",
"element": "representedOrganization",
"variable": "cdaorganization"
}
],
"dependent": [
{
"name": "Organization2CdaOrganization",
"variable": [
"organization",
"cdaorganization"
]
}
]
}
]
}
]
}
]
},
{
"name": "OrganizationCustodian",
"typeMode": "none",
"input": [
{
"name": "src",
"type": "Organization",
"mode": "source"
},
{
"name": "tgt",
"type": "Custodian",
"mode": "target"
}
],
"rule": [
{
"name": "assignedCustodian",
"source": [
{
"context": "src"
}
],
"target": [
{
"context": "tgt",
"contextType": "variable",
"element": "assignedCustodian",
"variable": "assignedCustodian"
}
],
"rule": [
{
"name": "representedCustodianOrganization",
"source": [
{
"context": "src"
}
],
"target": [
{
"context": "assignedCustodian",
"contextType": "variable",
"element": "representedCustodianOrganization",
"variable": "representedCustodianOrganization"
}
],
"dependent": [
{
"name": "Organization2CdaOrganizationCustodian",
"variable": [
"src",
"representedCustodianOrganization"
]
}
]
}
]
}
]
},
{
"name": "Organization2CdaOrganizationCustodian",
"typeMode": "none",
"input": [
{
"name": "src",
"type": "Organization",
"mode": "source"
},
{
"name": "tgt",
"type": "CdaOrganization",
"mode": "target"
}
],
"rule": [
{
"name": "id",
"source": [
{
"context": "src",
"element": "identifier",
"variable": "identifier"
}
],
"target": [
{
"context": "tgt",
"contextType": "variable",
"element": "id",
"variable": "id"
}
],
"dependent": [
{
"name": "IdentifierII",
"variable": [
"identifier",
"id"
]
}
]
},
{
"name": "name",
"source": [
{
"context": "src",
"element": "name",
"variable": "name"
}
],
"target": [
{
"context": "tgt",
"contextType": "variable",
"element": "name",
"variable": "orgname"
},
{
"context": "orgname",
"contextType": "variable",
"element": "other",
"transform": "copy",
"parameter": [
{
"valueId": "name"
}
]
}
]
},
{
"name": "address",
"source": [
{
"context": "src",
"element": "address",
"variable": "address"
}
],
"target": [
{
"context": "tgt",
"contextType": "variable",
"element": "addr",
"variable": "ad"
}
],
"dependent": [
{
"name": "AddressAD",
"variable": [
"address",
"ad"
]
}
]
},
{
"name": "telecom",
"source": [
{
"context": "src",
"element": "telecom",
"listMode": "first",
"variable": "telecom"
}
],
"target": [
{
"context": "tgt",
"contextType": "variable",
"element": "telecom",
"variable": "tel"
}
],
"dependent": [
{
"name": "ContactPointTEL",
"variable": [
"telecom",
"tel"
]
}
],
"documentation": "target telecom is 0..1"
}
]
},
{
"name": "Organization2CdaOrganization",
"typeMode": "none",
"input": [
{
"name": "src",
"type": "Organization",
"mode": "source"
},
{
"name": "tgt",
"type": "CdaOrganization",
"mode": "target"
}
],
"rule": [
{
"name": "id",
"source": [
{
"context": "src",
"element": "identifier",
"variable": "identifier"
}
],
"target": [
{
"context": "tgt",
"contextType": "variable",
"element": "id",
"variable": "id"
}
],
"dependent": [
{
"name": "IdentifierII",
"variable": [
"identifier",
"id"
]
}
]
},
{
"name": "name",
"source": [
{
"context": "src",
"element": "name",
"variable": "name"
}
],
"target": [
{
"context": "tgt",
"contextType": "variable",
"element": "name",
"variable": "orgname"
},
{
"context": "orgname",
"contextType": "variable",
"element": "other",
"transform": "copy",
"parameter": [
{
"valueId": "name"
}
]
}
]
},
{
"name": "address",
"source": [
{
"context": "src",
"element": "address",
"variable": "address"
}
],
"target": [
{
"context": "tgt",
"contextType": "variable",
"element": "addr",
"variable": "ad"
}
],
"dependent": [
{
"name": "AddressAD",
"variable": [
"address",
"ad"
]
}
]
},
{
"name": "telecom",
"source": [
{
"context": "src",
"element": "telecom",
"variable": "telecom"
}
],
"target": [
{
"context": "tgt",
"contextType": "variable",
"element": "telecom",
"variable": "tel"
}
],
"dependent": [
{
"name": "ContactPointTEL",
"variable": [
"telecom",
"tel"
]
}
]
}
]
},
{
"name": "PractitionerLegalAuthenticator",
"typeMode": "none",
"input": [
{
"name": "bundle",
"type": "Bundle",
"mode": "source"
},
{
"name": "composition",
"type": "Composition",
"mode": "source"
},
{
"name": "src",
"type": "Practitioner",
"mode": "source"
},
{
"name": "tgt",
"type": "LegalAuthenticator",
"mode": "target"
}
],
"rule": [
{
"name": "templateId",
"source": [
{
"context": "src"
}
],
"target": [
{
"context": "tgt",
"contextType": "variable",
"element": "templateId",
"variable": "templateId"
},
{
"context": "templateId",
"contextType": "variable",
"element": "root",
"transform": "copy",
"parameter": [
{
"valueString": "2.16.756.5.30.1.1.10.2.5"
}
]
}
]
},
{
"name": "time",
"source": [
{
"context": "composition",
"element": "attester",
"variable": "attester"
}
],
"rule": [
{
"name": "timestamp",
"source": [
{
"context": "attester",
"element": "time",
"variable": "srcTime"
}
],
"target": [
{
"context": "tgt",
"contextType": "variable",
"element": "time",
"variable": "time"
}
],
"dependent": [
{
"name": "InstantTS",
"variable": [
"srcTime",
"time"
]
}
]
}
]
},
{
"name": "signature",
"source": [
{
"context": "src"
}
],
"target": [
{
"context": "tgt",
"contextType": "variable",
"element": "signatureCode",
"variable": "signatureCode"
},
{
"context": "signatureCode",
"contextType": "variable",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "S"
}
]
}
],
"documentation": "src -> tgt.signatureCode = 'S' \"S\";"
},
{
"name": "assignedEntity",
"source": [
{
"context": "src"
}
],
"target": [
{
"context": "tgt",
"contextType": "variable",
"element": "assignedEntity",
"variable": "assignedEntity"
}
],
"rule": [
{
"name": "identifier",
"source": [
{
"context": "src",
"element": "identifier",
"variable": "identifier"
}
],
"target": [
{
"context": "assignedEntity",
"contextType": "variable",
"element": "id",
"variable": "id"
}
],
"dependent": [
{
"name": "IdentifierII",
"variable": [
"identifier",
"id"
]
}
]
},
{
"name": "name",
"source": [
{
"context": "src",
"element": "name",
"variable": "name"
}
],
"target": [
{
"context": "assignedEntity",
"contextType": "variable",
"element": "assignedPerson",
"variable": "assignedPerson"
},
{
"context": "assignedPerson",
"contextType": "variable",
"element": "name",
"variable": "en"
}
],
"dependent": [
{
"name": "HumanNameEN",
"variable": [
"name",
"en"
]
}
]
}
]
}
]
}
]
}