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
Local JVM:
./gradlew run
Docker image:
docker run --rm -p 8080:8080 dev.cumuluz.org:5000/cumuluz-public/cumuluz-translate:latest
Local compose:
docker compose up --build
Health check:
curl http://localhost:8080/health
Expected response:
ok
The public prototype deployment uses the same paths at:
https://translate-alpha.cumuluz.dev| Your input | Operation |
|---|---|
| Supported BgZ 2017 STU3 resource | POST /fhir/stu3-r4/$transform |
| Supported PZP 2017 ACP resource | POST /fhir/stu3-r4/$transform |
| Supported STU3 Bundle | POST /fhir/stu3-r4/$transform |
| Supported PZP 2017 ACP resource to Dutch STU3 | POST /fhir/stu3/$transform |
| Supported R4 resource to Dutch STU3 | POST /fhir/r4-stu3/$transform |
| Supported R4 resource to another R4 profile | POST /fhir/r4/$transform |
| Completed supported PZP ACP QuestionnaireResponse | POST /fhir/$extract-questionnaire-response |
| Already translated R4 resource | POST /fhir/r4/$validate |
The service uses FHIR JSON. application/fhir+json is the preferred content type.
Resource translations always use a registered sourceProfile -> logical model -> targetProfile route. Choose the endpoint by source and target FHIR version, then use the translation indexes to confirm the exact profile pair.
Submit the included BgZ Patient request:
curl -sS \
-H 'Content-Type: application/fhir+json' \
--data @ig/input/examples/patient-transform-request.json \
'http://localhost:8080/fhir/stu3-r4/$transform'
The response is a FHIR Parameters resource with:
| Parameter | Meaning |
|---|---|
result |
translated R4 resource or Bundle |
targetProfile |
target profile route that was applied |
translationReport |
mapped, changed, added, and deleted value report |
logical |
intermediate logical model when returnLogical=true |
outcome |
R4 validation diagnostics for enforce or report mode |
This shows the envelope only. Real payloads must carry enough data to satisfy the requested source and target profiles.
{
"resourceType": "Parameters",
"parameter": [
{
"name": "source",
"resource": {
"resourceType": "Patient",
"meta": {
"profile": [
"http://nictiz.nl/fhir/StructureDefinition/BgZ-Patient"
]
}
}
},
{
"name": "sourceProfile",
"valueCanonical": "http://nictiz.nl/fhir/StructureDefinition/BgZ-Patient"
},
{
"name": "targetProfile",
"valueCanonical": "http://nictiz.nl/fhir/StructureDefinition/nl-core-Patient"
},
{
"name": "validationMode",
"valueCode": "none"
}
]
}
Use extraction when the input is a completed form and one form can produce multiple target resources.
curl -sS \
-H 'Content-Type: application/fhir+json' \
-d @questionnaire-response.json \
'http://localhost:8080/fhir/$extract-questionnaire-response'
Minimal request shape:
{
"resourceType": "Parameters",
"parameter": [
{
"name": "questionnaireResponse",
"resource": {
"resourceType": "QuestionnaireResponse",
"questionnaire": "https://api.iknl.nl/docs/pzp/r4/Questionnaire/ACP-zib2020",
"status": "completed"
}
},
{
"name": "validate",
"valueBoolean": true
}
]
}
The response is a FHIR Parameters resource with an R4 Bundle result and an OperationOutcome.
Use standalone validation when you already have an R4 resource.
curl -sS \
-H 'Content-Type: application/fhir+json' \
--data @ig/input/examples/patient-validate-request.json \
'http://localhost:8080/fhir/r4/$validate'
Validation returns an OperationOutcome. HTTP 200 means the validation operation ran; clients still need to inspect error and fatal issues.
| Question | Endpoint |
|---|---|
| Which transform parameters exist? | GET /fhir/stu3-r4/OperationDefinition/bgz-transform |
| Which route pairs are supported? | GET /fhir/stu3-r4/translation-index |
| Which STU3 transform parameters exist? | GET /fhir/stu3/OperationDefinition/stu3-transform |
| Which STU3-to-STU3 route pairs are supported? | GET /fhir/stu3/translation-index |
| Which reverse transform parameters exist? | GET /fhir/r4-stu3/OperationDefinition/r4-stu3-transform |
| Which reverse route pairs are supported? | GET /fhir/r4-stu3/translation-index |
| Which R4 transform parameters exist? | GET /fhir/r4/OperationDefinition/r4-transform |
| Which R4-to-R4 route pairs are supported? | GET /fhir/r4/translation-index |
| Which extraction parameters exist? | GET /fhir/OperationDefinition/extract-questionnaire-response |
| Which R4 profiles can be translated or validated? | GET /fhir/r4/metadata |
| File | Purpose |
|---|---|
ig/input/examples/patient-transform-request.json |
BgZ Patient transform request |
ig/input/examples/patient-transform-response.json |
matching transform response shape |
ig/input/examples/bundle-transform-request.json |
Bundle transform request with entry target overrides |
ig/input/examples/patient-validate-request.json |
standalone validation request |
ig/input/examples/patient-validate-response.json |
validation success response |
ig/input/examples/patient-validate-response-fail.json |
validation failure response |