Spaces:
Sleeping
Sleeping
| from models import PatientState | |
| def rule_based_cdss(state: PatientState) -> str: | |
| v = state.vitals | |
| labs = state.labs | |
| alerts = [] | |
| if state.patient_type == 'Mother': | |
| if v.sbp < 100 and v.hr > 110 and ('Hb' in labs and labs['Hb'] <= 9): | |
| alerts.append('PPH suspected: lakukan uterotonik, massage uterus, siapkan transfusi, monitoring 5 menit.') | |
| if v.sbp >= 150 or v.dbp >= 110: | |
| alerts.append('Preeklampsia') | |
| if v.temp_c >= 38.5 and v.sbp <= 100: | |
| alerts.append('Sepsis maternal: kultur darah & luka, antibiotik spektrum luas dalam 1 jam, monitor MAP & urine.') | |
| if state.patient_type == 'Neonate': | |
| if labs.get('BB', 9999) < 2500 or labs.get('UsiaGestasi_mgg', 99) < 37: | |
| alerts.append('Prematurity/BBLR') | |
| if v.spo2 < 90 or v.hr < 100: | |
| alerts.append('Asfiksia: resusitasi neonatal sesuai NRP, ventilasi tekanan positif, evaluasi setiap 30 detik.') | |
| if v.temp_c >= 38.0 and labs.get('CRP', 0) >= 10: | |
| alerts.append('Sepsis neonatal: kultur darah, antibiotik empiris NICU, monitor tanda vital ketat.') | |
| if state.patient_type == 'Gyn': | |
| if labs.get('UrineOutput_ml_hr', 9999) < 20: | |
| alerts.append('Komplikasi pasca bedah (curiga ureter): evaluasi segera, USG/CT urografi, konsult urologi.') | |
| if v.temp_c >= 38.0 or labs.get('Luka') == 'bengkak+kemerahan': | |
| alerts.append('Infeksi pasca-bedah: kultur luka, antibiotik, pertimbangkan debridement.') | |
| if labs.get('PapSmear', '').startswith('abnormal'): | |
| alerts.append('Pap smear abnormal tanpa follow-up: lakukan kolposkopi & biopsi, aktifkan notifikasi rujukan.') | |
| if not alerts: | |
| return 'Tidak ada alert prioritas tinggi. Lanjutkan pemantauan dan dokumentasi.' | |
| return '\n- '.join(['ALERT:'] + alerts) |