Module: knowledge
Version: 1.0
Last Updated: January 2026
The Knowledge Base module provides structured medical information for 38 clinical conditions and 29 medications, organized by medical specialty with ICD-10 and ATC classification compliance.
knowledge/
├── __init__.py # Main integration module
├── conditions_cardiovascular.py # 6 cardiovascular conditions
├── conditions_respiratory.py # 7 respiratory conditions
├── conditions_gastrointestinal.py # 7 GI conditions
├── conditions_infectious.py # 7 infectious conditions
├── conditions_emergency.py # 5 emergency conditions
├── conditions_neurological.py # 6 neurological conditions
└── medications_database.py # 29 essential medications
from dataclasses import dataclass
@dataclass
class MedicalCondition:
name: str # Condition name (Spanish)
icd10_code: str # ICD-10-CM 2026 code
category: str # Medical specialty
description: str # Clinical description
symptoms: list[str] # Common presenting symptoms
red_flags: list[str] # Warning signs requiring urgent action
differential_diagnosis: list[str] # Alternative diagnoses to consider
initial_workup: list[str] # Recommended diagnostic studies
treatment_principles: list[str] # General management approach
medications: list[str] # Common medications used
complications: list[str] # Potential complications
patient_education: list[str] # Key patient teaching points@dataclass
class Medication:
generic_name: str # International nonproprietary name
brand_names: list[str] # Trade names (region-specific)
drug_class: str # Therapeutic classification
atc_code: str # WHO ATC code
mechanism: str # Mechanism of action
indications: list[str] # Approved clinical uses
contraindications: list[str] # Absolute/relative contraindications
dosing: dict # Dosing information by indication
side_effects: list[str] # Common adverse effects
interactions: list[str] # Significant drug interactions
monitoring: list[str] # Required laboratory monitoring
special_populations: dict # Pregnancy, renal, hepatic adjustmentsReturns all medical conditions as a dictionary.
from knowledge import get_all_conditions
conditions = get_all_conditions()
# Returns: dict[str, MedicalCondition]
# Key: ICD-10 code
# Value: MedicalCondition object
# Example
for code, condition in conditions.items():
print(f"{code}: {condition.name}")Search conditions by name or description text.
from knowledge import search_conditions
results = search_conditions("diabetes")
# Returns: list[MedicalCondition]
for condition in results:
print(f"{condition.name} ({condition.icd10_code})")
print(f" Category: {condition.category}")
print(f" Description: {condition.description[:100]}...")Parameters:
query(str): Search term (case-insensitive)
Returns:
- List of matching MedicalCondition objects
Retrieve a specific condition by ICD-10 code.
from knowledge import get_condition_by_icd10
condition = get_condition_by_icd10("I50.9")
# Returns: MedicalCondition | None
if condition:
print(f"Name: {condition.name}")
print(f"Symptoms: {', '.join(condition.symptoms[:5])}")
print(f"Red Flags: {', '.join(condition.red_flags)}")Parameters:
code(str): ICD-10-CM code (e.g., "I50.9", "J44.9")
Returns:
- MedicalCondition object or None if not found
Filter conditions by medical specialty.
from knowledge import get_conditions_by_category
cardio = get_conditions_by_category("Cardiovascular")
# Returns: list[MedicalCondition]
print(f"Cardiovascular conditions: {len(cardio)}")
for c in cardio:
print(f" - {c.name}")Parameters:
category(str): Category name (case-insensitive partial match)
Valid Categories:
- Cardiovascular
- Respiratory
- Gastrointestinal
- Infectious
- Emergency
- Neurological
Returns:
- List of matching MedicalCondition objects
Retrieve a medication by generic name.
from knowledge.medications_database import get_medication
med = get_medication("Metformina")
# Returns: Medication | None
if med:
print(f"Name: {med.generic_name}")
print(f"Class: {med.drug_class}")
print(f"ATC: {med.atc_code}")
print(f"Mechanism: {med.mechanism}")Parameters:
name(str): Generic medication name (case-insensitive)
Returns:
- Medication object or None if not found
Search medications by name, class, or indication.
from knowledge.medications_database import search_medications
results = search_medications("anticoagulante")
# Returns: list[Medication]
for med in results:
print(f"{med.generic_name} ({med.drug_class})")
print(f" Indications: {', '.join(med.indications[:3])}")Parameters:
query(str): Search term (searches name, class, mechanism, indications)
Returns:
- List of matching Medication objects
Dictionary containing all medical conditions.
from knowledge import ALL_CONDITIONS
print(f"Total conditions: {len(ALL_CONDITIONS)}")
# Output: Total conditions: 38Dictionary containing all medications.
from knowledge.medications_database import ALL_MEDICATIONS
print(f"Total medications: {len(ALL_MEDICATIONS)}")
# Output: Total medications: 29Statistics about the knowledge base.
from knowledge import STATS
print(STATS)
# Output:
# {
# "total_conditions": 38,
# "cardiovascular": 6,
# "respiratory": 7,
# "gastrointestinal": 7,
# "infectious": 7,
# "emergency": 5,
# "neurological": 6
# }| ICD-10 | Condition |
|---|---|
| I50.9 | Insuficiencia Cardíaca Congestiva |
| I48.91 | Fibrilación Auricular |
| I26.99 | Tromboembolismo Pulmonar |
| I82.40 | Trombosis Venosa Profunda |
| I33.0 | Endocarditis Infecciosa |
| I30.9 | Pericarditis Aguda |
| ICD-10 | Condition |
|---|---|
| J44.9 | EPOC |
| J45.909 | Asma |
| J96.00 | Insuficiencia Respiratoria Aguda |
| J18.9 | Neumonía Adquirida en Comunidad |
| A15.0 | Tuberculosis Pulmonar |
| J80 | SDRA |
| J93.9 | Neumotórax |
| ICD-10 | Condition |
|---|---|
| K35.80 | Apendicitis Aguda |
| K80.00 | Colecistitis Aguda |
| K25.9 | Úlcera Péptica |
| K92.2 | Hemorragia Digestiva Alta |
| K56.60 | Obstrucción Intestinal |
| K85.90 | Pancreatitis Aguda |
| K74.60 | Cirrosis Hepática |
| ICD-10 | Condition |
|---|---|
| A41.9 | Sepsis |
| N39.0 | Infección del Tracto Urinario |
| G00.9 | Meningitis Bacteriana |
| J02.9 | Faringoamigdalitis |
| A09.9 | Gastroenteritis Aguda |
| U07.1 | COVID-19 |
| B20 | VIH/SIDA |
| ICD-10 | Condition |
|---|---|
| I46.9 | Paro Cardiorrespiratorio |
| T78.2 | Choque Anafiláctico |
| E10.10 | Cetoacidosis Diabética |
| E87.0 | Estado Hiperosmolar |
| T40.9 | Intoxicación Aguda |
| ICD-10 | Condition |
|---|---|
| I63.9 | ACV Isquémico |
| I61.9 | ACV Hemorrágico |
| G40.909 | Epilepsia |
| G20 | Enfermedad de Parkinson |
| G43.909 | Migraña |
| G35 | Esclerosis Múltiple |
- Paracetamol (Acetaminofén)
- Ibuprofeno
- Ketorolaco
- Tramadol
- Enalapril
- Losartán
- Metoprolol
- Amlodipino
- Furosemida
- Espironolactona
- Amoxicilina
- Amoxicilina/Clavulanato
- Azitromicina
- Ciprofloxacino
- Ceftriaxona
- Metformina
- Insulina NPH
- Insulina Regular
- Salbutamol
- Budesonida
- Prednisona
- Omeprazol
- Metoclopramida
- Ondansetrón
- Loperamida
- Heparina
- Enoxaparina
- Warfarina
- Epinefrina
from knowledge import search_conditions
# Patient presents with chest pain
results = search_conditions("dolor torácico")
print("Differential Diagnosis for Chest Pain:")
for condition in results:
print(f"\n{condition.name} ({condition.icd10_code})")
print(f" Red Flags: {', '.join(condition.red_flags[:3])}")
print(f" Workup: {', '.join(condition.initial_workup[:3])}")from knowledge.medications_database import get_medication
# Get antihypertensive details
enalapril = get_medication("Enalapril")
if enalapril:
print(f"Medication: {enalapril.generic_name}")
print(f"Class: {enalapril.drug_class}")
print(f"\nDosing:")
for indication, dose in enalapril.dosing.items():
print(f" {indication}: {dose}")
print(f"\nContraindications:")
for ci in enalapril.contraindications:
print(f" - {ci}")from knowledge import get_conditions_by_category
# Get all emergency conditions for training
emergencies = get_conditions_by_category("Emergency")
print("Emergency Medicine Review:")
for condition in emergencies:
print(f"\n=== {condition.name} ===")
print(f"Key Symptoms: {', '.join(condition.symptoms[:5])}")
print(f"Immediate Actions: {', '.join(condition.treatment_principles[:3])}")from knowledge import get_condition_by_icd10, search_conditions
# Handle not found
condition = get_condition_by_icd10("INVALID")
if condition is None:
print("Condition not found")
# Handle empty search
results = search_conditions("xyznonexistent")
if not results:
print("No matching conditions found")- All data is loaded at module import time
- Dictionary lookups are O(1)
- Search operations are O(n) where n = number of items
- Memory footprint: approximately 500KB for full dataset
| Version | Date | Changes |
|---|---|---|
| 1.0 | Jan 2026 | Initial release with 38 conditions, 29 medications |
This documentation is part of the MedeX Medical AI System.