Files
aza/AzA march 2026 - Kopie (14)/aza_med_validator.py
2026-04-19 20:41:37 +02:00

385 lines
20 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""Zentrale Medikamenten-Validierung fuer AZA Desktop.
Stellt validate_medication_name() und suggest_medication_candidate() bereit.
Verwendet eine kuratierte Liste bekannter Medikamente/Wirkstoffe im DACH-Raum
plus difflib.get_close_matches() fuer Fuzzy-Matching.
"""
import difflib
_KNOWN_MEDICATIONS: frozenset = frozenset({
# --- Dermatologie ---
"Dermovate", "Clobetasol", "Elidel", "Pimecrolimus", "Protopic", "Tacrolimus",
"Dupixent", "Dupilumab", "Cosentyx", "Secukinumab", "Tremfya", "Guselkumab",
"Skyrizi", "Risankizumab", "Stelara", "Ustekinumab", "Humira", "Adalimumab",
"Enbrel", "Etanercept", "Taltz", "Ixekizumab", "Bimzelx", "Bimekizumab",
"Otezla", "Apremilast", "Fumaderm", "Dimethylfumarat", "Skilarence",
"Methotrexat", "MTX", "Ciclosporin", "Cyclosporin", "Sandimmun",
"Acitretin", "Neotigason", "Isotretinoin", "Roaccutan", "Accutane",
"Daivobet", "Calcipotriol", "Daivonex", "Betamethason", "Betnovate",
"Hydrocortison", "Advantan", "Methylprednisolon", "Prednisolon", "Prednison",
"Dexamethason", "Triamcinolon", "Kenacort", "Mometason", "Elocom",
"Fluticason", "Cutivate", "Fluocinolon", "Synalar", "Halcinonid",
"Aldara", "Imiquimod", "Efudix", "Fluorouracil", "5-FU",
"Picato", "Ingenolmebutat", "Solaraze", "Diclofenac",
"Lamisil", "Terbinafin", "Itraconazol", "Sporanox", "Fluconazol", "Diflucan",
"Ketoconazol", "Nizoral", "Clotrimazol", "Canesten", "Miconazol", "Daktarin",
"Nystatin", "Permethrin", "Infectoscab", "Ivermectin", "Stromectol", "Scabioral",
"Aciclovir", "Zovirax", "Valaciclovir", "Valtrex",
"Mupirocin", "Bactroban", "Fusidinsaeure", "Fucidine", "Fucidin",
"Retinol", "Tretinoin", "Adapalen", "Differin", "Epiduo",
"Azelainsaeure", "Skinoren", "Benzoylperoxid", "BPO",
"Doxycyclin", "Minocyclin", "Tetracyclin",
"Bilastin", "Cetirizin", "Loratadin", "Desloratadin", "Aerius",
"Fexofenadin", "Telfast", "Levocetirizin", "Xyzal",
"Hydroxyzin", "Atarax", "Clemastin", "Tavegil",
"Rituximab", "MabThera", "Omalizumab", "Xolair",
"Baricitinib", "Olumiant", "Upadacitinib", "Rinvoq",
"Abrocitinib", "Cibinqo", "Ruxolitinib", "Jakavi", "Opzelura",
"Tralokinumab", "Adtralza", "Lebrikizumab", "Ebglyss",
"Deucravacitinib", "Sotyktu", "Tildrakizumab", "Ilumetri",
"Brodalumab", "Kyntheum", "Certolizumab", "Cimzia",
"Infliximab", "Remicade", "Golimumab", "Simponi",
# --- Schmerz / Analgetika ---
"Paracetamol", "Dafalgan", "Panadol", "Ibuprofen", "Brufen", "Algifor",
"Naproxen", "Aspirin", "Acetylsalicylsaeure", "Novalgin", "Metamizol",
"Tramadol", "Tramal", "Morphin", "Oxycodon", "Targin", "Fentanyl",
"Durogesic", "Buprenorphin", "Temgesic", "Transtec",
"Gabapentin", "Neurontin", "Pregabalin", "Lyrica",
"Celecoxib", "Celebrex", "Etoricoxib", "Arcoxia",
"Indometacin", "Piroxicam", "Meloxicam",
# --- Kardio / Blutdruck / Antikoagulation ---
"Amlodipin", "Norvasc", "Lisinopril", "Enalapril", "Ramipril", "Triatec",
"Candesartan", "Atacand", "Valsartan", "Diovan", "Losartan", "Cosaar",
"Irbesartan", "Aprovel", "Telmisartan", "Micardis",
"Metoprolol", "Beloc", "Bisoprolol", "Concor", "Atenolol", "Tenormin",
"Propranolol", "Inderal", "Carvedilol", "Nebivolol",
"Hydrochlorothiazid", "HCT", "Torasemid", "Furosemid", "Lasix",
"Spironolacton", "Aldactone", "Eplerenon",
"Marcoumar", "Phenprocoumon", "Xarelto", "Rivaroxaban",
"Eliquis", "Apixaban", "Pradaxa", "Dabigatran", "Lixiana", "Edoxaban",
"Heparin", "Enoxaparin", "Clexane", "Clopidogrel", "Plavix",
"Ticagrelor", "Brilique", "Prasugrel", "Efient",
"Atorvastatin", "Sortis", "Rosuvastatin", "Crestor", "Simvastatin", "Zocor",
"Pravastatin", "Ezetimib", "Ezetrol", "Evolocumab", "Repatha",
"Alirocumab", "Praluent", "Inclisiran", "Leqvio",
"Amiodaron", "Cordarone", "Digoxin",
# --- Diabetes ---
"Metformin", "Glucophage", "Jardiance", "Empagliflozin",
"Forxiga", "Dapagliflozin", "Invokana", "Canagliflozin",
"Ozempic", "Semaglutid", "Wegovy", "Rybelsus",
"Trulicity", "Dulaglutid", "Victoza", "Liraglutid",
"Januvia", "Sitagliptin", "Galvus", "Vildagliptin",
"Insulin", "Lantus", "Levemir", "Tresiba", "NovoRapid", "Humalog",
"Glimepirid", "Amaryl", "Gliclazid",
"Pioglitazon", "Actos",
# --- Antibiotika ---
"Amoxicillin", "Augmentin", "Amoxicillin-Clavulansaeure",
"Ciprofloxacin", "Cipro", "Levofloxacin", "Tavanic",
"Moxifloxacin", "Avalox", "Azithromycin", "Zithromax",
"Clarithromycin", "Klacid", "Erythromycin",
"Cotrimoxazol", "Bactrim", "Trimethoprim",
"Cefuroxim", "Zinnat", "Ceftriaxon", "Rocephin",
"Cefpodoxim", "Cephalexin", "Clindamycin", "Dalacin",
"Metronidazol", "Flagyl", "Penicillin", "Nitrofurantoin",
"Fosfomycin", "Monuril", "Rifampicin",
"Linezolid", "Zyvoxid", "Vancomycin", "Daptomycin",
# --- Psychopharmaka ---
"Sertralin", "Zoloft", "Escitalopram", "Cipralex", "Citalopram",
"Fluoxetin", "Fluctine", "Paroxetin", "Deroxat",
"Venlafaxin", "Efexor", "Duloxetin", "Cymbalta",
"Mirtazapin", "Remeron", "Amitriptylin", "Saroten",
"Quetiapin", "Seroquel", "Olanzapin", "Zyprexa",
"Risperidon", "Risperdal", "Aripiprazol", "Abilify",
"Lithium", "Quilonum", "Valproat", "Depakine",
"Carbamazepin", "Tegretol", "Lamotrigin", "Lamictal",
"Lorazepam", "Temesta", "Diazepam", "Valium",
"Oxazepam", "Midazolam", "Dormicum",
"Zolpidem", "Stilnox", "Zopiclon",
"Methylphenidat", "Ritalin", "Concerta",
"Atomoxetin", "Strattera",
# --- Magen/Darm ---
"Omeprazol", "Antra", "Pantoprazol", "Pantozol", "Zurcal",
"Esomeprazol", "Nexium", "Lansoprazol", "Rabeprazol",
"Ranitidin", "Famotidin", "Antacida",
"Ondansetron", "Zofran", "Metoclopramid", "Paspertin",
"Domperidon", "Motilium", "Loperamid", "Imodium",
"Mesalazin", "Pentasa", "Salofalk", "Sulfasalazin",
"Budesonid", "Entocort", "Azathioprin", "Imurek",
"Mercaptopurin",
# --- Atemwege ---
"Salbutamol", "Ventolin", "Formoterol", "Salmeterol",
"Beclomethason", "Budesonid", "Pulmicort",
"Fluticason", "Flutide", "Seretide", "Symbicort",
"Tiotropium", "Spiriva", "Ipratropium", "Atrovent",
"Montelukast", "Singulair", "Theophyllin",
"Benralizumab", "Fasenra", "Mepolizumab", "Nucala",
# --- Schilddruese ---
"Levothyroxin", "Euthyrox", "L-Thyroxin",
"Carbimazol", "Neo-Mercazole", "Thiamazol", "Tapazole",
# --- Urologie ---
"Tamsulosin", "Pradif", "Finasterid", "Proscar", "Propecia",
"Dutasterid", "Avodart", "Sildenafil", "Viagra",
"Tadalafil", "Cialis", "Solifenacin", "Vesicare",
"Mirabegron", "Betmiga",
# --- Augen ---
"Timolol", "Latanoprost", "Xalatan", "Travoprost", "Travatan",
"Dorzolamid", "Brinzolamid",
# --- Weitere haeufige ---
"Allopurinol", "Zyloric", "Febuxostat", "Adenuric",
"Colchicin", "Colchysat",
"Alendronsaeure", "Fosamax", "Risedronat", "Ibandronat",
"Denosumab", "Prolia", "Xgeva",
"Calcitonin", "Calcium", "Vitamin D", "Cholecalciferol",
"Eisen", "Ferritin", "Ferinject", "Eisenfumarat",
"Folsaeure", "Vitamin B12", "Hydroxocobalamin",
"Magnesium", "Kalium",
"Leflunomid", "Arava", "Mycophenolatmofetil", "CellCept",
"Tacrolimus", "Prograf", "Everolimus", "Certican",
"Sirolimus", "Rapamune",
"Hydroxychloroquin", "Plaquenil", "Chloroquin",
"Sulfasalazin", "Salazopyrin",
"Tofacitinib", "Xeljanz",
"Tocilizumab", "Actemra", "RoActemra",
"Sarilumab", "Kevzara",
"Belimumab", "Benlysta",
"Vedolizumab", "Entyvio",
"Natalizumab", "Tysabri",
"Fingolimod", "Gilenya", "Dimethylfumarat", "Tecfidera",
"Teriflunomid", "Aubagio",
"Ocrelizumab", "Ocrevus",
# --- Onkologie (haeufigste) ---
"Tamoxifen", "Letrozol", "Femara", "Anastrozol", "Arimidex",
"Imatinib", "Glivec", "Pembrolizumab", "Keytruda",
"Nivolumab", "Opdivo", "Atezolizumab", "Tecentriq",
"Ipilimumab", "Yervoy", "Trastuzumab", "Herceptin",
"Bevacizumab", "Avastin",
"Palbociclib", "Ibrance", "Ribociclib", "Kisqali",
})
_KNOWN_LOWER = {m.lower(): m for m in _KNOWN_MEDICATIONS}
def validate_medication_name(name: str) -> tuple:
"""Prueft ob ein Medikamentenname bekannt ist.
Returns:
(True, canonical_name) sicher erkannt
(False, candidate_or_None) nicht erkannt; candidate ist ein
naher Treffer oder None
"""
if not name or len(name.strip()) < 2:
return (False, None)
clean = name.strip()
low = clean.lower()
if low in _KNOWN_LOWER:
return (True, _KNOWN_LOWER[low])
for k, v in _KNOWN_LOWER.items():
if k == low.rstrip("s"):
return (True, v)
candidates = difflib.get_close_matches(low, _KNOWN_LOWER.keys(), n=1, cutoff=0.75)
if candidates:
return (False, _KNOWN_LOWER[candidates[0]])
return (False, None)
def suggest_medication_candidate(name: str) -> str | None:
"""Gibt den besten Kandidaten zurueck oder None."""
valid, candidate = validate_medication_name(name)
if valid:
return name.strip()
return candidate
# ---------------------------------------------------------------------------
# Kuratierte Medikamenten-Fakten aus Fachinformationen (Compendium.ch / EMA)
# ---------------------------------------------------------------------------
# Jeder Eintrag ist MANUELL aus der jeweiligen Fachinformation extrahiert.
# NUR Informationen, die direkt aus der Quelle ableitbar sind.
# Felder: wirkstoff, indikation, einnahme, dosierung, wichtig, quelle
_MEDICATION_FACTS: dict[str, dict] = {
"bilastin": {
"wirkstoff": "Bilastin",
"indikation": "Nicht-sedierendes Antihistaminikum (H1-Blocker, 2. Generation). Symptomatische Behandlung allergische Rhinokonjunktivitis und Urtikaria.",
"einnahme": "Nuechtern einnehmen: mindestens 1 Stunde vor oder 2 Stunden nach einer Mahlzeit. Nicht mit Fruchtsaft (insbesondere Grapefruit) einnehmen, da dies die Bioverfuegbarkeit reduziert.",
"dosierung": "Erwachsene und Jugendliche ab 12 Jahren: 20 mg 1x taeglich.",
"wichtig": "Keine klinisch relevante Sedierung in Studien. Kein relevanter Einfluss auf QTc in therapeutischer Dosis.",
"quelle": "Fachinformation Bilastin / Compendium.ch, EMA EPAR Bilastin",
},
"cetirizin": {
"wirkstoff": "Cetirizin",
"indikation": "Antihistaminikum (H1-Blocker, 2. Generation). Allergische Rhinitis, chronische spontane Urtikaria.",
"einnahme": "Unabhaengig von Mahlzeiten einnehmbar.",
"dosierung": "Erwachsene: 10 mg 1x taeglich. Bei Niereninsuffizienz Dosisreduktion.",
"wichtig": "Kann Muedigkeit verursachen. Dosisanpassung bei Niereninsuffizienz erforderlich.",
"quelle": "Fachinformation Cetirizin / Compendium.ch",
},
"loratadin": {
"wirkstoff": "Loratadin",
"indikation": "Antihistaminikum (H1-Blocker, 2. Generation). Allergische Rhinitis, chronische Urtikaria.",
"einnahme": "Unabhaengig von Mahlzeiten einnehmbar.",
"dosierung": "Erwachsene und Kinder ab 12 Jahren: 10 mg 1x taeglich.",
"wichtig": "Nicht sedierend in therapeutischer Dosis. Vorsicht bei schwerer Leberinsuffizienz.",
"quelle": "Fachinformation Loratadin / Compendium.ch",
},
"desloratadin": {
"wirkstoff": "Desloratadin",
"indikation": "Antihistaminikum (H1-Blocker, 2. Generation). Aktiver Metabolit von Loratadin. Allergische Rhinitis, chronische Urtikaria.",
"einnahme": "Unabhaengig von Mahlzeiten einnehmbar.",
"dosierung": "Erwachsene: 5 mg 1x taeglich.",
"wichtig": "Sehr geringe Sedierung. Dosisanpassung bei Nieren-/Leberinsuffizienz erwaegen.",
"quelle": "Fachinformation Desloratadin (Aerius) / Compendium.ch",
},
"fexofenadin": {
"wirkstoff": "Fexofenadin",
"indikation": "Antihistaminikum (H1-Blocker, 2. Generation). Allergische Rhinitis, chronische Urtikaria.",
"einnahme": "Nicht mit Fruchtsaft (Grapefruit, Orange, Apfel) einnehmen reduziert Bioverfuegbarkeit. Vor einer Mahlzeit einnehmen.",
"dosierung": "Allergische Rhinitis: 120 mg 1x taeglich. Urtikaria: 180 mg 1x taeglich.",
"wichtig": "Nicht sedierend. Keine Dosisanpassung bei Leberinsuffizienz noetig.",
"quelle": "Fachinformation Fexofenadin (Telfast) / Compendium.ch",
},
"ibuprofen": {
"wirkstoff": "Ibuprofen",
"indikation": "NSAR. Schmerzen, Entzuendungen, Fieber.",
"einnahme": "Zu oder nach einer Mahlzeit einnehmen (Magenschutz). Mit ausreichend Fluessigkeit.",
"dosierung": "200-400 mg alle 6-8 Stunden. Maximaldosis OTC: 1200 mg/Tag. Verschreibungspflichtig: bis 2400 mg/Tag.",
"wichtig": "GI-Blutungsrisiko. KI bei schwerer Nieren-/Leberinsuffizienz, 3. Trimenon, aktiver GI-Blutung.",
"quelle": "Fachinformation Ibuprofen / Compendium.ch",
},
"methotrexat": {
"wirkstoff": "Methotrexat",
"indikation": "Immunsuppressivum / Zytostatikum. Schwere Psoriasis, rheumatoide Arthritis, weitere Autoimmunerkrankungen.",
"einnahme": "CAVE: 1x WOECHENTLICH, NICHT taeglich! Oral oder s.c. Folsaeure-Substitution (5 mg) 24-48 Stunden nach MTX-Gabe empfohlen.",
"dosierung": "Dermatologie: 7.5-25 mg 1x pro Woche. Einschleichend beginnen.",
"wichtig": "Verwechslungsgefahr taeglich/woechentlich ist lebensgefaehrlich! Regelmaessige Kontrolle von Blutbild, Leber- und Nierenwerten. Teratogen.",
"quelle": "Fachinformation Methotrexat / Compendium.ch",
},
"dupilumab": {
"wirkstoff": "Dupilumab",
"indikation": "Monoklonaler Antikoerper (Anti-IL-4/IL-13). Mittelschwere bis schwere atopische Dermatitis, Asthma, CRSwNP.",
"einnahme": "Subkutane Injektion. Injektionsstellen wechseln.",
"dosierung": "Atopische Dermatitis Erwachsene: 600 mg Initialdosis (2x 300 mg), dann 300 mg alle 2 Wochen.",
"wichtig": "Haeufigste NW: Reaktion an Injektionsstelle, Konjunktivitis. Keine Lebendimpfstoffe waehrend Therapie.",
"quelle": "Fachinformation Dupixent (Dupilumab) / Compendium.ch, EMA EPAR",
},
"prednisolon": {
"wirkstoff": "Prednisolon",
"indikation": "Glukokortikoid. Entzuendliche und allergische Erkrankungen, Autoimmunerkrankungen.",
"einnahme": "Morgens einnehmen (entsprechend zirkadianem Cortisol-Rhythmus). Mit oder nach einer Mahlzeit.",
"dosierung": "Stark indikationsabhaengig. Stosstherapie, ausschleichend oder Erhaltungsdosis je nach Erkrankung.",
"wichtig": "Ausschleichen bei Therapie ueber 2 Wochen. Osteoporose-Prophylaxe bei Langzeittherapie. Infektionsrisiko erhoht.",
"quelle": "Fachinformation Prednisolon / Compendium.ch",
},
"aciclovir": {
"wirkstoff": "Aciclovir",
"indikation": "Virostatikum. Herpes-simplex-Infektionen, Varizella-Zoster-Infektionen.",
"einnahme": "Mit reichlich Fluessigkeit einnehmen (Kristallurierisiko). Unabhaengig von Mahlzeiten.",
"dosierung": "Herpes simplex: 5x 200 mg/Tag. Zoster: 5x 800 mg/Tag fuer 7 Tage.",
"wichtig": "Ausreichende Hydratation wichtig. Dosisanpassung bei Niereninsuffizienz. Fruehzeitiger Therapiebeginn entscheidend.",
"quelle": "Fachinformation Aciclovir (Zovirax) / Compendium.ch",
},
"isotretinoin": {
"wirkstoff": "Isotretinoin",
"indikation": "Retinoid. Schwere, therapieresistente Akne (nodulaer-zystisch).",
"einnahme": "Mit einer fetthaltigen Mahlzeit einnehmen (verbessert Resorption erheblich).",
"dosierung": "0.5-1.0 mg/kg/Tag, Gesamtkumulativdosis 120-150 mg/kg.",
"wichtig": "STRENG TERATOGEN Schwangerschaftsverhuetungsprogramm obligat. Trockene Haut/Lippen haeufig. Regelmaessige Laborkontrolle (Lipide, Leberwerte).",
"quelle": "Fachinformation Isotretinoin (Roaccutan) / Compendium.ch",
},
"omeprazol": {
"wirkstoff": "Omeprazol",
"indikation": "Protonenpumpeninhibitor (PPI). Refluxoesophagitis, peptisches Ulkus, Magenschutz bei NSAR.",
"einnahme": "Vor einer Mahlzeit einnehmen (idealerweise 30 Min. vor dem Fruehstueck). Kapsel ganz schlucken.",
"dosierung": "Standarddosis: 20 mg 1x taeglich. Bei Ulkus oder Reflux: 20-40 mg/Tag.",
"wichtig": "Langzeitanwendung: Magnesium-/B12-Mangel, Osteoporoserisiko erhoht. Interaktion mit Clopidogrel beachten.",
"quelle": "Fachinformation Omeprazol (Antra) / Compendium.ch",
},
"pantoprazol": {
"wirkstoff": "Pantoprazol",
"indikation": "Protonenpumpeninhibitor (PPI). Refluxoesophagitis, peptisches Ulkus, Magenschutz bei NSAR.",
"einnahme": "Vor einer Mahlzeit einnehmen (idealerweise morgens). Tablette ganz schlucken.",
"dosierung": "Standarddosis: 20-40 mg 1x taeglich.",
"wichtig": "Langzeitanwendung: Magnesium-/B12-Mangel moeglich. Geringeres CYP-Interaktionspotenzial als Omeprazol.",
"quelle": "Fachinformation Pantoprazol (Pantozol) / Compendium.ch",
},
"amoxicillin": {
"wirkstoff": "Amoxicillin",
"indikation": "Aminopenicillin. Bakterielle Infektionen der Atemwege, HNO, Harnwege, Haut.",
"einnahme": "Unabhaengig von Mahlzeiten einnehmbar.",
"dosierung": "Erwachsene: 750-3000 mg/Tag, aufgeteilt in 2-3 Einzeldosen.",
"wichtig": "Penicillinallergie beachten. Exanthem besonders bei EBV-Infektion.",
"quelle": "Fachinformation Amoxicillin / Compendium.ch",
},
"doxycyclin": {
"wirkstoff": "Doxycyclin",
"indikation": "Tetracyclin-Antibiotikum. Akne, Rosacea, bakterielle Infektionen, Borreliose.",
"einnahme": "Mit reichlich Fluessigkeit und aufrecht einnehmen (Oesophagus-Ulkusrisiko). Milchprodukte und Antazida meiden.",
"dosierung": "200 mg am 1. Tag, dann 100 mg 1x taeglich.",
"wichtig": "Photosensibilisierung Sonnenschutz! Nicht bei Kindern unter 8 Jahren und in der Schwangerschaft.",
"quelle": "Fachinformation Doxycyclin / Compendium.ch",
},
"secukinumab": {
"wirkstoff": "Secukinumab",
"indikation": "Monoklonaler Antikoerper (Anti-IL-17A). Mittelschwere bis schwere Plaque-Psoriasis, Psoriasis-Arthritis.",
"einnahme": "Subkutane Injektion. Fertigpen oder Fertigspritze. Injektionsstellen wechseln.",
"dosierung": "Psoriasis: 300 mg s.c. Woche 0, 1, 2, 3, 4, danach 300 mg alle 4 Wochen.",
"wichtig": "TB-Screening vor Therapiebeginn. Haeufigste NW: Infektionen obere Atemwege. Vorsicht bei CED.",
"quelle": "Fachinformation Cosentyx (Secukinumab) / Compendium.ch, EMA EPAR",
},
"adalimumab": {
"wirkstoff": "Adalimumab",
"indikation": "TNF-alpha-Inhibitor. Psoriasis, rheumatoide Arthritis, Morbus Crohn, Colitis ulcerosa, Hidradenitis suppurativa.",
"einnahme": "Subkutane Injektion. Injektionsstellen wechseln.",
"dosierung": "Psoriasis: 80 mg Initialdosis, dann 40 mg alle 2 Wochen ab Woche 1.",
"wichtig": "TB-Screening vor Therapiebeginn obligat. Erhoehtes Infektionsrisiko. Keine Lebendimpfstoffe.",
"quelle": "Fachinformation Humira (Adalimumab) / Compendium.ch, EMA EPAR",
},
"paracetamol": {
"wirkstoff": "Paracetamol",
"indikation": "Analgetikum / Antipyretikum. Leichte bis maessige Schmerzen, Fieber.",
"einnahme": "Unabhaengig von Mahlzeiten einnehmbar.",
"dosierung": "Erwachsene: 500-1000 mg alle 4-6 Stunden. Maximaldosis: 4000 mg/Tag (Lebergesunde).",
"wichtig": "Hepatotoxisch bei Ueberdosierung! Bei Leberinsuffizienz/Alkoholabusus Maximaldosis reduzieren.",
"quelle": "Fachinformation Paracetamol (Dafalgan) / Compendium.ch",
},
}
def get_medication_facts(name: str) -> dict | None:
"""Gibt kuratierte Medikamenten-Fakten zurueck oder None wenn nicht vorhanden."""
if not name:
return None
low = name.strip().lower()
if low in _MEDICATION_FACTS:
return _MEDICATION_FACTS[low]
for facts in _MEDICATION_FACTS.values():
if facts["wirkstoff"].lower() == low:
return facts
is_valid, canonical = validate_medication_name(name)
if is_valid and canonical:
cl = canonical.lower()
if cl in _MEDICATION_FACTS:
return _MEDICATION_FACTS[cl]
for facts in _MEDICATION_FACTS.values():
if facts["wirkstoff"].lower() == cl:
return facts
return None