Erste Schritte
Was Azmoth prüft, wie eine Prüfung abläuft und wo der verbindliche Vertrag steht.
Azmoth prüft private Arztabrechnungen deterministisch gegen die GOÄ. Jede Aussage der Engine lässt sich auf ihre Rechtsgrundlage zurückführen — plus Regel-ID, wo eine verifizierte Regel gegriffen hat. Es gibt kein Sprachmodell im Prüfpfad und keinen geschätzten Risikobetrag.
Diese Dokumentation richtet sich an zwei Leserinnen: an eine Abrechnungsstelle, die verstehen will, was ein Prüfbericht behauptet, und an eine Entwicklerin bei einem PVS-Hersteller, die Azmoth gegen den eigenen Export integriert.
Azmoth läuft auf Ihrem Server
Die Engine wird im Eigenbetrieb installiert, in Ihrem Netz, ohne Zugriff durch Azmoth. Alle
Beispiele auf dieser Seite sprechen deshalb mit Ihrer Installation — der Partner-API auf
Port 8443 Ihres Servers, z. B. https://azmoth.praxis.local:8443. Einen öffentlich
betriebenen Azmoth-Dienst gibt es derzeit nicht.
Zwei Stufen, vier Zustände
Jede Position verlässt die Prüfung in genau einem von vier Zuständen. Sie gehören zu zwei Stufen: was die Engine zertifiziert, und was sie nicht zertifiziert.
Verifizierte Regeln greifen, und die Position hält ihnen stand. Die Engine steht für dieses Urteil ein.
Eine verifizierte Regel, der Katalog oder die Gebührenarithmetik zeigt: so wie beansprucht nicht abrechenbar. Der Befund nennt die Rechtsgrundlage und zitiert den GOÄ-Wortlaut.
Nicht zertifiziert. Die Engine hat einen zitierten GOÄ-Satz und genau eine Sache, die Ihre Abrechnungsfachkraft prüft. Sie entscheidet, nicht die Engine.
Nicht zertifiziert. Keine verifizierte Regel spricht zu dieser Position. Das ist kein Freispruch und kein Vorwurf, sondern die Grenze der Regelabdeckung.
In der API sind das zwei Felder auf jeder Position: tier (certified oder hint) und
review_state (certified, pruefhinweis oder keine_aussage). Ob eine zertifizierte Position
korrekt oder beanstandet ist, sagt bucket (confirmed_fine oder confirmed_wrong). Die
Einzelheiten stehen in der Partner-API.
Nicht zertifiziert heißt nicht korrekt — und nicht falsch
Wie viel einer Rechnung zertifiziert werden konnte, steht als coverage_ratio auf jeder Antwort,
pro Rechnung zusätzlich in invoice_coverage. Wie viele Regeln die Engine gerade durchsetzt, steht
in rule_coverage_detail. Lesen Sie beides zur Laufzeit; es ändert sich mit jedem Regel-Release
und ist kein Vertragsbestandteil.
Ablauf einer Prüfung
Schlüssel erhalten
Einen API-Schlüssel erzeugen Sie selbst in der Oberfläche: Kontomenü oben rechts → API-Schlüssel. Er wird genau einmal angezeigt — gespeichert wird nur sein SHA-256-Hash. Siehe Einen Schlüssel erhalten.
Lieferung senden
Eine PADnext-Datei per multipart/form-data oder als Rohtext an /api/v1/audit/single, viele
als ZIP an /api/v1/audit/bulk. Optional mit dem PKV-Tarif des Patienten (tariff_override).
Der Schlüssel bestimmt den Mandanten; es gibt kein Feld, mit dem ein Aufrufer eine fremde
Organisation benennen könnte.
Bericht auswerten
Die Antwort enthält jede Position mit Zustand, Begründung und Beweis, jeden Befund mit
gesetzlicher Grundlage und GOÄ-Wortlaut — plus Regel-ID, wo eine verifizierte Regel gegriffen
hat —, die Beträge nach Stufe und den receipt_hash, mit dem sich der Bericht später
nachrechnen lässt.
Eine Lieferung prüfen
export AZMOTH_API=https://azmoth.praxis.local:8443 # Ihre Installation
curl -X POST "$AZMOTH_API/api/v1/audit/single" \
-H "X-API-Key: $AZMOTH_API_KEY" \
-F "file=@lieferung.xml"{
"claimed_total_eur": "251.54",
"confirmed_fine_eur": "0.00", // zertifiziert korrekt
"confirmed_wrong_eur": "62.01", // zertifiziert beanstandet
"unconfirmed_eur": "189.53", // nicht zertifiziert: Prüfhinweise und Keine Aussage
"coverage_ratio": 0.24652142800349844,
"receipt_hash": "…64 Hex-Zeichen…",
"positions": [ /* je Position: tier, review_state, bucket, Begründung, Beweis */ ],
"findings": [ /* je Befund: Rechtsgrundlage, Wortlaut, tier */ ]
}Eurobeträge sind Dezimal-Strings
Niemals JSON-Zahlen. Wer sie in ein IEEE-Double liest, verliert Cent — und Cent sind genau das, worüber eine Rechnungsprüfung streitet.
Korrigierte PADnext-Datei
Korrekturen, die Ihre Abrechnungsfachkraft in der Oberfläche an einer geprüften Lieferung vornimmt (Faktor, Betrag, Ziffer, Position löschen oder hinzufügen), lassen sich als korrigierte PADnext-Datei exportieren, die Ihr PVS wieder einlesen kann. Das geschieht in der Oberfläche, nicht über die Partner-API: ein API-Schlüssel kann weder Korrekturen schreiben noch eine korrigierte Datei erzeugen.
Wo die korrigierte Datei entsteht
- Die korrigierte Datei wird auf Ihrem Rechner erzeugt; das Original verlässt Ihre Praxis nicht.
- Nur die Korrekturen und die daraus berechneten Beträge werden serverseitig verarbeitet — dazu, ohne Speicherung, die anonymisierte Fassung der Lieferung (dieselbe, die schon bei der Prüfung übertragen wurde) und die anonymisierte Fassung der korrigierten Datei für die Schemaprüfung. Gespeichert werden die Korrekturen mit ihrem vollständigen Verlauf und ein Fingerabdruck (SHA-256) der anonymisierten Lieferung, bei Stapeln aus der Partner-API zusätzlich ein Fingerabdruck ihres geprüften Inhalts.
- Die Prüfung erfolgt gegen das mitgelieferte ADL-2.12-Subset; gegen die amtliche XSD nur, wenn eine lizenzierte Kopie vorliegt. Unter dem Subset sind Abweichungen Hinweise, und die Datei wird trotzdem heruntergeladen; nur unter der lizenzierten amtlichen XSD verhindert eine Abweichung den Download.
@aisendbetragwird von der Schemaprüfung nicht erfasst, nur von einer Nachrechnung im Browser — Einzelheiten unten.
Ihre Rolle beim Export
Hochgeladen und geprüft wurde nur die anonymisierte Fassung Ihrer Datei. Die Originaldatei hält Ihr Browser nur im Speicher des Tabs, in dem Sie sie hochgeladen haben, um daraus die korrigierte Fassung zu erstellen; gesendet wird sie nie. Im selben Tab genügt deshalb ein Klick auf „Korrigierte PADnext exportieren“. Nach einem Neuladen ist die Originaldatei aus dem Speicher verschwunden: Dann werden Sie aufgefordert, sie aus Ihrer PVS erneut auszuwählen — genau die Datei, die Sie für diesen Stapel hochgeladen haben; der erwartete Dateiname wird angezeigt. Sie wird nur auf Ihrem Rechner gelesen und verlässt ihn nicht.
Danach prüft der Browser, ob es wirklich dieselbe Datei ist: er anonymisiert sie erneut und
vergleicht ihren Fingerabdruck mit dem, der beim Hochladen festgehalten wurde. Eine andere Datei
wird abgewiesen („Falsche Originaldatei ausgewählt“), bevor irgendetwas geschrieben wird. Dann
setzt er die berechneten Korrekturen in das vollständige Original ein — alle übrigen Angaben,
Patienten- und Praxisdaten eingeschlossen, bleiben unverändert — und bietet das Ergebnis als
<Dateiname>.korrigiert.<Endung> zum Speichern an. Wurde der Gebührenkatalog seit der Prüfung
geändert, verlangt der Export zuerst eine neue Prüfung des Stapels.
@aisendbetrag — die Rechnungssumme
Die Rechnungssumme <rechnung @aisendbetrag> entfernt die Anonymisierung; die Engine sieht sie
deshalb nie, und die Schemaprüfung der korrigierten Datei auch nicht. Sie wird ausschließlich im
Browser behandelt, mit ganzzahliger Cent-Arithmetik:
- Hat das Original eine Rechnungssumme, schreibt der Browser ursprünglicher Wert + Änderung der korrigierten Positionen. Wich die Summe schon vor der Korrektur von der Summe der Positionen ab, bleibt diese Abweichung erhalten; sie wird nicht stillschweigend berichtigt. Korrigiert wird nur, was Sie korrigiert haben.
- Hat das Original keine Rechnungssumme, wird keine angelegt.
- Lässt sich die Änderung nicht bestimmen (eine korrigierte Position nennt im Original keinen Betrag) oder ist die vorhandene Summe nicht lesbar, bleibt die Summe unverändert, und der Export zeigt einen Hinweis; die Datei wird trotzdem heruntergeladen. Prüfen Sie die Summe dann in Ihrer PVS.
- Vor der Schemaprüfung rechnet der Browser unabhängig nach, aus beiden Dateien neu gelesen. Steht in der korrigierten Datei eine andere Summe als ursprünglicher Wert + Änderung, wurde eine Summe neu angelegt oder trotz unbestimmbarer Änderung verändert, wird der Export blockiert („Rechnungssumme stimmt nicht“) und keine Datei heruntergeladen.
Ersetzte Ziffer und bekannte Grenzen
Ersetzte Ziffer: Die Zeile erhält im Export den Leistungstext der neuen Ziffer aus demselben Katalog, gegen den geprüft wurde, damit Ziffer und Text dasselbe sagen. Er wird nur geschrieben, wo die Zeile schon einen Leistungstext hat. Kann für eine Zeile kein neuer Text gesetzt werden, bleibt der alte stehen und der Export weist auf genau diese Zeile hin: den Leistungstext in der PVS an die neue Ziffer anpassen, bevor die Rechnung versendet wird.
Bekannte Grenzen:
- Stapel, für die kein Fingerabdruck festgehalten wurde (Uploads vor dessen Einführung, Partner-API-Stapel, die vor dem Fingerabdruck ihres Inhalts verarbeitet wurden), lassen sich erst exportieren, nachdem die Lieferung erneut über die Oberfläche hochgeladen wurde.
- Eine Korrektur, die in einem anderen Browser-Tab gespeichert wird, nachdem dieser Tab den Korrekturplan abgerufen hat, ist in diesem Export nicht enthalten. Ein erneuter Export nimmt sie auf.
Weiter
Partner-API
Schlüssel, Einzelprüfung, Tarif, Beleg-Hash und was der Vertrag nicht ist.
Stapelverarbeitung
Viele Lieferungen als ZIP, asynchron geprüft, mit Tarif-Manifest.
Rate Limits & Kontingent
Zwei verschiedene 429, und weshalb sie unterschiedlich zu behandeln sind.
Fehlercodes
Der vollständige Katalog, mit HTTP-Status und Handlungsempfehlung.
Die interaktive Referenz (Swagger UI) liefert Ihre eigene Installation unter
https://<ihr-server>:8443/docs, das Schema unter /openapi.json. Beide beschreiben genau die
Fassung, die bei Ihnen läuft.