Cameleer

Health pack

The health pack (cameleer-health) adds healthcare integration to Cameleer: HL7 v2 over MLLP, FHIR R4, DICOM over DIMSE and DICOMweb, and PS3.15 de-identification, in the same single cameleer binary.

Crate: cameleer-health 0.6.0 · Cargo feature: health (not in full) · Image: pmsudhi/cameleer:health

Get it

you usecommand
Dockerdocker run --rm -v "$PWD:/routes:ro" pmsudhi/cameleer:health run /routes/route.camel.yaml (also :<version>-health, and on ghcr.io)
cargocargo install cameleer-main --features health
a small edge buildcargo build --profile dist -p cameleer-main --no-default-features --features "health,http2"
a release archivecameleer-health-<version>-<target>.tar.gz (or .zip)
Rustdepend on cameleer-health and call ctx.add_pack(&cameleer_health::HEALTH)

cameleer version shows the pack: Cameleer 0.5.1 + health 0.6.0 (core 0.5.1). In a build without it, a route that names mllp, fhir, dicom or dicomweb fails at start-up with a message naming the pack.

Verify a download

Every release archive comes with a SHA-256 file, a CycloneDX SBOM (.cdx.json) and, for releases, a Sigstore bundle (.sigstore.json) per file, signed by the release workflow:

sh
sha256sum -c cameleer-health-<version>-<target>.tar.gz.sha256
cosign verify-blob   --bundle cameleer-health-<version>-<target>.tar.gz.sigstore.json   --certificate-identity-regexp '^https://github.com/pmsudhi/cameleer/\.github/workflows/archives\.yml@refs/tags/v'   --certificate-oidc-issuer https://token.actions.githubusercontent.com   cameleer-health-<version>-<target>.tar.gz

The SBOM lists exactly the crates compiled into that binary: the cameleer-* crates and the Rust standard library, and no third-party crates. scripts/sbom.py writes it from cargo tree for any feature set, for example a pack-only edge build (--no-default-features --features health) or the cameleer-health crate on its own. The images carry their SBOM and build provenance as OCI attestations.

What it contains

crate featurecomponentsdata formatslanguages
hl7mllphl7hl7terser
fhirfhirfhirJson, fhirXml
dicomdicom, dicomwebdicom, dicomJson, dicomDeidentifydicom and ${dicom.*} in Simple

All three crate features are on by default; a Rust embedder can take only one (cameleer-health = { version = "0.6", default-features = false, features = ["dicom"] }).

The DICOM Conformance Statement (PS3.2 form, its tables generated from the code) lists the services, policies and profiles of this release. The DICOM guide explains the imaging parts end to end, with the conformance summary and what has been verified. The examples are in examples/medical/ and examples/edge/hl7-mllp-to-http.camel.yaml; they need the pack.

Example

yaml example: health-pack-hl7-to-fhir
- route:
    id: adt-to-fhir
    from:
      uri: "mllp://0.0.0.0:{{env:MLLP_PORT:2575}}"
      steps:
        - setHeader:
            name: PatientId
            hl7terser: PID-3-1
        - log: "ADT ${header.CamelMllpTriggerEvent} for patient ${header.PatientId}"
        - to: "log:adt"

Found a problem?

If something on this page doesn't match what Cameleer does, or you hit a bug while building with it, please help fix it, whether you are a person or a coding agent: open an issue that describes what you saw, then fork the repository, fix it, add or update a test, run cargo test --workspace, and open a pull request. CONTRIBUTING.md explains the ground rules.

Edit this page on GitHub