File size: 1,847 Bytes
caf9410
 
 
 
 
 
6e48304
6fa1fee
6e48304
6fa1fee
 
 
6e48304
 
6fa1fee
6e48304
6fa1fee
6e48304
6fa1fee
6e48304
 
6fa1fee
6e48304
6fa1fee
6e48304
6fa1fee
6e48304
caf9410
6e48304
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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)