Veröffentlicht: 23.01.2024. 🔗 Permalink

Wie und warum ConceptMap/$closure verwenden

Die FHIR-Services $expand, $lookup, $validate-code, $subsumes, $translate decken bereits viele Use Cases ab. Allerdings können diese keine Terminologie-basierte Logik in ihren Anfragen integrieren bzw. logische Schlussfolgerungen ermöglichen. Dies ist jedoch in einigen Fällen von Relevanz und wird durch den FHIR-Service $closure ermöglicht. Der Ansatz des FHIR-Services $closure ermöglicht die die Generierung einer Tabelle (ConceptMap) basierend auf einer transitive Hülle, welche alle transitiven Subsumptionbeziehungen enthält. Somit beinhaltet die transitive Hülle die Relationen zwischen jedem Konzept und allen übergeordneten Konzepten bzw. Vorfahren. Als Beispiel sind folgende Relationen von ICD-10-Codes gegeben:

  • E11 ist ein übergeordnetes Konzept von E11.9
  • E11.9 ist ein übergeordnetes Konzept von E11.91.

Die transitive Hülle enthält weiterhin die Relationen mit indirekten übergeordneten Konzepten. In dem Beispiel wäre dies:

  • E11 ist ein übergeordnetes Konzept von E11.91.

Zusammenfassend ist der Ansatz der transativen Hülle und somit die Verwendung des FHIR Services $closure ist eine sehr effiziente Methode, um die Subsumption zwischen Konzepten zu überprüfen. Dies kann zur einer signifikanten Verbesserung der Performance von Systemen im Vergleich zur iterativen Anfrage von $subsumes führen, gerade bei der Analyse von Daten großer Terminologien.

Um eine $closure-Anfrage durchführen zu können, muss zuerst die Tabelle (ConceptMap) für die transitive Hülle initialisiert werden, in dem ein Name für diese definiert wird. Hierfür wird eine POST-Anfrage an {url_server}/$closure gestellt, wobei closure-TermServ als beispielhafter Name gewählt wurde:

{
  "resourceType" : "Parameters",
   "parameter" : [{
     "name" : "name",
     "valueString" : "closure-TermServ"
  }]
}

Im Anschluss müssen die Konzepte eines CodeSystem, auf die $closure angewendet werden soll, angegeben werden. In dem hier dargestellten Beispiel sind dies übersichtshalber folgende drei ICD-10-GM-Codes:

  • E11 (Diabetes mellitus, Typ 2)
  • E11.91 (Diabetes mellitus, Typ 2 : Ohne Komplikationen : Als entgleist bezeichnet)
  • K29.7 (Gastritis, nicht näher bezeichnet)

Es sind allerdings auch ganze CodeSystems möglich. Die POST-Anfrage an {url_server}/$closure sieht wie folgt aus:

{
  "resourceType" : "Parameters",
  "parameter" : [{
    "name" : "name",
    "valueString" : "closure-test-termServX"
  }, {
    "name" : "concept",
    "valueCoding" : {
       "system" : "http://fhir.de/CodeSystem/bfarm/icd-10-gm",
       "code" : "E11.91",
       "display" : "Diabetes mellitus, Typ 2 : Ohne Komplikationen : Als entgleist bezeichnet"
    }
  }, {
    "name" : "concept",
    "valueCoding" : {
       "system" : "http://fhir.de/CodeSystem/bfarm/icd-10-gm",
       "code" : "E11",
       "display" : "Diabetes mellitus, Typ 2"
    }
  }, {
    "name" : "concept",
    "valueCoding" : {
       "system" : "http://fhir.de/CodeSystem/bfarm/icd-10-gm",
       "code" : "K29.7",
       "display" : "Gastritis, nicht näher bezeichnet"
    }
  }
  ]
}

Als Ergebnis liefert die Anfrage folgende ConceptMap:

{
    "resourceType": "ConceptMap",
    "version": "2",
    "name": "closure-termServ",
    "status": "active",
    "experimental": false,
    "date": "2024-01-22T13:41:10+00:00",
    "group": [
        {
            "source": "http://fhir.de/CodeSystem/bfarm/icd-10-gm",
            "sourceVersion": "2023",
            "target": "http://fhir.de/CodeSystem/bfarm/icd-10-gm",
            "targetVersion": "2023",
            "element": [
                {
                    "code": "E11.91",
                    "target": [
                        {
                            "code": "E11",
                            "equivalence": "subsumes"
                        }
                    ]
                }
            ]
        }
    ]
}

Hier wird sichtbar, dass zwischen den beiden ICD-10-Codes E11.91 und E11 eine Subsumptionsbeziehung ermittelt wurde. Der ICD-10-Code K27.9 hingegen steht in keiner Relation zu den beiden anderen Codes. Aus diesem Grund ist der ICD-10-Code K27.9 auch nicht in der ConceptMap enthalten.

Es ist zu beachten, dass eine ConceptMap nur zurückgeliefert wird, wenn sich die Terminologiebedingungen verändert haben. Beispiele hierfür sind das Hinzufügen von neuen Codes oder einer anderen Version für die Codes. Sollten keine Änderungen erfolgt sein, sieht das Ergebnis wie folgt aus:

{
    "resourceType": "ConceptMap",
    "version": "3",
    "name": "closure-termServ",
    "status": "active",
    "experimental": false,
    "date": "2024-01-22T13:50:17+00:00"
}

Quellen: