Moderne Patient:innenabrechnung und Datenkommunikation on FHIR (MOPED)
0.1.0 - ci-build

Moderne Patient:innenabrechnung und Datenkommunikation on FHIR (MOPED) - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

: MOPED Patient $verlegen (POC) - TTL Representation

Draft as of 2024-10-09

Raw ttl | Download


@prefix fhir: <http://hl7.org/fhir/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

# - resource -------------------------------------------------------------------

 a fhir:OperationDefinition ;
  fhir:nodeRole fhir:treeRoot ;
  fhir:id [ fhir:v "MOPED.Patient.Verlegen"] ; # 
  fhir:text [
fhir:status [ fhir:v "generated" ] ;
fhir:div "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p class=\"res-header-id\"><b>Generated Narrative: OperationDefinition MOPED.Patient.Verlegen</b></p><a name=\"MOPED.Patient.Verlegen\"> </a><a name=\"hcMOPED.Patient.Verlegen\"> </a><a name=\"MOPED.Patient.Verlegen-en-US\"> </a><p>URL: [base]/Encounter/$verlegen</p><h3>Parameters</h3><table class=\"grid\"><tr><td><b>Use</b></td><td><b>Name</b></td><td><b>Scope</b></td><td><b>Cardinality</b></td><td><b>Type</b></td><td><b>Binding</b></td><td><b>Documentation</b></td></tr><tr><td>IN</td><td>aufnahmezahl</td><td/><td>1..1</td><td><a href=\"http://hl7.org/fhir/R5/datatypes.html#Identifier\">Identifier</a></td><td/><td><div><p>Der <em>aufnahmezahl</em> Parameter beinhält den eindeutigen Identifizierer für den relevanten Fall.</p>\n</div></td></tr><tr><td>IN</td><td>zeitpunkt</td><td/><td>1..1</td><td><a href=\"http://hl7.org/fhir/R5/datatypes.html#dateTime\">dateTime</a></td><td/><td><div><p>Der <em>zeitpunkt</em> Parameter definiert zu welchem Zeitpunkt die Verlegung stattfindet.</p>\n</div></td></tr><tr><td>IN</td><td>funktionscode</td><td/><td>1..1</td><td><a href=\"http://hl7.org/fhir/R5/datatypes.html#string\">string</a></td><td/><td><div><p>Der <em>funktionscode</em> Parameter definiert auf welchen Funktionscode die Verlegung stattfindet.</p>\n</div></td></tr><tr><td>IN</td><td>funktionssubcode</td><td/><td>1..1</td><td><a href=\"http://hl7.org/fhir/R5/datatypes.html#string\">string</a></td><td/><td><div><p>Der <em>funktionssubcode</em> Parameter definiert auf welchen Funktionssubcode die Verlegung stattfindet.</p>\n</div></td></tr><tr><td>IN</td><td>physischeAnwesenheit</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R5/datatypes.html#boolean\">boolean</a></td><td/><td><div><p>Der <em>physischeAnwesenheit</em> Parameter definiert ob der Patient physisch anwesend ist oder nicht.</p>\n</div></td></tr><tr><td>IN</td><td>neuaufnahme</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R5/datatypes.html#boolean\">boolean</a></td><td/><td><div><p>Der <em>neuaufnahme</em> Parameter definiert ob es sich bei der Verlegung um die initiale Aufnahme des Patienten auf eine bestimmte Station handelt.</p>\n</div></td></tr><tr><td>IN</td><td>abgangsart</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R5/datatypes.html#code\">code</a></td><td><a href=\"ValueSet-moped-abgangsart-valueset.html\">Abgangsart des Patienten</a> (Required)</td><td><div><p>Der <em>abgangsart</em> Parameter definiert die Abgangsart des Patienten vom bisher aktuellen MOPEDTransferEncounter.</p>\n</div></td></tr><tr><td>OUT</td><td>return</td><td/><td>1..1</td><td><a href=\"http://hl7.org/fhir/R5/resource.html\">Resource</a> (<a href=\"http://hl7.org/fhir/R5/operationoutcome.html\" title=\"http://hl7.org/fhir/StructureDefinition/OperationOutcome\">OperationOutcome</a>)</td><td/><td><div><p>Der <em>return</em> Parameter gibt Auskunft über den Erfolg der Operation.</p>\n</div></td></tr></table><div><p>TBD: was passiert, wenn eine $aufnehmen Operation mehrmals mit Status <code>Aufnahme in Arbeit</code> aufgerufen wird und damit zu mehreren MOPEDTransferEncounter führt?</p>\n</div></div>"
  ] ; # 
  fhir:url [ fhir:v "http://example.org/OperationDefinition/MOPED.Patient.Verlegen"^^xsd:anyURI] ; # 
  fhir:version [ fhir:v "0.1.0"] ; # 
  fhir:name [ fhir:v "MOPED_Patient_Verlegen"] ; # 
  fhir:title [ fhir:v "MOPED Patient $verlegen (POC)"] ; # 
  fhir:status [ fhir:v "draft"] ; # 
  fhir:kind [ fhir:v "operation"] ; # 
  fhir:date [ fhir:v "2024-10-09T10:32:17+00:00"^^xsd:dateTime] ; # 
  fhir:publisher [ fhir:v "Example Publisher"] ; # 
  fhir:contact ( [
fhir:name [ fhir:v "Example Publisher" ] ;
    ( fhir:telecom [
fhir:system [ fhir:v "url" ] ;
fhir:value [ fhir:v "http://example.org/example-publisher" ]     ] )
  ] ) ; # 
  fhir:description [ fhir:v "\n**Wer ruft diese Operation in welchem Zusammenhang auf?**\n\nDie Operation wird vom Akteur Krankenhaus (KH) aufgerufen. Die $verlegen Operation wird aufgerufen, wenn ein(e) Patient*in auf eine andere Station verlegt wird. Auch initial, wenn ein Patient auf eine bestimmte Station aufgenommen wird, wird diese Operation aufgerufen (dies passiert automatisch im Zuge der Operation $aufnehmen).\n\n**Voraussetzungen für den Aufruf**\n\n* Account-Status: `Aufnahme in Arbeit` oder `Aufnahme freigegeben`\n\n**Detaillierte Business-Logik**\n\n1. Suche des MOPEDEncounter: Der MOPEDEncounter mit der jeweiligen *aufnahmezahl* lt. Operation-Parameter wird gesucht\n2. Neuer Transfer Encounter:\n  * Ein neuer MOPEDTransferEncounter wird vorbereitet\n  * *MOPEDTransferEncounter.partOf* referenziert den MOPEDEncounter aus Schritt 1.\n  * *MOPEDTransferEncounter.actualPeriod.start* wird mit dem *zeitpunkt* lt. Operation-Parameter befüllt.\n  * *MOPEDTransferEncounter.serviceProvider* setzt eine Referenz auf die MOPEDOrganizationAbteilung mit dem jeweiligen *funktionscode* bzw. *funktionssubcode* lt. Operation-Parameter.\n  * *MOPEDTransferEncounter.Neugeborenes* wird lt. LKF-Regeln berechnet, anhand des *MOPEDEncounter.subject.birthdate* aus dem Encounter aus Schritt 1 (für Berechnugns-Details siehe Hinweis 1).\n  * *MOPEDTransferEncounter.Altersgruppe* wird lt. LKF-Regeln berechnet, anhand des *MOPEDEncounter.subject.birthdate* aus dem Encounter aus Schritt 1 (für Berechnugns-Details siehe Hinweis 2).\n  * *MOPEDTransferEncounter.PhysischeAnwesenheit* wird lt. Operation-Parameter befüllt.\n3. Account AnzahlVerlegungen: Die Extension *Account.extension.AnzahlVerlegungen* im zur Aufnahmezahl gehöhrenden Account wird um 1 erhöht. Dies ist auch so, wenn es sich bei der Verlegung um einen Urlaub handeln sollte (siehe Hinweis 3).\n4. Alter Transfer Encounter:\n  * Dieser Schritt ist nur relevant, wenn es sich *nicht* um eine Neufaufnahme (lt. Operation-Parameter) handelt.\n  * Suche des alten MOPEDTransferEncounter: Mit *MOPEDTransferEncounter.partOf* einer Referenz auf den MOPEDEncounter aus Schritt 1 und den Status *in-progress*\n  * Abschließen des alten MOPEDTransferEncounter: *MOPEDTransferEncounter.status* wird auf *completed* gesetzt\n  * Endzeitpunkt des alten MOPEDTransferEncounter: *MOPEDTransferEncounter.actualPeriod.end* wird auf den *zeitpunkt* lt. Operation-Parameter gesetzt.\n  * Abgangsart vom alten MOPEDTransferEncounter: *MOPEDTransferEncounter.abgangsart* wird auf *abgangsart* lt. Operation-Parameter gesetzt.\n5. Account AnzahlBeurlaubungen:\n  * Dieser Schritt ist nur relevant, wenn es sich *nicht* um eine Neufaufnahme (lt. Operation-Parameter) handelt.\n  * War alter MOPEDTransferEncounter aus Schritt 4.2 ein Urlaub (i.e. Funktionscode `10000000`)?\n    * Wenn ja, dann wird der Counter *Account.extension.AnzahlBeurlaubungen* um 1 erhöht.\n\n**Validierung / Fehlerbehandlung**\n* Bei Neuaufnahme (lt. Operation-Parameter) muss das Feld *AnzahlVerlegungen* nach Ausführen der Operation $verlegen den Wert `1` aufweisen und das Feld *AnzahlBeurlaubungen* den Wert `0`.\n* Es kann immer nur einen MOPEDTransferEncounter für den jeweiligen Fall geben der *partOf* eines MOPEDEncounters mit der *aufnahmezahl* ist und den Status *in-progress* hat.\n* Wenn es sich um eine Neuaufnahme (lt. Operation-Parameter) handelt, kann es keine Abgangsart (Operation-Parameter) geben.\n\n**Weitere Hinweise**\n* Hinweis 1: LKF 4.2.16 Neugeborenes\n  * Ja (Alter zum Zugangszeitpunkt auf die Abteilung <28 Tage)\n  * Nein (Alter zum Zugangszeitpunkt auf die Abteilung >=28 Tage)\n* Hinweis 2: LKF 4.1.9 Altersgruppe bei Entlassung/Kontakt\n  * Vollendete Lebensjahre sind ausschlaggebend\n  * 0: 0\n  * 1-4: 1\n  * 5-9: 5\n  * 10-14: 10\n  * 15-19: 15\n  * 20-24: 20\n  * ... immer weiter so, die untere Grenze des Alters in 5er-Schritten\n  * 85-89: 85\n  * 90-95: 90\n  * 95 und älter: 95\n* Hinweis 3: Der Counter für AnzahlVerlegungen wird auch im Falle einer Beurlaubung erhöht, bei der eine reguläre Verlegung-Operation aufgerufen wird.\n"] ; # 
  fhir:affectsState [ fhir:v "true"^^xsd:boolean] ; # 
  fhir:code [ fhir:v "verlegen"] ; # 
  fhir:comment [ fhir:v "TBD: was passiert, wenn eine $aufnehmen Operation mehrmals mit Status `Aufnahme in Arbeit` aufgerufen wird und damit zu mehreren MOPEDTransferEncounter führt?"] ; # 
  fhir:base [
fhir:v "http://hl7.org/fhir/OperationDefinition/Patient-verlegen"^^xsd:anyURI ;
fhir:link <http://hl7.org/fhir/OperationDefinition/Patient-verlegen>
  ] ; # 
  fhir:resource ( [ fhir:v "Encounter"] ) ; # 
  fhir:system [ fhir:v "false"^^xsd:boolean] ; # 
  fhir:type [ fhir:v "true"^^xsd:boolean] ; # 
  fhir:instance [ fhir:v "false"^^xsd:boolean] ; # 
  fhir:parameter ( [
fhir:name [ fhir:v "aufnahmezahl" ] ;
fhir:use [ fhir:v "in" ] ;
fhir:min [ fhir:v "1"^^xsd:integer ] ;
fhir:max [ fhir:v "1" ] ;
fhir:documentation [ fhir:v "Der *aufnahmezahl* Parameter beinhält den eindeutigen Identifizierer für den relevanten Fall." ] ;
fhir:type [ fhir:v "Identifier" ]
  ] [
fhir:name [ fhir:v "zeitpunkt" ] ;
fhir:use [ fhir:v "in" ] ;
fhir:min [ fhir:v "1"^^xsd:integer ] ;
fhir:max [ fhir:v "1" ] ;
fhir:documentation [ fhir:v "Der *zeitpunkt* Parameter definiert zu welchem Zeitpunkt die Verlegung stattfindet." ] ;
fhir:type [ fhir:v "dateTime" ]
  ] [
fhir:name [ fhir:v "funktionscode" ] ;
fhir:use [ fhir:v "in" ] ;
fhir:min [ fhir:v "1"^^xsd:integer ] ;
fhir:max [ fhir:v "1" ] ;
fhir:documentation [ fhir:v "Der *funktionscode* Parameter definiert auf welchen Funktionscode die Verlegung stattfindet." ] ;
fhir:type [ fhir:v "string" ]
  ] [
fhir:name [ fhir:v "funktionssubcode" ] ;
fhir:use [ fhir:v "in" ] ;
fhir:min [ fhir:v "1"^^xsd:integer ] ;
fhir:max [ fhir:v "1" ] ;
fhir:documentation [ fhir:v "Der *funktionssubcode* Parameter definiert auf welchen Funktionssubcode die Verlegung stattfindet." ] ;
fhir:type [ fhir:v "string" ]
  ] [
fhir:name [ fhir:v "physischeAnwesenheit" ] ;
fhir:use [ fhir:v "in" ] ;
fhir:min [ fhir:v "0"^^xsd:integer ] ;
fhir:max [ fhir:v "1" ] ;
fhir:documentation [ fhir:v "Der *physischeAnwesenheit* Parameter definiert ob der Patient physisch anwesend ist oder nicht." ] ;
fhir:type [ fhir:v "boolean" ]
  ] [
fhir:name [ fhir:v "neuaufnahme" ] ;
fhir:use [ fhir:v "in" ] ;
fhir:min [ fhir:v "0"^^xsd:integer ] ;
fhir:max [ fhir:v "1" ] ;
fhir:documentation [ fhir:v "Der *neuaufnahme* Parameter definiert ob es sich bei der Verlegung um die initiale Aufnahme des Patienten auf eine bestimmte Station handelt." ] ;
fhir:type [ fhir:v "boolean" ]
  ] [
fhir:name [ fhir:v "abgangsart" ] ;
fhir:use [ fhir:v "in" ] ;
fhir:min [ fhir:v "0"^^xsd:integer ] ;
fhir:max [ fhir:v "1" ] ;
fhir:documentation [ fhir:v "Der *abgangsart* Parameter definiert die Abgangsart des Patienten vom bisher aktuellen MOPEDTransferEncounter." ] ;
fhir:type [ fhir:v "code" ] ;
fhir:binding [
fhir:strength [ fhir:v "required" ] ;
fhir:valueSet [ fhir:v "moped-abgangsart-valueset"^^xsd:anyURI ]     ]
  ] [
fhir:name [ fhir:v "return" ] ;
fhir:use [ fhir:v "out" ] ;
fhir:min [ fhir:v "1"^^xsd:integer ] ;
fhir:max [ fhir:v "1" ] ;
fhir:documentation [ fhir:v "Der *return* Parameter gibt Auskunft über den Erfolg der Operation." ] ;
fhir:type [ fhir:v "Resource" ] ;
    ( fhir:targetProfile [
fhir:v "http://hl7.org/fhir/StructureDefinition/OperationOutcome"^^xsd:anyURI ;
fhir:link <http://hl7.org/fhir/StructureDefinition/OperationOutcome>     ] )
  ] ) . #