69 lines
2.5 KiB
Python
69 lines
2.5 KiB
Python
#!/usr/bin/env python
|
|
"""Tes forward chaining berbasis cocok-tidaknya aturan."""
|
|
|
|
from expert_system import ForwardChaining
|
|
|
|
# Tes 1: PMK Ringan (hanya gejala umum)
|
|
print("=" * 60)
|
|
print("TES 1: PMK Ringan (hanya gejala umum)")
|
|
print("=" * 60)
|
|
fc1 = ForwardChaining()
|
|
fc1.tambah_gejala(['G01', 'G02', 'G03']) # Demam + Anorexia + Produksi turun
|
|
result1 = fc1.get_diagnosis()
|
|
if result1.get('status') == 'terdiagnosis':
|
|
for diag in result1['diagnosis']:
|
|
print(f"Diagnosis: {diag['nama']}")
|
|
print(f"Severity: {diag['severity']}")
|
|
print(f"Score: {diag['score']:.4f}")
|
|
print(f"Aturan yang cocok: {len(fc1.matched_rules)}")
|
|
print()
|
|
|
|
# Tes 2: PMK Sedang (gejala mulut dan tenggorokan)
|
|
print("=" * 60)
|
|
print("TES 2: PMK Sedang (gejala mulut dan tenggorokan)")
|
|
print("=" * 60)
|
|
fc2 = ForwardChaining()
|
|
fc2.tambah_gejala(['G01', 'G05', 'G06', 'G07']) # Demam + Hipersalivasi + Saliva berbusa + Submandibula
|
|
result2 = fc2.get_diagnosis()
|
|
if result2.get('status') == 'terdiagnosis':
|
|
for diag in result2['diagnosis']:
|
|
print(f"Diagnosis: {diag['nama']}")
|
|
print(f"Severity: {diag['severity']}")
|
|
print(f"Score: {diag['score']:.4f}")
|
|
print(f"Aturan yang cocok: {len(fc2.matched_rules)}")
|
|
print()
|
|
|
|
# Tes 2B: Gejala mulut dan tenggorokan berat tanpa demam
|
|
print("=" * 60)
|
|
print("TES 2B: Gejala mulut dan tenggorokan berat tanpa demam")
|
|
print("=" * 60)
|
|
fc2b = ForwardChaining()
|
|
fc2b.tambah_gejala(['G05', 'G06', 'G07']) # Hipersalivasi + Saliva berbusa + Submandibula
|
|
result2b = fc2b.get_diagnosis()
|
|
if result2b.get('status') == 'terdiagnosis':
|
|
for diag in result2b['diagnosis']:
|
|
print(f"Diagnosis: {diag['nama']}")
|
|
print(f"Severity: {diag['severity']}")
|
|
print(f"Score: {diag['score']:.4f}")
|
|
print(f"Aturan yang cocok: {len(fc2b.matched_rules)}")
|
|
print()
|
|
|
|
# Tes 3: PMK Berat (gejala kaki/kuku)
|
|
print("=" * 60)
|
|
print("TES 3: PMK Berat (gejala kaki/kuku)")
|
|
print("=" * 60)
|
|
fc3 = ForwardChaining()
|
|
fc3.tambah_gejala(['G01', 'G05', 'G12', 'G14']) # Demam + Hipersalivasi + Nekrosis + Pincak
|
|
result3 = fc3.get_diagnosis()
|
|
if result3.get('status') == 'terdiagnosis':
|
|
for diag in result3['diagnosis']:
|
|
print(f"Diagnosis: {diag['nama']}")
|
|
print(f"Severity: {diag['severity']}")
|
|
print(f"Score: {diag['score']:.4f}")
|
|
print(f"Aturan yang cocok: {len(fc3.matched_rules)}")
|
|
print()
|
|
|
|
print("=" * 60)
|
|
print("✓ Sistem pencocokan aturan berjalan dengan baik!")
|
|
print("=" * 60)
|