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
Draft as of 2025-02-26 |
@prefix fhir: <http://hl7.org/fhir/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@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.Aufnehmen"] ; #
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.Aufnehmen</b></p><a name=\"MOPED.Patient.Aufnehmen\"> </a><a name=\"hcMOPED.Patient.Aufnehmen\"> </a><a name=\"MOPED.Patient.Aufnehmen-en-US\"> </a><p>URL: [base]/Encounter/$aufnehmen</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>falldaten</td><td/><td>1..1</td><td><a href=\"http://hl7.org/fhir/R5/resource.html\">Resource</a> (<a href=\"StructureDefinition-MopedAufnahmeBundle.html\" title=\"https://elga.moped.at/StructureDefinition/MopedAufnahmeBundle\">MOPED Aufnahme Bundle</a>)</td><td/><td><div><p>Der <em>falldaten</em> Parameter beinhaltet die nötigen Elemente um die Details zum Fall zu beschreiben die bei Patientenaufnahme bekannt sind, inklusive Patient, Encounter und Coverage.</p>\n</div></td></tr><tr><td>IN</td><td>freigeben</td><td/><td>1..1</td><td><a href=\"http://hl7.org/fhir/R5/datatypes.html#boolean\">boolean</a></td><td/><td><div><p>Mit Hilfe des <em>freigeben</em> Parameters wird angegeben, ob es sich bei der Patienten-Aufnahme um vollständige Daten handelt und somit eine Validierung erfolgen soll (<em>freigeben</em> = <em>true</em>), oder ob lediglich unvollständige Daten zwischengespeichert werden (<em>freigeben</em> = <em>false</em>).</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#code\">code</a></td><td><a href=\"ValueSet-Anwesenheitsart.html\">Anwesenheitsart</a> (Required)</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>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 Neuaufnahme 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 Neuaufnahme stattfindet.</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. Wenn der <em>modus</em> Parameter auf 'freigeben' gesetzt war, ist die Operation erfolgreich, wenn die Daten validiert wurden und abgespeichert werden konnten. Wenn der <em>modus</em> Parameter auf <em>zwischenspeichern</em> gesetzt war, ist für eine erfolgreiche Durchführung der Operation lediglich ein erfolgreiches Speichern vorausgesetzt. Schlägt die Operation fehl, wird eine entsprechende Meldung ausgegeben.</p>\n</div></td></tr></table><div><p>TBD: Check, wo version-specific References nötig sind - ggf. relevant für Account.subject, Account.owner und Account.coverage sobald Modus auf <em>freigeben</em>. Überlegen, für was der Status Aufnahme in Arbeit tatsächlich nützlich ist und wenn dieser wirklich nötig ist, was passiert, wenn diese Operation mehrfach aufgerufen wird (speziell mit dem Einbringen von Hauptversicherten im Zuge der Speicherung von Coverages, das Anlegen von MopedTransfer Encounters via $verlgen ect.)</p>\n</div></div>"^^rdf:XMLLiteral
] ; #
fhir:url [ fhir:v "https://elga.moped.at/OperationDefinition/MOPED.Patient.Aufnehmen"^^xsd:anyURI] ; #
fhir:version [ fhir:v "0.1.0"] ; #
fhir:name [ fhir:v "MOPED_Patient_Aufnehmen"] ; #
fhir:title [ fhir:v "MOPED Patient $aufnehmen (POC)"] ; #
fhir:status [ fhir:v "draft"] ; #
fhir:kind [ fhir:v "operation"] ; #
fhir:date [ fhir:v "2025-02-26T17:15:50+00:00"^^xsd:dateTime] ; #
fhir:publisher [ fhir:v "ELGA GmbH"] ; #
fhir:contact ( [
fhir:name [ fhir:v "ELGA GmbH" ] ;
( fhir:telecom [
fhir:system [ fhir:v "url" ] ;
fhir:value [ fhir:v "https://elga.gv.at" ] ] )
] ) ; #
fhir:description [ fhir:v "Die $aufnehmen Operation wird aufgerufen, wenn ein(e) Patient*in in das Krankenhaus aufgenommen wird."] ; #
fhir:purpose [ fhir:v "\nLegende: ~~durchgestrichen~~ heißt, dass es für den IG zwar bedacht wird, für den ersten POC jedoch nicht relevant ist.\n\n**Wer ruft diese Operation in welchem Zusammenhang auf?**\n\nDie Operation wird vom Akteur Krankenhaus (KH) aufgerufen. Die $aufnehmen Operation wird aufgerufen, wenn ein(e) Patient*in in das Krankenhaus aufgenommen wird.\n\n**Voraussetzungen für den Aufruf**\n\n* Account-Status: n/a (die Ressource Account wird erst mit dieser Operation erstellt)\n\n**Detaillierte Business-Logik**\n\n1. Ressourcen der Transaction erstellen: FHIR Transaction ausführen, wie im Operation-Parameter *falldaten* mitgegeben. Dabei soll geprüft werden, ob bereits ein Patient mit dem jeweiligen identifier (bPK bzw. Sozialversicherungsnummer) vorliegt um Duplikate zu vermeiden. Das gleiche gilt für den Hauptversicherten und die anderen Ressourcen im Bundle, und kann technisch mit Hilfe von conditional References im Input-Bundle realisiert werden.\n2. Account anlegen:\n * *MopedAccount.WorkflowStatus*: lt. Beschreibung der Werte-Ausprägungen des *freigeben* Parameter (siehe Hinweis 1)\n * *MopedAccount.subject* mit der gleichen Referenz befüllen wie *MopedEncounter.subject*\n * *MopedAccount.owner* mit der gleichen Referenz befüllen wie *MopedEncounter.serviceProvider*\n * *MopedAccount.AnzahlVerlegungen* mit Wert '0' befüllen\n * *MopedAccount.AnzahlBeurlaubungen* mit Wert '0' befüllen\n * *MopedAccount.coverage.coverage* mit der Referenz lt. *falldaten*-Parameter befüllen und ggf. Hauptversicherten anlegen, falls noch nicht am Server. \n3. Account im Encounter referenzieren: Den neuen MopedAccount im *MopedEncounter.account* referenzieren\n4. Durchführung der Operation `$verlegen` für Neufaufnahme:\n * *$verlegen#aufnahmezahl* = *$aufnehmen#aufnahmezahl*\n * *$verlegen#zeitpunkt* = Operation-Parameter falldaten mit dem Pfad *Bundle.Encounter.actualPeriod.start*\n * *$verlegen#funktionscode* = *$aufnehmen#funktionscode*\n * *$verlgegen#funktionssubcode* = *$aufnehmen#funktionssubcode*\n * *$verlegen#physischeAnwesenheit* = *$aufnehmen#physischeAnwesenheit*\n * *$verlegen#neuaufnahme* = `true`\n5. Berechnung der Datensatz-ID:\n * Die Datensatz-ID wird aus der Aufnahmezahl lt. LKF Dokumentation als SHA-256 Hash berechnet und in das entsprechende Identifier-Slice des MopedEncounter eingefügt.\n\n**Validierung / Fehlerbehandlung**\n\n* Nur POC: Der Operation-Parameter 'freigeben' muss `true` sein (siehe Hinweis 5)\n* Wenn der *freigeben*-Parameter auf *true* ist, muss eine Validierung aller Ressourcen im *falldaten*-Bundle erfolgreich sein, oder die Operation schlägt fehl.\n* Es kann nie mehrere MopedEnconuter-Instanzen mit der gleichen Aufnahmezahl geben. Es muss vorab überprüft werden, ob bereits ein Encounter mit dieser Aufnahmezahl vorliegt und die Operation muss in dem Fall fehlschlagen (siehe Hinweis 5).\n* Der Status *MopedEncounter.status* muss den Wert 'in-progress' haben\n* Der Hauptversicherte lt. MopedAufnahmeBundle[Hauptversicherter] muss gleich sein wie MopedAufnahmeBundle[Coverage].policyHolder\n* In MopedAccount.coverage darf nur eine Coverage gelistet sein, ansonsten wird (derzeit) ein Fehler geworfen. Dieser Zustand wäre vor allem möglich, wenn $aufnehmen mehrmals aufgerufen wird, mit unterschiedlichen Coverages. Siehe Hinweis 4.\n\n**Weitere Hinweise**\n\n* Hinweis 1: Die Werte-Ausprägung des *freigeben* Parameters haben eine Auswirkung auf das Verhalten der Operation:\n * ~~*false*: Die Patientenaufnahme ist noch nicht vollständig und wird lediglich zwischengespeichert. Hier findet keine Validierung der Encounter Ressource statt. Eine Account-Ressource wird erstellt, die den *WorkflowStatus* 'Aufnahme in Arbeit' hat und im Encounter referenziert.~~\n * *true*: Die Patientenaufnahme ist vollständig und es ist zu erwarten, dass alle nötigen Felder befüllt sind. Schlägt die Validierung der *falldaten* fehl, kann die Operation nicht erfolgreich durchgeführt werden. Ist die Validierung erfolgreich, wird eine im Encounter referenzierte Account-Ressource erstellt bzw. upgedatet, die den *WorkflowStatus* 'Aufnahme freigegeben' hat. \n* Hinweis 2: Es ist nicht nötig, bei dieser Operation den GDA-Identifier als Kontext mitzugeben. Auf den GDA wird im *falldaten*-Bundle als conditional Reference mittels entsprechendem Identifier im MopedEncounter verwiesen. Somit wird auch vermieden, dass Duplikate einer GDA-Organization-Ressource am Server angelegt/verwendet werden.\n* Hinweis 3: Im Parameter *falldaten* wird unter Anderem eine Coverage Ressource mitgegeben. Diese Ressource stammt in der Regel aus einer erfolgreichen VDAS-Abfrage. In Zukunft wird Moped auch andere Optionen unterstützen, wie die Verarbeitung von Daten von Selbstzahlern (wofür ein separates Coverage-Profil angelegt wird), oder die Verarbeitung von Fällen mit privater Krankenversicherung (auch hierfür wird ein separates Coverage-Profil angelegt). Im Ersten Schritt liegt der Fokus auf den Standard-Fall, der als Ausgangsbasis eine erfolgreich abgeschlossene VDAS-Abfrage voraussetzt. \n* Hinweis 4: Das Wechseln von Versicherungen, insbesondere durch inkonsistente Coverages bei mehrfachem Ausführen von $aufnehmen wird derzeit nicht unterstützt. Hierfür müssen erst die Prozesse für den Sonderfall des Versicherungswechselns definiert werden.\n* Hinweis 5: In einer erweiterten Version wird es möglich sein, diese Operation mehrmals aufzurufen. Das wird konkret zumindest der Fall sein, wenn die Aufnahme 1x in Arbeit ist und 1x freigegeben wird. Im POC soll die Operation nur einmal ausgeführt werden können, direkt mit der Freigabe.\n\n**Annahmen an das BeS**\n* Es wurde vorab geprüft, ob das `system` des Parameters `falldaten`.encounter.identifier dem GDA entspricht, der die Operation aufruft. Somit ist sichergestellt, dass nur eigene Fälle aufgenommen werden können.\n"] ; #
fhir:affectsState [ fhir:v "true"^^xsd:boolean] ; #
fhir:code [ fhir:v "aufnehmen"] ; #
fhir:comment [ fhir:v "TBD: Check, wo version-specific References nötig sind - ggf. relevant für Account.subject, Account.owner und Account.coverage sobald Modus auf *freigeben*. Überlegen, für was der Status Aufnahme in Arbeit tatsächlich nützlich ist und wenn dieser wirklich nötig ist, was passiert, wenn diese Operation mehrfach aufgerufen wird (speziell mit dem Einbringen von Hauptversicherten im Zuge der Speicherung von Coverages, das Anlegen von MopedTransfer Encounters via $verlgen ect.)"] ; #
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 "falldaten" ] ;
fhir:use [ fhir:v "in" ] ;
fhir:min [ fhir:v "1"^^xsd:integer ] ;
fhir:max [ fhir:v "1" ] ;
fhir:documentation [ fhir:v "Der *falldaten* Parameter beinhaltet die nötigen Elemente um die Details zum Fall zu beschreiben die bei Patientenaufnahme bekannt sind, inklusive Patient, Encounter und Coverage." ] ;
fhir:type [ fhir:v "Resource" ] ;
( fhir:targetProfile [
fhir:v "https://elga.moped.at/StructureDefinition/MopedAufnahmeBundle"^^xsd:anyURI ;
fhir:link <https://elga.moped.at/StructureDefinition/MopedAufnahmeBundle> ] )
] [
fhir:name [ fhir:v "freigeben" ] ;
fhir:use [ fhir:v "in" ] ;
fhir:min [ fhir:v "1"^^xsd:integer ] ;
fhir:max [ fhir:v "1" ] ;
fhir:documentation [ fhir:v "Mit Hilfe des *freigeben* Parameters wird angegeben, ob es sich bei der Patienten-Aufnahme um vollständige Daten handelt und somit eine Validierung erfolgen soll (*freigeben* = *true*), oder ob lediglich unvollständige Daten zwischengespeichert werden (*freigeben* = *false*)." ] ;
fhir:type [ fhir:v "boolean" ]
] [
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 "code" ] ;
fhir:binding [
fhir:strength [ fhir:v "required" ] ;
fhir:valueSet [
fhir:v "https://elga.moped.at/ValueSet/Anwesenheitsart"^^xsd:anyURI ;
fhir:link <https://elga.moped.at/ValueSet/Anwesenheitsart> ] ]
] [
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 Neuaufnahme 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 Neuaufnahme stattfindet." ] ;
fhir:type [ fhir:v "string" ]
] [
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. Wenn der *modus* Parameter auf 'freigeben' gesetzt war, ist die Operation erfolgreich, wenn die Daten validiert wurden und abgespeichert werden konnten. Wenn der *modus* Parameter auf *zwischenspeichern* gesetzt war, ist für eine erfolgreiche Durchführung der Operation lediglich ein erfolgreiches Speichern vorausgesetzt. Schlägt die Operation fehl, wird eine entsprechende Meldung ausgegeben." ] ;
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> ] )
] ) . #
IG © 2024+ ELGA GmbH. Package elga.moped#0.1.0 based on FHIR® 5.0.0. Generated 2025-02-26
Links: Table of Contents |
QA Report