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.

ConceptMap — Mapping entre terminologies

Le pont entre deux univers de codes. ICD-10 vers SNOMED CT, LOINC vers CCAM, RxNorm vers ATC, NDC vers EAN : ConceptMap est la table de translation.

Objet de la ressource

ConceptMap est la table de mapping entre deux référentiels de codes : deux CodeSystem, deux ValueSet, ou des combinaisons. Elle est utilisée pour traduire un code d'un système A vers son équivalent (ou son équivalent approché) dans un système B.

Les serveurs terminologiques (Snowstorm, HAPI Terminology, Ontoserver, Fhir-Term) exposent typiquement l'opération $translate qui consomme un ConceptMap.

Champs clés

ChampTypeCardinalitéRôle
urluri0..1URL canonique.
identifierIdentifier[]0..*Identifiants métier.
versionstring0..1Version.
namestring0..1Nom technique.
titlestring0..1Titre humain.
statuscode1..1draft | active | retired | unknown.
sourceScopeUri | sourceScopeCanonicaluri | canonical0..1Source du mapping (ValueSet, CodeSystem).
targetScopeUri | targetScopeCanonicaluri | canonical0..1Cible du mapping.
groupBackboneElement[]0..*Groupes de mappings (par paire source/target).
group.elementBackboneElement[]0..*Source d'un mapping (code + target).
group.element.targetBackboneElement[]0..*Cible avec relationship (equivalent | source-is-narrower-than-target | source-is-broader-than-target | related-to | not-related-to).
group.unmappedBackboneElement0..1Stratégie pour les codes non mappés (fixed, other-map).
propertyBackboneElement[]0..*Propriétés ad-hoc.

Exemple JSON

json conceptmap-example.json
{
  "resourceType": "ConceptMap",
  "id": "icd10-to-snomedct",
  "url": "http://example.org/ConceptMap/icd10-to-snomedct",
  "version": "5.0.0",
  "name": "Icd10ToSnomedCT",
  "title": "ICD-10 to SNOMED CT mapping",
  "status": "active",
  "experimental": false,
  "date": "2026-05-15",
  "publisher": "HL7 International (Terminology Authority)",
  "sourceScopeUri": "http://hl7.org/fhir/ValueSet/icd-10",
  "targetScopeUri": "http://hl7.org/fhir/ValueSet/snomedct-all",
  "group": [{
    "source": "http://hl7.org/fhir/sid/icd-10",
    "target": "http://snomed.info/sct",
    "element": [{
      "code": "I48.0",
      "display": "Paroxysmal atrial fibrillation",
      "target": [{
        "code": "440059007",
        "display": "Paroxysmal atrial fibrillation",
        "relationship": "equivalent"
      }]
    }]
  }]
}

Opération $translate

  • GET /ConceptMap/$translate?url=…&system=…&code=…
  • Retourne un Parameters avec la liste des matches et leur relationship.
  • Permet aussi de qualifier le contexte : targetSystem, reverse.

Pièges courants

  • Relation absente — par défaut, beaucoup d'outils interprètent comme equivalent, ce qui est faux.
  • Mapping unidirectionnel — un mapping ICD-10 → SNOMED CT n'est PAS l'inverse de SNOMED CT → ICD-10.
  • Unmapped absent — comment se comporter face à un code source inconnu ?

Ressources liées