ediverse Explorer la plateforme

À la une PEPPOL BIS Billing 3.0 L’obligation européenne d’e-invoicing arrive : France sept 2026, Belgique janv 2026, Allemagne 2025.

StructureMap — Mapping entre modèles de données

Le moteur de transformation FHIR : convertir HL7 v2 en FHIR, CDA en FHIR, FHIR R4 en R5, une ressource projet en sa version standardisée. Exprimé en FHIR Mapping Language.

Objet de la ressource

StructureMap décrit une transformation entre deux modèles de données. Le langage utilisé est le FHIR Mapping Language, conçu par HL7 pour ce besoin. La transformation est typiquement écrite par un intégrateur, validée par un éditeur, puis exécutée côté serveur par l'opération $transform.

Les serveurs FHIR Matchbox, HAPI Mapping Engine, IBM Mapping Server, et la plupart des intégrateurs de marché (Mirth Connect FHIR, Rhapsody) consomment StructureMap.

Champs clés

ChampTypeCardinalitéRôle
urluri1..1URL canonique.
identifierIdentifier[]0..*Identifiants métier.
versionstring0..1Version.
namestring1..1Nom technique.
statuscode1..1draft | active | retired | unknown.
structureBackboneElement[]0..*StructureDefinitions impliquées (source/target/queried/produced).
importcanonical[]0..*Autres StructureMaps importées.
constBackboneElement[]0..*Constantes utilisables dans les règles.
groupBackboneElement[]1..*Groupes de règles.
group.inputBackboneElement[]1..*Entrées du groupe.
group.ruleBackboneElement[]0..*Règles de mapping.

Exemple JSON

json structuremap-example.json
{
  "resourceType": "StructureMap",
  "id": "example-pid-to-patient",
  "url": "http://example.org/StructureMap/pid-to-patient",
  "version": "5.0.0",
  "name": "PIDToPatient",
  "status": "active",
  "structure": [{
    "url": "http://hl7.org/fhir/StructureDefinition/Patient",
    "mode": "target"
  }],
  "group": [{
    "name": "PIDtoPatient",
    "typeMode": "none",
    "input": [{
      "name": "source",
      "mode": "source"
    }, {
      "name": "target",
      "mode": "target"
    }],
    "rule": [{
      "name": "pid3-to-identifier",
      "source": [{
        "context": "source",
        "element": "PID-3"
      }],
      "target": [{
        "context": "target",
        "element": "identifier",
        "transform": "create",
        "parameter": [{ "valueString": "Identifier" }]
      }]
    }]
  }]
}

Opération $transform

  • POST /StructureMap/{id}/$transform avec une ressource source (Bundle, Parameters).
  • Le serveur applique les règles du StructureMap et retourne la ressource cible.
  • Permet d'exposer une conversion v2 → FHIR ou cross-version comme un service REST simple.

Pièges courants

  • FHIR Mapping Language en texte libre — toujours sérialiser en JSON pour exécution côté serveur.
  • Pas de structure — le serveur ne sait pas quels modèles attendre.
  • RuleId dupliqué — empêche les rules de relier proprement input/output.

Ressources liées