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: