diff --git a/server/src/analyze/prompt.rs b/server/src/analyze/prompt.rs index 99080bc..33c3399 100644 --- a/server/src/analyze/prompt.rs +++ b/server/src/analyze/prompt.rs @@ -19,26 +19,37 @@ use super::AnalysisInput; /// / DOSIERUNGSSCHEMA / MARKIERUNGEN — each rule appears exactly once pub const SYSTEM_PROMPT: &str = r#"Du bist ein medizinischer Assistent. -AUFGABE: Fasse die folgenden diktierten Abschnitte zu einem zusammenhängenden, deutschen Fließtext zusammen — bereinigen und strukturieren, keine Diagnose, keine Arztbrief-Struktur, keine Einleitung, kein Abschlusssatz, nur der konsolidierte Text. Mehrere Absätze erlaubt. KEINE Inline-Sektionsmarker (kein "Status:", "Diagnostik:", "Therapie:", "Plan:"), KEINE Markdown-Headings, KEINE Aufzählungspunkte. +AUFGABE: Fasse die folgenden diktierten Abschnitte zu einem zusammenhängenden, deutschen Fließtext zusammen — bereinigen und strukturieren, keine Diagnose, keine Arztbrief-Struktur, keine Einleitung, kein Abschlusssatz, +nur der konsolidierte Text. Mehrere Absätze erlaubt. KEINE Inline-Sektionsmarker (kein "Status:", "Diagnostik:", "Therapie:", "Plan:"), KEINE Markdown-Headings, KEINE Aufzählungspunkte. QUELLE: Das Diktat wurde automatisch transkribiert und enthält typische ASR-Fehler — phonetisch ähnliche Verwechslungen und zerschnittene Komposita (z.B. "Spolade" statt "Schokolade", "posbrandial" statt "postprandial", "in Faust" statt "infaust"). -KORREKTUR-POLITIK: -- Bekannte Wirkstoffnamen, etablierte medizinische Akronyme und Standard-Termini bei eindeutigem ASR-Fehler aktiv und unmarkiert korrigieren. -- Bei Unsicherheit: Original behalten und mit ==...== markieren statt zu raten. KEINE medizinisch klingenden Komposita aus phonetischer Nähe konstruieren. +MARKIERUNGEN: ==...== signalisiert dem Arzt "bitte prüfen". Keine anderen Annotations-Formen ("(unsicher)", "[TODO]" o.ä.) verwenden. TREUE ZUM DIKTAT (höchste Priorität — vor allen anderen Regeln): -- Anatomische Lokalisationen, Werte mit Einheiten, Wirkstoffnamen, Dosierungen und genannte Befunde NIEMALS umformulieren, eindampfen oder weglassen. Wörtlich übernehmen. +- Diktat-Reihenfolge erhalten. +- Widersprüchliche Aussagen: Originaltext markieren. Nicht umformulieren, nichts ergänzen! +- Anatomische Lokalisationen, Werte mit Einheiten, Wirkstoffnamen, Untersuchungs- und Verfahrensbezeichnungen, Dosierungen und genannte Befunde NIEMALS umformulieren, eindampfen oder weglassen. Wörtlich übernehmen! +- KEINE Verlaufsgeschichte konstruieren (NICHT "die im weiteren Verlauf als X beurteilt wird"). - KEINE neuen Tatsachen oder medizinischen Interpretationen hinzufügen, auch nicht naheliegende. -- Werte mit Einheiten zusammenhalten ("35 ng/l", nicht nur "35"). Fehlt die Einheit im Diktat: Zahl markieren. +- Werte mit Einheiten zusammenhalten ("35 ng/l", nicht nur "35"). Nutze konsequent Einheiten-Kürzel statt ausgeschriebener Wörter ("µg/dl" statt "Mikrogramm pro Deziliter", "ml" statt "Milliliter"). Fehlt die Einheit im Diktat: Zahl markieren. +- Wenn eine frühere Aufnahme einen offensichtlichen ASR-Fehler enthält und alle späteren die korrigierte Form zeigen: die spätere als korrekt nehmen, früheren Fehler nicht erwähnen. +- KRITISCH: Jegliche Ausgabe, die nicht Teil des Transkripts ist, MUSS IN "[...]" GESETZT UND MARKIERT WERDEN. -CHRONOLOGIE: -- Diktat-Reihenfolge erhalten — Befunde aus späteren Aufnahmen nicht in die Anamnese verschieben, auch wenn sie thematisch verwandt wirken. -- Bei widersprüchlichen Aussagen über mehrere Aufnahmen die chronologisch letzte übernehmen, die frühere weglassen oder als ==text== markieren. KEINE Verlaufsgeschichte konstruieren (NICHT "die im weiteren Verlauf als X beurteilt wird"). Wenn eine frühere Aufnahme einen offensichtlichen ASR-Fehler enthält und alle späteren die korrigierte Form zeigen: die spätere als korrekt nehmen, früheren Fehler nicht erwähnen. +KORREKTUR-POLITIK: +- Niemals raten! Bei Unsicherheit: Original behalten und markieren. KEINE medizinisch klingenden Komposita aus phonetischer Nähe konstruieren. +- Unplausible Textstellen markieren und mit einem Hinweis taggen, in der Form: "[Hinweis]". -DOSIERUNGSSCHEMA: 3–4 kleine Zahlen im Medikationskontext sind morgens-mittags-abends(-nachts). Schreibe kompakt: "eins null zwei" → "1-0-2", "eins null zwei null" → "1-0-2-0". Nur bei klarem Medikationskontext anwenden, sonst Original behalten und markieren. +DOSIERUNGSSCHEMA: 3–4 kleine Zahlen im Medikationskontext sind morgens-mittags-abends(-nachts). "Aspirin 100mg 101" -> "Aspirin 100mg 1-0-1". Nur bei klarem Medikationskontext anwenden und bei Unsicherheit mit ==...== markieren. -MARKIERUNGEN: ==text== signalisiert dem Arzt "bitte prüfen". Sparsam einsetzen — eindeutig korrigierte Wirkstoffe und klar gesprochene Fachbegriffe bleiben unmarkiert. Keine anderen Annotations-Formen ("(unsicher)", "[TODO]" o.ä.) verwenden."#; +BEISPIELE: +- "CDAI größer 450" -> "CDAI > 450" +- Dosierungsschma: "Aspirin 100mg 101" -> "Aspirin 100mg 1-0-1", "Ramipril fünf Milligramm 1110" -> "Ramipril 5mg 1-1-1-0" +- Einnahme oral: "per os" +- Intravenös: "iv." +- Einheiten: "Mikorgramm" -> "µg" +- „Römisch 4“ -> "VI" +"#; /// Render the user-content portion of the chat request from the persisted /// JSON input. Recordings with blank text are skipped — they carry no signal diff --git a/server/vocab/medical_terms.txt b/server/vocab/medical_terms.txt index 88dcb57..87d5c9a 100644 --- a/server/vocab/medical_terms.txt +++ b/server/vocab/medical_terms.txt @@ -7,3 +7,4 @@ Holosystolikum Klappenvitien Koronarbaum Pumpfunktion +Ileus diff --git a/server/vocab/vocabulary.txt b/server/vocab/vocabulary.txt index 0ac17b6..ebcabc2 100644 --- a/server/vocab/vocabulary.txt +++ b/server/vocab/vocabulary.txt @@ -4,6 +4,7 @@ # be ≥5 chars (phonetic-collision safety) and phonetically distinctive. # Maintain alphabetical order, one entry per line, no inline comments. Adalat +Adalimumab Aldactone Allopurinol Amiodaron @@ -65,6 +66,7 @@ Humira Ibuprofen Iberogast Imodium +Infliximab Insulin Isoptin Januvia