Cumuluz Translate Implementation Guide
0.1.0 - ci-build
Cumuluz Translate Implementation Guide - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
These are the concrete translation rules used by the runtime.
Each map is a checked-in .map source file. The runtime loads them directly, so the IG should make them easy to inspect rather than hiding them behind prose.
The map files are grouped by route family:
bgz2017-to-logical/ for BgZ STU3 source contentnlcore2017-to-logical/ for Dutch nl-core source-side reuse routeszib2017-to-logical/ for zib source-side reuse routeslogical-to-nlcore/ for logical to Dutch R4 target mapslogical-to-eubase/ for logical to European R4 target mapslogical-to-eps/ for EPS maps layered on the EU Base mapslogical-to-r4/ for logical to plain R4 where no profile-specific target is usedpzp2017-to-logical/ for PZP 2017 ACP source profileslogical-to-pzp/ for logical to PZP 2020 ACP target profilespzp-questionnaire/ for the currently registered PZP ACP QuestionnaireResponse normalization and extraction-entry selectionshared/ for datatype helper rules shared across routeseafspraak2017-to-logical/ for the supported appointment source routesrc/main/resources/mappings/structuremaps/bgz2017-to-logical/Bgz2017PatientToLogicalPatient.mapsrc/main/resources/mappings/structuremaps/nlcore2017-to-logical/Nlcore2017PatientToLogicalPatient.mapsrc/main/resources/mappings/structuremaps/zib2017-to-logical/Zib2017PatientToLogicalPatient.mapsrc/main/resources/mappings/structuremaps/pzp2017-to-logical/Pzp2017PatientToLogicalPatient.mapsrc/main/resources/mappings/structuremaps/logical-to-nlcore/LogicalPatientToNlcorePatient.mapsrc/main/resources/mappings/structuremaps/logical-to-eubase/LogicalPatientToEubasePatient.mapsrc/main/resources/mappings/structuremaps/logical-to-pzp/LogicalPatientToPzp2020Patient.mapsrc/main/resources/mappings/structuremaps/bgz2017-to-logical/Bgz2017ProblemToLogicalProblem.mapsrc/main/resources/mappings/structuremaps/nlcore2017-to-logical/Nlcore2017ProblemToLogicalProblem.mapsrc/main/resources/mappings/structuremaps/zib2017-to-logical/Zib2017ProblemToLogicalProblem.mapsrc/main/resources/mappings/structuremaps/logical-to-nlcore/LogicalProblemToNlcoreProblem.mapsrc/main/resources/mappings/structuremaps/logical-to-eubase/LogicalProblemToEubaseCondition.mapsrc/main/resources/mappings/structuremaps/bgz2017-to-logical/Bgz2017ProcedureToLogicalProcedure.mapsrc/main/resources/mappings/structuremaps/nlcore2017-to-logical/Nlcore2017ProcedureToLogicalProcedure.mapsrc/main/resources/mappings/structuremaps/zib2017-to-logical/Zib2017ProcedureToLogicalProcedure.mapsrc/main/resources/mappings/structuremaps/pzp2017-to-logical/Pzp2017ProcedureToLogicalProcedure.mapsrc/main/resources/mappings/structuremaps/logical-to-nlcore/LogicalProcedureToNlcoreProcedureEvent.mapsrc/main/resources/mappings/structuremaps/logical-to-eubase/LogicalProcedureToEubaseProcedure.mapsrc/main/resources/mappings/structuremaps/logical-to-pzp/LogicalProcedureToPzp2020Procedure.mapsrc/main/resources/mappings/structuremaps/bgz2017-to-logical/Bgz2017FunctionalOrMentalStatusToLogicalFunctionalOrMentalStatus.mapsrc/main/resources/mappings/structuremaps/nlcore2017-to-logical/Nlcore2017FunctionalOrMentalStatusToLogicalFunctionalOrMentalStatus.mapsrc/main/resources/mappings/structuremaps/zib2017-to-logical/Zib2017FunctionalOrMentalStatusToLogicalFunctionalOrMentalStatus.mapsrc/main/resources/mappings/structuremaps/logical-to-nlcore/LogicalFunctionalOrMentalStatusToNlcoreFunctionalOrMentalStatus.mapsrc/main/resources/mappings/structuremaps/logical-to-eubase/LogicalFunctionalOrMentalStatusToEubaseMedicalTestResult.mapsrc/main/resources/mappings/structuremaps/zib2017-to-logical/Zib2017AllergyIntoleranceToLogicalAllergyIntolerance.mapsrc/main/resources/mappings/structuremaps/logical-to-nlcore/LogicalAllergyIntoleranceToNlcoreAllergyIntolerance.mapsrc/main/resources/mappings/structuremaps/logical-to-eubase/LogicalAllergyIntoleranceToEubaseAllergyIntolerance.mapsrc/main/resources/mappings/structuremaps/zib2017-to-logical/Zib2017EncounterToLogicalEncounter.mapsrc/main/resources/mappings/structuremaps/pzp2017-to-logical/Pzp2017EncounterToLogicalEncounter.mapsrc/main/resources/mappings/structuremaps/logical-to-nlcore/LogicalEncounterToNlcoreEncounter.mapsrc/main/resources/mappings/structuremaps/logical-to-pzp/LogicalEncounterToPzp2020Encounter.mapsrc/main/resources/mappings/structuremaps/nlcore2017-to-logical/Nlcore2017CareTeamToLogicalCareTeam.mapsrc/main/resources/mappings/structuremaps/logical-to-nlcore/LogicalCareTeamToNlcoreCareTeam.mapsrc/main/resources/mappings/structuremaps/eafspraak2017-to-logical/Eafspraak2017AppointmentToLogicalAppointment.mapsrc/main/resources/mappings/structuremaps/logical-to-r4/LogicalAppointmentToR4Appointment.mapsrc/main/resources/mappings/structuremaps/zib2017-to-logical/Zib2017MedicationAgreementToLogicalMedicationRequest.mapsrc/main/resources/mappings/structuremaps/zib2017-to-logical/Zib2017MedicationUseToLogicalMedicationStatement.mapsrc/main/resources/mappings/structuremaps/zib2017-to-logical/Zib2017AdministrationAgreementToLogicalMedicationDispense.mapsrc/main/resources/mappings/structuremaps/logical-to-eubase/LogicalMedicationRequestToEubaseMedicationRequest.mapsrc/main/resources/mappings/structuremaps/logical-to-eubase/LogicalMedicationStatementToEubaseMedicationStatement.mapsrc/main/resources/mappings/structuremaps/logical-to-r4/LogicalMedicationDispenseToR4MedicationDispense.mapsrc/main/resources/mappings/structuremaps/logical-to-eps/LogicalPatientToEpsPatient.mapsrc/main/resources/mappings/structuremaps/logical-to-eps/LogicalProblemToEpsCondition.mapsrc/main/resources/mappings/structuremaps/logical-to-eps/LogicalProcedureToEpsProcedure.mapsrc/main/resources/mappings/structuremaps/logical-to-eps/LogicalAllergyIntoleranceToEpsAllergyIntolerance.mapsrc/main/resources/mappings/structuremaps/logical-to-eps/LogicalMedicationRequestToEpsMedicationRequest.mapsrc/main/resources/mappings/structuremaps/logical-to-eps/LogicalMedicationStatementToEpsMedicationStatement.mapsrc/main/resources/mappings/structuremaps/logical-to-eps/LogicalConsentToEpsConsent.mapsrc/main/resources/mappings/structuremaps/logical-to-eps/LogicalPractitionerToEpsPractitioner.mapsrc/main/resources/mappings/structuremaps/logical-to-eps/LogicalPractitionerRoleToEpsPractitionerRole.mapsrc/main/resources/mappings/structuremaps/logical-to-eps/LogicalDeviceToEpsDevice.mapsrc/main/resources/mappings/structuremaps/logical-to-eps/LogicalDeviceUseStatementToEpsDeviceUseStatement.mapThe EPS maps reuse logical-to-eubase maps or neutral shared logical-to-R4 copy groups. They do not import PZP target maps.
src/main/resources/mappings/structuremaps/bgz2017-to-logical/Bgz2017MetaDataToLogicalMetadata.mapsrc/main/resources/mappings/structuremaps/logical-to-r4/LogicalMetadataToR4Provenance.mapsrc/main/resources/mappings/structuremaps/pzp2017-to-logical/Pzp2017ConsentToLogicalConsent.mapsrc/main/resources/mappings/structuremaps/pzp2017-to-logical/Pzp2017RelatedPersonToLogicalRelatedPerson.mapsrc/main/resources/mappings/structuremaps/pzp2017-to-logical/Pzp2017PractitionerToLogicalPractitioner.mapsrc/main/resources/mappings/structuremaps/pzp2017-to-logical/Pzp2017PractitionerRoleToLogicalPractitionerRole.mapsrc/main/resources/mappings/structuremaps/pzp2017-to-logical/Pzp2017CommunicationRequestToLogicalCommunicationRequest.mapsrc/main/resources/mappings/structuremaps/pzp2017-to-logical/Pzp2017DeviceToLogicalDevice.mapsrc/main/resources/mappings/structuremaps/pzp2017-to-logical/Pzp2017DeviceUseStatementToLogicalDeviceUseStatement.mapsrc/main/resources/mappings/structuremaps/pzp2017-to-logical/Pzp2017GoalToLogicalGoal.mapsrc/main/resources/mappings/structuremaps/pzp2017-to-logical/Pzp2017ObservationToLogicalObservation.mapsrc/main/resources/mappings/structuremaps/logical-to-pzp/LogicalConsentToPzp2020Consent.mapsrc/main/resources/mappings/structuremaps/logical-to-pzp/LogicalConsentToPzp2020AdvanceDirective.mapsrc/main/resources/mappings/structuremaps/logical-to-pzp/LogicalConsentToPzp2020TreatmentDirective.mapsrc/main/resources/mappings/structuremaps/logical-to-pzp/LogicalRelatedPersonToPzp2020RelatedPerson.mapsrc/main/resources/mappings/structuremaps/logical-to-pzp/LogicalPractitionerToPzp2020Practitioner.mapsrc/main/resources/mappings/structuremaps/logical-to-pzp/LogicalPractitionerRoleToPzp2020PractitionerRole.mapsrc/main/resources/mappings/structuremaps/logical-to-pzp/LogicalCommunicationRequestToPzp2020CommunicationRequest.mapsrc/main/resources/mappings/structuremaps/logical-to-pzp/LogicalDeviceToPzp2020Device.mapsrc/main/resources/mappings/structuremaps/logical-to-pzp/LogicalDeviceUseStatementToPzp2020DeviceUseStatement.mapsrc/main/resources/mappings/structuremaps/logical-to-pzp/LogicalGoalToPzp2020Goal.mapsrc/main/resources/mappings/structuremaps/logical-to-pzp/LogicalObservationToPzp2020Observation.mapsrc/main/resources/mappings/structuremaps/pzp-questionnaire/Pzp2017QuestionnaireResponseToLogicalQuestionnaireForm.mapsrc/main/resources/mappings/structuremaps/pzp-questionnaire/Pzp2020QuestionnaireResponseToLogicalQuestionnaireForm.mapsrc/main/resources/mappings/structuremaps/pzp-questionnaire/PzpQuestionnaireAnswerCopies.mapsrc/main/resources/mappings/structuremaps/pzp-questionnaire/LogicalQuestionnaireFormToExtractionBundle.mapThese maps do not directly produce final PZP 2020 resources. They normalize a completed PZP form and create extraction entries with logical clinical resource bodies. The generic manifest-driven assembler runs those logical resources through the existing logical-to-PZP 2020 maps.
Supporting maps are also part of the concrete runtime:
src/main/resources/mappings/structuremaps/shared/FhirDatatypeCopies.mapQuestionnaireResponse extraction also uses local ConceptMaps under src/main/resources/mappings/conceptmaps for answer-to-boolean conversion, code display normalization, default codings, UZI specialty normalization, treatment directive mapping, contact-point use, and observation method mapping.
The maps typically follow the same shape:
That pattern is deliberate. It keeps source semantics, intermediate semantics, and target semantics visible as separate steps.
The .map files use FHIR StructureMap syntax and HAPI parses them as StructureMap resources.
Execution is local to this translator: CumuluzStructureMapEngine walks the parsed maps and implements the subset needed for deterministic writes into typed R4 targets, local logical models, ConceptMap-backed translate(...), and direct target-child bindings.
Do not assume these maps are drop-in portable to another StructureMap engine.
Another engine may parse most files, but it would need equivalent runtime support for the local logical StructureDefinitions, the STU3-shaped ingest context, local ConceptMaps, and the target-write behavior used by the local executor.