Prozedur (Procedure)


Motivation

Die Möglichkeit auf eine Übersicht der Prozeduren eines Patienten zuzugreifen, Patienten anhand durchgeführter oder geplanter Prozeduren zu suchen, oder zu prüfen, ob eine konkrete Prozedur bei einem Patienten durchgeführt wurde, sind wichtige Funktionen im klinischen Behandlungsablauf.

In FHIR werden Prozeduren mit der Procedure-Ressource repräsentiert.

Da die Prozeduren in klinischen Primärsystemen, in der Regel, in OPS-codierter Form vorliegen, fordert ISiK in erster Linie diese Form des Austausches. Falls eine Prozedur zwar dokumentiert aber noch nicht codiert wurde (z.B. wenn die Kodierung erst nach der Entlassung erfolgt), ist alternativ eine Repräsentation als Freitext-Prozedur möglich.


Kompatibilität

Für das Profil ISIKProzedur wird eine Kompatibilität mit folgenden Profilen angestrebt; allerdings kann nicht sichergestellt werden, dass Instanzen, die gegen ISIKProzedur valide sind, auch valide sind gegen:

Hinweise zu Inkompatibilitäten können über die Portalseite gemeldet werden..


Profil

NameCanonical
ISiKProzedurhttps://gematik.de/fhir/isik/StructureDefinition/ISiKProzedur

idS Σ0..1string
metaΣ0..1Meta
implicitRulesΣ ?!0..1uri
language0..1codeBinding
text0..1Narrative
contained0..*Resource
DokumentationsdatumS I0..1Extension
modifierExtension?! I0..*Extension
identifierΣ0..*Identifier
instantiatesCanonicalΣ0..*canonical(PlanDefinition | ActivityDefinition | Measure | OperationDefinition | Questionnaire)
instantiatesUriΣ0..*uri
basedOnΣ I0..*Reference(CarePlan | ServiceRequest)
partOfΣ I0..*Reference(Procedure | Observation | MedicationAdministration)
statusS Σ ?!1..1codeBinding
statusReasonΣ0..1CodeableConcept
id0..1string
extensionI0..*Extension
SNOMED-CTS Σ0..1ISiKSnomedCTCodingBinding
textΣ0..1string
id0..1string
extensionI0..*Extension
id0..1string
SeitenlokalisationS I0..*Extension
systemS Σ0..1uri
versionS Σ0..1string
codeS Σ0..1code
displayΣ0..1string
userSelectedΣ0..1boolean
SNOMED-CTS Σ0..1ISiKSnomedCTCodingBinding
textS Σ0..1string
id0..1string
extensionI0..*Extension
referenceS Σ I1..1string
typeΣ0..1uriBinding
identifierΣ0..1Identifier
displayΣ0..1string
encounterS Σ I0..1Reference(Encounter)
performedDateTimedateTime
performedPeriodPeriod
recorderΣ I0..1Reference(Patient | RelatedPerson | Practitioner | PractitionerRole)
asserterΣ I0..1Reference(Patient | RelatedPerson | Practitioner | PractitionerRole)
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
functionΣ0..1CodeableConcept
actorΣ I1..1Reference(Practitioner | PractitionerRole | Organization | Patient | RelatedPerson | Device)
onBehalfOfI0..1Reference(Organization)
locationΣ I0..1Reference(Location)
reasonCodeΣ0..*CodeableConcept
reasonReferenceΣ I0..*Reference(Condition | Observation | Procedure | DiagnosticReport | DocumentReference)
bodySiteΣ0..*CodeableConcept
outcomeΣ0..1CodeableConcept
reportI0..*Reference(DiagnosticReport | DocumentReference | Composition)
complication0..*CodeableConcept
complicationDetailI0..*Reference(Condition)
followUp0..*CodeableConcept
noteS0..*Annotation
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
action0..1CodeableConceptBinding
manipulatedI1..1Reference(Device)
usedReferenceI0..*Reference(Device | Medication | Substance)
usedCode0..*CodeableConcept


Constraints

Folgende FHIRPath-Constraints sind im Profil zu beachten:

keyseverityhumanexpression
proc-ISiK-1errorFalls die Prozedur per OPS kodiert wird, MUSS eine SNOMED-CT kodierte Category abgebildet werdencode.coding.where(system = 'http://fhir.de/CodeSystem/bfarm/ops').exists() implies category.coding.where(system = 'http://snomed.info/sct').exists()
proc-ISiK-2errorFalls eine codierte Prozedur vorliegt MUSS eine kodierte Category abgebildet werdencode.coding.exists() implies category.coding.exists()
sct-ops-1errorFalls die Prozedur kodiert vorliegt, SOLL mindestens ein OPS oder SNOMED-CT Code angegeben werden. Liegt die Prozedur nicht kodiert vor SOLL Freitext angegeben werden.coding.exists() implies coding.where(system = 'http://snomed.info/sct').exists() or coding.where(system = 'http://fhir.de/CodeSystem/bfarm/ops').exists()
proc-ISiK-3errorEntweder MUSS eine kodierte Prozedur vorliegen oder eine textuelle Beschreibung. Stattdessen nur Extensions hinzuzufügen (vgl. https://www.hl7.org/fhir/element.html - ele-1), ist explizit nicht erlaubt.coding.exists().not() implies text.exists()

Terminology Bindings

PathNameStrengthURL
Procedure.category.codingProzedurenKategorieSCTpreferredhttps://gematik.de/fhir/isik/ValueSet/ProzedurenKategorieSCT
Procedure.code.codingbfarm/opsrequiredhttp://fhir.de/ValueSet/bfarm/ops
Procedure.code.codingProzedurenCodesSCTrequiredhttps://gematik.de/fhir/isik/ValueSet/ProzedurenCodesSCT

Anmerkungen zu den Must-Support Feldern

Procedure.extension:recordedDate

Bedeutung: Das Dokumentationsdatum der Prozedur MUSS zu Qualitätssicherungszwecken angegeben werden. Dies ist das fachliche Dokumentationsdatum, nicht zu verwechseln mit der technischen Anlage des Datensatzes im Primärsystem. Diese beiden Daten können jedoch identisch sein.

Procedure.status

Bedeutung: Kodierter klinischer Status der Prozedur. MUSS angegeben werden, da die Interpretation der Prozedur davon abhängt, ob diese 'completed' ist oder einen anderen Status aufweist. Alle in einem System möglichen Status-Werte müssen über FHIR korrekt repräsentiert werden können, mindestens jedoch die Status-Werte "completed" und "unknown". Deren korrekte Abbildung wird im Rahmen des Bestätigungsverfahrens überprüft.

Procedure.category

Bedeutung: Zur groben Kategorisierung MUSS eine Kodierung auf Basis der OPS-Klassencodes erfolgen. Eine ConceptMap für das Mapping von OPS-Kodes -> Kategorie findet sich in den Deutschen Basisprofilen - Implementierungsleitfaden Abschnitt Terminologien. Die Angabe der Kategeorie MUSS nur für OPS-kodierte Prozeduren erfolgen.

Procedure.code.coding

Bedeutung: Codierte Prozedur. Entweder kodiert per OPS oder SNOMED CT. Bei der Kodierung per SNOMED CT ist das ValueSet ProzedurenCodesSCT zu beachten.

Procedure.code.text

Bedeutung: Freitext-Beschreibung der Prozedur

Procedure.performed

Bedeutung: Zur zeitlichen Einordnung der Prozedur KANN das Durchführungsdatum der Prozedur dokumentiert werden. Mindestens MUSS der Beginn der Prozedur dokumentiert werden, das Ende KANN implementiert werden.

Procedure.subject

Bedeutung: Ein Patientenbezug der Prozedur MUSS stets zum Zwecke der Nachvollziehbarkeit und Datenintegrität vorliegen.

Procedure.note

Bedeutung: Weitere optionale Freitext-Notizen bezogen auf die durchgeführte Prozedur.


Interaktionen

Für die Ressource Procedure MUSS die REST-Interaktion "READ" implementiert werden.

Folgende Suchparameter sind für das Bestätigungsverfahren relevant, auch in Kombination:

  1. Der Suchparameter "_id" MUSS unterstützt werden:

    Beispiele:

    GET [base]/Procedure?_id=test

    Anwendungshinweise: Weitere Informationen zur Suche nach "_id" finden sich in der FHIR-Basisspezifikation - Abschnitt "Parameters for all resources".

  2. Der Suchparameter "status" MUSS unterstützt werden:

    Beispiele:

    GET [base]/Procedure?status=http://hl7.org/fhir/event-status|entered-in-error

    Anwendungshinweise: Weitere Informationen zur Suche nach "Procedure.status" finden sich in der FHIR-Basisspezifikation - Abschnitt "Token Search".

  3. Der Suchparameter "category" MUSS unterstützt werden:

    Beispiele:

    GET [base]/Procedure?category=http://snomed.info/sct|387713003

    Anwendungshinweise: Weitere Informationen zur Suche nach "Procedure.category" finden sich in der FHIR-Basisspezifikation - Abschnitt "Token Search".

  4. Der Suchparameter "code" MUSS unterstützt werden:

    Beispiele:

    GET [base]/Procedure?code=http://fhir.de/CodeSystem/bfarm/ops|5-470

    Anwendungshinweise: Weitere Informationen zur Suche nach "Procedure.code" finden sich in der FHIR-Basisspezifikation - Abschnitt "Token Search".

  5. Der Suchparameter "subject" MUSS unterstützt werden:

    Beispiele:

    GET [base]/Procedure?subject=Patient/123

    Anwendungshinweise: Weitere Informationen zur Suche nach "Procedure.subject" finden sich in der FHIR-Basisspezifikation - Abschnitt "Reference Search".

  6. Der Suchparameter "patient" MUSS unterstützt werden:

    Beispiele:

    GET [base]/Procedure?patient=Patient/123

    Anwendungshinweise: Weitere Informationen zur Suche nach "patient" finden sich in der FHIR-Basisspezifikation - Abschnitt "Reference Search".

    Dieser Suchparameter ist für die Umsetzung des IHE QEDm Profils verpflichtend.

  7. Der Suchparameter "encounter" MUSS unterstützt werden:

    Beispiele:

    GET [base]/Procedure?encounter=Encounter/123

    Anwendungshinweise: Weitere Informationen zur Suche nach "encounter" finden sich in der FHIR-Basisspezifikation - Abschnitt "Reference Search".

  8. Der Suchparameter "date" MUSS unterstützt werden:

    Beispiele:

    GET [base]/Procedure?date=lt2020-26-10

    Anwendungshinweise: Weitere Informationen zur Suche nach "date" finden sich in der FHIR-Basisspezifikation - Abschnitt "Date Search".

    Dieser Suchparameter ist für die Umsetzung des IHE QEDm Profils verpflichtend.


Verkettete Suchparameter (Chaining und Reverse Chaining)

Für Suchparameter vom Typ 'Reference' MÜSSEN die Festlegungen für Chaining und Reverse Chaining verpflichtend implementiert werden. Chaining und Reverse Chaining MUSS für alle Suchparameter über alle Ebenen und Datenobjekte hinweg (potentiell in Kombination) unterstützt werden.

Alle zu unterstützenden verketteten Suchparameter auf den entsprechenden Referenzen sind im CapabilityStatement unter CapabilityStatement.rest.resource.searchInclude bzw. CapabilityStatement.rest.resource.searchRevInclude angegeben. Siehe CapabilityStatement

Weitere Informationen und Beispiele zur Suche nach verketteten Parametern finden sich in diesem IG unter Suchparameter und in der FHIR-Basisspezifikation im Abschnitt "Chained Parameters" und im Abschnitt "Reverse Chaining".

Die verketteten Suchparameter des Profils Procedure hängen wie folgt mit den festgelegten Anwendungsfällen (Use Cases) zusammen:

  1. Der verkette Suchparameter Procedure:patient unterstüzt den Anwendungsfall:

    Um für einen Patienten eindeutig die aktuell anstehende Behandlungsprozedur identifizieren zu können und eine Fehlbehandlung auszuschließen.

  2. Der verkette Suchparameter Procedure:subject unterstüzt den Anwendungsfall:

    Um für eine Person eindeutig die aktuell anstehende Untersuchungsprozedur identifizieren zu können und eine Fehldiagnose auszuschließen.

  3. Der verkette Suchparameter Procedure:encounter unterstüzt den Anwendungsfall:

    Um einem Kontakt eindeutig zu einer Behandlung zuordnen zu können.

  4. Der verkette Suchparameter Encounter:diagnosis unterstüzt den Anwendungsfall:

    Um bei einer vorliegenden Untersuchung im Rahmen einer Diagnose eines Patienten alle zugehörigen Kontakte zuordnen zu können.


Beispiele

Valides Minimalbeispiel Prozedur:

{
    "resourceType": "Procedure",
    "id": "Appendektomie",
    "meta": {
        "profile":  [
            "https://gematik.de/fhir/isik/StructureDefinition/ISiKProzedur"
        ]
    },
    "extension":  [
        {
            "url": "http://fhir.de/StructureDefinition/ProzedurDokumentationsdatum",
            "valueDateTime": "2020-04-23"
        }
    ],
    "status": "completed",
    "category": {
        "coding":  [
            {
                "code": "387713003",
                "system": "http://snomed.info/sct",
                "display": "Surgical procedure (procedure)"
            }
        ]
    },
    "code": {
        "coding":  [
            {
                "code": "80146002",
                "system": "http://snomed.info/sct",
                "display": "Excision of appendix (procedure)"
            },
            {
                "version": "2020",
                "code": "5-470",
                "system": "http://fhir.de/CodeSystem/bfarm/ops",
                "display": "Appendektomie"
            }
        ],
        "text": "Entfernung des Blinddarms"
    },
    "subject": {
        "reference": "Patient/PatientinMusterfrau"
    },
    "performedDateTime": "2020-04-23",
    "note":  [
        {
            "text": "Testnotiz"
        }
    ]
}