Data Management with FHIR
0.1.0 - ci-build
Data Management with FHIR - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
| Official URL: https://interop.aphp.fr/ig/fhir/dm/StructureMap/CoreBusiness2Physical | Version: 0.1.0 | |||
| Draft as of 2025-10-23 | Computable Name: CoreBusiness2Physical | |||
Alignement de l''expression de besoin vers le modèle physique du DPI dans le cadre de l''usage Core
map "https://interop.aphp.fr/ig/fhir/dm/StructureMap/CoreBusiness2Physical" = "CoreBusiness2Physical" // Alignement de l''expression de besoin vers le modèle physique du DPI dans le cadre de l''usage Core uses "http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse" alias QR as source uses "https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreDataSet" alias DataSet as target uses "https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CorePatient" alias PatientTable as target uses "https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreAddress" alias AddressTable as target uses "https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreSejour" alias SejourTable as target uses "https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreBiology" alias BiologyTable as target uses "https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreClinical" alias ClinicalTable as target uses "https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreDiag" alias DiagTable as target uses "https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreActe" alias ActeTable as target uses "https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreMedicationAdm" alias MedicationAdmTable as target uses "https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreMedicationPre" alias MedicationPreTable as target group init(source srcQR : QR, target tgtDS : DataSet) <<types>> { srcQR -> tgtDS.logicalId = uuid() "setId"; srcQR -> tgtDS.patient as tgtPatient, tgtDS.sejour as tgtSejour, tgtDS.biology as tgtBiol, tgtDS.clinical as tgtClin, tgtDS.medicationPre as tgtMedPre, tgtDS.medicationAdm as tgtMedAdm then { srcQR.subject as srcSubject then { srcSubject.identifier as srcSubjectIdentifier where system = 'https://dpi.exemple/Patient/PatientNi' then { srcSubjectIdentifier.value as srcSubjectId then { srcQR.item as srcSocioDemoDataItem where linkId = '4647259356106' then { srcSocioDemoDataItem -> tgtDS.patient = create('PatientTable') as newPatient then Patient(srcSubjectId, srcSocioDemoDataItem, newPatient) "setPatient"; srcSocioDemoDataItem.item as srcEnvItem where linkId = '5491974639955' -> tgtDS.address = create('AddressTable') as newAddress then Environement(srcSubjectId, srcEnvItem, newAddress) "setEnvironnement"; } "navigationToSocioDemoData"; srcQR.item as srcPMSIDataItem where linkId = '2825244231605' then { srcPMSIDataItem.item as srcPMSISexeItem where linkId = '3894630481120' then { srcPMSISexeItem.answer as srcPMSISexeAnswer then { srcPMSISexeAnswer.value : Coding as srcPMSISexeValueCoding -> tgtPatient.gender = (%srcPMSISexeValueCoding.code) "SetPMSISexeValue"; } "SetPMSISexeAnswer"; } "setPMSISexe"; srcPMSIDataItem.item as srcPMSIDiagItem where linkId = '9391816419630' -> tgtDS.diag = create('DiagTable') as newDiag then PMSIDiag(srcSubjectId, srcPMSIDiagItem, newDiag) "navigationToPMSIDiag"; srcPMSIDataItem.item as srcPMSIActeItem where linkId = '591926901726' -> tgtDS.acte = create('ActeTable') as newActe then PMSIActe(srcSubjectId, srcPMSIActeItem, newActe) "navigationToPMSIDiag"; } "navigationToPMSIData"; } "setIdentifierValue"; } "selectPatientIdentifier"; } "setPatientId"; } "setTgtVar"; } group Patient(source srcSubjectId, source srcSocioDemoDataItem, target newPatient : PatientTable) { srcSocioDemoDataItem.item as srcPatientIdItem where linkId = '2958000860428' then { srcPatientIdItem.item as srcNomItem where linkId = '8605698058770' then { srcNomItem.answer as srcNomAnswer then { srcNomAnswer.value : string as srcNomValue -> newPatient.name = srcNomValue "SetNomValue"; } "setNomAnswer"; } "setNom"; srcPatientIdItem.item as srcPrenomItem where linkId = '6214879623503' then { srcPrenomItem.answer as srcPrenomAnswer then { srcPrenomAnswer.value : string as srcPrenomValue -> newPatient.firstName = srcPrenomValue "SetPrenomValue"; } "setPrenomAnswer"; } "setPrenom"; srcPatientIdItem.item as srcNIRItem where linkId = '5711960356160' then { srcNIRItem.answer as srcNIRAnswer then { srcNIRAnswer.value : string as srcNIRValue -> newPatient.nir = srcNIRValue "SetNIRValue"; } "setNIRAnswer"; } "setNIR"; srcPatientIdItem.item as srcDDNItem where linkId = '5036133558154' then { srcDDNItem.answer as srcDDNAnswer then { srcDDNAnswer.value : date as srcDDNValue -> newPatient.birthDate = srcDDNValue "SetDDNValue"; } "setDDNAnswer"; } "setDDN"; srcPatientIdItem.item as srcDDDItem where linkId = '5036133558154' then { srcDDDItem.answer as srcDDDAnswer then { srcDDDAnswer.value : date as srcDDDValue "SetDDDValue"; } "setDDDAnswer"; srcDDDItem.item as srcDDDSourceItem where linkId = '9098810065693' then { srcDDDSourceItem.answer as srcDDDSourceAnswer then { srcDDDSourceAnswer.value : Coding as srcDDDSourceValue "SetDDDSourceValue"; } "setDDDSourceAnswer"; } "setDDDSource"; } "setDDD"; srcPatientIdItem.item as srcGemRankItem where linkId = '6931296968515' then { srcGemRankItem.answer as srcGemRankAnswer then { srcGemRankAnswer.value : integer as srcGemRankValue "SetGemRankValue"; } "SetGemRankAnswer"; } "SetGemRank"; } "navigationToPatientId"; } group Environement(source srcSubjectId, source srcEnvItem, target newAddress : AddressTable) { srcEnvItem.item as srcGeocodItem where linkId = '3816475533472' -> newAddress.patientNi as newAddressPatient then { srcGeocodItem -> newAddressPatient.reference = ('PatientCore/' + %srcSubjectId.toString()) "setAddressPatientRef"; srcGeocodItem.item as srcLatItem where linkId = '3709843054556' then { srcLatItem.answer as srcLatAnswer then { srcLatAnswer.value : decimal as srcLatValue -> newAddress.latitude = srcLatValue "SetLatValue"; } "setLatAnswer"; } "setLat"; srcGeocodItem.item as srcLongItem where linkId = '7651448032665' then { srcLongItem.answer as srcLongAnswer then { srcLongAnswer.value : decimal as srcLongValue -> newAddress.longitude = srcLongValue "SetLongValue"; } "setLongAnswer"; } "setLong"; srcGeocodItem.item as srcGeocodDateItem where linkId = '1185653257776' then { srcGeocodDateItem.answer as srcGeocodDateAnswer then { srcGeocodDateAnswer.value : date as srcGeocodDateValue "SetGeocodDateValue"; } "setGeocodDateAnswer"; } "setGeocodDate"; } "navigationToGeocod"; srcEnvItem.item as srcIrisItem where linkId = '7621032273792' then { srcIrisItem.answer as srcIrisAnswer then { srcIrisAnswer.value : Coding as srcIrisValue "SetIrisValue"; } "setIrisAnswer"; srcIrisItem.item as srcIrisDateItem where linkId = '4999580038872' then { srcIrisDateItem.answer as srcIrisDateAnswer then { srcIrisDateAnswer.value : date as srcIrisDateValue "SetIrisDateValue"; } "setIrisDateAnswer"; } "setIrisDate"; } "setIris"; } group PMSIDiag(source srcSubjectId, source srcPMSIDiagItem, target newDiag : DiagTable) { srcPMSIDiagItem -> newDiag.patientNi as newDiagPatient then { srcPMSIDiagItem -> newDiagPatient.reference = ('PatientCore/' + %srcSubjectId.toString()) "setDiagPatientRef"; } "setDiagPatient"; srcPMSIDiagItem.item as srcPMSIDiagDateItem where linkId = '7114466839467' then { srcPMSIDiagDateItem.answer as srcPMSIDiagDateAnswer then { srcPMSIDiagDateAnswer.value : date as srcPMSIDiagDateValue "SetPMSIDiagDateValue"; } "SetPMSIDiagDateAnswer"; } "SetPMSIDiagDate"; srcPMSIDiagItem.item as srcPMSIDiagTypeItem where linkId = '6427586743735' then { srcPMSIDiagTypeItem.answer as srcPMSIDiagTypeAnswer then { srcPMSIDiagTypeAnswer.value : Coding as srcPMSIDiagTypeValueCoding -> newDiag.codeType = (%srcPMSIDiagTypeValueCoding.display) "SetPMSIDiagTypeValue"; } "SetPMSIDiagTypeAnswer"; } "SetPMSIDiagType"; srcPMSIDiagItem.item as srcPMSIDiagCodeItem where linkId = '5505101189372' then { srcPMSIDiagCodeItem.answer as srcPMSIDiagCodeAnswer then { srcPMSIDiagCodeAnswer.value : Coding as srcPMSIDiagCodeValueCoding -> newDiag.code = (%srcPMSIDiagCodeValueCoding.code) "SetPMSIDiagCodeValue"; } "SetPMSIDiagCodeAnswer"; } "SetPMSIDiagCode"; } group PMSIActe(source srcSubjectId, source srcPMSIActeItem, target newActe : ActeTable) { srcPMSIActeItem -> newActe.patientNi as newActePatient then { srcPMSIActeItem -> newActePatient.reference = ('PatientCore/' + %srcSubjectId.toString()) "setActePatientRef"; } "setActePatient"; srcPMSIActeItem.item as srcPMSIActeDateRecItem where linkId = '9436509453137' then { srcPMSIActeDateRecItem.answer as srcPMSIActeDateRecAnswer then { srcPMSIActeDateRecAnswer.value : date as srcPMSIActeDateRecValue "SetPMSIActeDateRecValue"; } "SetPMSIActeDateRecAnswer"; } "SetPMSIActeDateRec"; srcPMSIActeItem.item as srcPMSIActeDateItem where linkId = '5066866286682' then { srcPMSIActeDateItem.answer as srcPMSIActeDateAnswer then { srcPMSIActeDateAnswer.value : dateTime as srcPMSIActeDateValue -> newActe.dateStart = srcPMSIActeDateValue, newActe.dateEnd = srcPMSIActeDateValue "SetPMSIActeDateValue"; } "SetPMSIActeDateAnswer"; } "SetPMSIActeDate"; srcPMSIActeItem.item as srcPMSIActeCodeItem where linkId = '7758110033600' then { srcPMSIActeCodeItem.answer as srcPMSIActeCodeAnswer then { srcPMSIActeCodeAnswer.value : Coding as srcPMSIActeCodeValueCoding -> newActe.code = (%srcPMSIActeCodeValueCoding.code) "SetPMSIActeCodeValue"; } "SetPMSIActeCodeAnswer"; } "SetPMSIActeCode"; }