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)