Gnumed Encounter based Billing Record Erweiterung

Zur Leistungsabrechnung wird je Patient eine Ansicht der bislang eingetragenen Leistungen zur Verfügung gestellt. Dieses Plugin ermöglicht für den aktiven Vorgang (Encounter) eine neuen Posten anzulegen, bestehende zu bearbeiten und zu löschen. Falls für den Vorgang ein Leistungscode hinterlegt ist, wird automatisch ein Posten mit diesem Leistungscode angelegt. Bild: Reiter Posten mit Eingabeleiste unten und einen Posten in Bearbeitung   Bild: Löschen eines Eintrags bestätigen

Hierzu wurde angenommen dass die meisten Einträge a) für den aktiven Vorgang und b) automatisch bzw. manuell aus einem vorgegeben Katalog erfolgt, mit der Anzahl 1 berechnet werden soll und der Katalogpreis unverändert bleibt. Die Angaben lassen sich für die anderen Fälle dann nachträglich bearbeiten. Achtung: Wenn der dazugehörige Vorgang nachträglich gewechselt wird, muss das Datum manuell nachgezogen werden falls gewünscht. Umgekehrt wenn das Datum nachträglich geändert wird, wird nicht automatisch der dazugehörige Vorgang ausgewählt.

Vermutlich ist die Auflistung und Bearbeitung der erbrachten Leistungen der kleinste gemeinsame Nenner auf dem Weg zur Rechnungsstellung. Ob es realistisch und angebracht ist dass Gnumed eine möglichst treffsichere Vorschlagsliste zur Leistungsabrechnung beisteuert, weiss ich nicht. Meiner Meinung nach sollte zumindest noch die Möglichkeit zur Rechnungsstellung für Private Leistungen vorhanden sein (Button "Rechnung" mit Pdf ), die Buchhaltung und Verwaltung der Zahlungen extern.

Rechnungserstellung

Es werden derzeit nur Privat-Rechnungen unterstützt. Für das Layout wurde angenommen dass die Rechnungsposten aus einem einzigen Leistungskatalog und ohne Umsatzsteuer daherkommen. Ziel war auf die Schnelle ein halbwegs passables Rechnungsdokument erzeugen zu können. Es wurde versucht das Business-Objekt "Rechnung" für den Anwender erstmal zu verstecken (Ein-Button-Lösung), auf Dauer wird das aber nicht gehen.

Die Erstellung geschieht momentan manuell auf Anforderung und erzeugt ein PDF das erstmal nicht in der Dokumenten-Ansicht verfügbar ist. Dieser Ansatz wurde gewählt weil eine Rechnung episodenunabhängig ist und auch nicht reviewed werden soll. Die Rechnung ist nachträglich im Kontext-Menü der Rechnungsposten aufrufbar, das mit reportlab erzeugte Pdf liegt in einem Ordner auf der Platte. Musterrechnung

Als Schnittstelle zur Buchhaltung wird eine CSV-Datei mit den einzelen Zeilen für die geschlossene Rechnung befüllt. Die Datei enthält aktuell Wertstellungsdatum, Buchungskonto, Betrag und einen beschreibenden Text.

Leider ist das Rechnungsformular noch nicht als Vorlage definiert, und das Layout noch etwas dürftig. Customizing geschieht indem Variablen in der Datei gmBillFactory.py bearbeiten (Praxisanschrift, Kontaktangaben, UST-Id etc.). Internationalisiert ist hier auch noch nix, wenn das überhaupt sinnvoll ist.

Details zur Implementation
Rechnungsposten werden einer Rechnung erst auf Aufforderung "jetzt Rechnung machen" zugeteilt, also nicht bereits bei Anlage des Postens. Es muss also zuerst eine neue Rechnung angelegt werden. Dieser werden dann nur Posten im Status "pending" zugeordnet. Wurden Posten gefunden, wird die Rechnung auch gleich geschlossen (close_date != NULL) und ausserhalb der Transaktion produziert. Annahmen: Ob eine Rechnung erstellt wird ist also unabhängig vom Rechnungsbetrag, ebensowenig gibt es einen vorgegebenen Rechnungszeitraum.

Mit dem Rechnungsabschluss verbunden ist die Ermittlung des Empfängers, dessen Rechnungsanschrift und des Gesamtbetrags. Der Gesamtbetrag um nachfolgende Zahlungsabstimmprozesse zu erleichtern. Der Rechnungsempfänger ist derzeit implementiert "schaue bei den externen Ids" nach dem jüngsten Eintrag "Rechungsempfänger". Die Rechnungsanschrift als "Nehme aus einer Adressliste vom Typ Invoice oder Home sortiert nach Adresstyp=Invoice" den ersten, wenn keiner da "Name Rechnungsempfänger - in Praxis". Die tatsächliche Adressformatierung geschieht mit einer Funktion fmt_inv_address aus Ihrem momentan eingestellten Landesschema .

Nach Zuordnung der Rechnungsposten und Erstellung der Rechnung hierfür, sind die Posten in der GUI nicht mehr bearbeitbar. Auf Datebankebene gibt es zusätzlich eine Rule die das Verändern verhindern soll.

Installation

Vorab, das Plugin hat Beta-Status, also bitte um Nachsicht und nur in Test-Umgebungen installieren.

Damit das Plugin aktiviert werden kann, müssen Datenbank-Objekte angelegt werden und ein Paar neue Python-Dateien im Gnumed-Ordner gelegt werden. Da "leere" Encounter aufgeräumt werden und wir eine neue Abhängigkeit Encounter : Billing Record (1:0..n) einführen, sind kleinere Änderungen gegenüber der Datenbank (Version v16.9) notwendig.

Um Pdfs erzeugen zu können, muss reportlab installiert werden, sowie in der Datei gmBillFactory einige Angaben zu Ihrer Praxis gemacht werden. Ausserdem brauchts einen Ordner in dem die Pdfs dann abgelegt werden können.


Schema vor Übernahme in v17 Tabelle Posten:bill_item, Leistungen:ref.billable und ci_category, View v_bill_items, v_enc und ci_category (ref.data_source), acc_export_lines sowie Hilfsfunktionen
Annahme: Der Katalog der Leistungen wird je Instanz in Gnumed vorgehalten.
Noch zu klären: Migration bill_rec nach bill_item (Wer benutzt die?) und charge_item nach billable verschiedene Tabellen basierend auf coding_system_root (Wer befüllt die einmalig und regelmäßig?)


Business-Objekte und Plugin Posten: gmBillItem, Leistungen: gmBillable, Rechnung: gmBill, gmBillFactory
Das Plugin muss aktiviert werden. Der Benutzer muss dazu zumindest Leserechte auf die Tabellen im Schema haben.

Known Issues

Summary

Das Ganze ist noch "ugly" und passt sich auch noch nicht wirklich in die Gnumed-Welt ein. Als Trostpflaster gibts aber einen kleinen Trigger der beim Hinzufügen eines Rezepts auch die Rezeptgebühr nachzieht.

Kontakt: nl mnet-online.de Nico Latzer
Datum: 15.Jan.2012 22.Jan.2012 30.Jan 2012 11.Feb.2012