Skip to main content

Overview

MedMitra provides AI-powered diagnostic support by analyzing clinical data and generating evidence-based diagnosis recommendations. The system considers patient history, lab results, imaging findings, and clinical presentation to suggest primary diagnoses with supporting evidence.
Diagnostic suggestions are for clinical decision support only and must be validated by qualified healthcare professionals. Not intended for direct patient diagnosis without physician review.

Diagnosis Model

Diagnoses are structured with comprehensive supporting data:
class Diagnosis(BaseModel):
    primary_diagnosis: str
    icd_code: Optional[str] = None
    description: str
    confidence_score: float = Field(ge=0.0, le=1.0)
    supporting_evidence: List[str]
Source: backend/models/data_models.py:70-75

Model Components

Primary Diagnosis

The most likely diagnosis based on available evidence

ICD Code

International Classification of Diseases code for billing and records

Description

Detailed explanation of the diagnosis and clinical presentation

Supporting Evidence

Specific findings that support the diagnosis

Generation Process

Diagnoses are generated from SOAP notes:
1

SOAP Note Input

Complete SOAP note provides clinical context
2

Evidence Analysis

LLM analyzes objective findings and assessment
3

Diagnosis Formulation

Primary diagnosis determined with supporting evidence
4

ICD Code Mapping

Appropriate ICD-10 code assigned
5

Confidence Scoring

System evaluates certainty of diagnosis

Implementation

async def _generate_diagnosis(self, state: MedicalAnalysisState) -> MedicalAnalysisState:
    """Generate primary diagnosis from SOAP note"""
    
    # Generate diagnosis using specialized prompt
    diagnosis_response = await self.llm_manager.generate_response(
        system_prompt=DIAGNOSIS_PROMPT,
        user_input="SOAP Note: " + state["soap_note"].model_dump_json()
    )
    
    # Create structured diagnosis
    diagnosis = Diagnosis(
        primary_diagnosis=diagnosis_response.get("diagnosis", ""),
        icd_code=diagnosis_response.get("icd_code"),
        description=diagnosis_response.get("description", ""),
        confidence_score=diagnosis_response.get("confidence_score", 0.8),
        supporting_evidence=diagnosis_response.get("supporting_evidence", [])
    )
    
    state["primary_diagnosis"] = diagnosis
    state["processing_stage"] = "diagnosis_generated"
    return state
Source: backend/agents/medical_ai_agent.py:186-207

Diagnostic Reasoning

The AI considers multiple factors:

Clinical Presentation

  • Symptoms: Pattern and duration of symptoms
  • Patient Demographics: Age, gender, risk factors
  • Medical History: Previous conditions and treatments
  • Temporal Progression: Acute vs chronic presentation

Objective Evidence

  • Abnormal values indicating specific conditions
  • Patterns across multiple tests
  • Severity markers (inflammatory markers, cell counts)
  • Diagnostic biomarkers for specific diseases
  • Radiographic patterns characteristic of diseases
  • Anatomical abnormalities
  • Comparison with previous studies
  • Severity and extent of findings
  • Provider’s initial assessment
  • Physical examination findings
  • Response to previous treatments
  • Epidemiological factors

Example Diagnosis

Here’s a complete diagnosis output:
{
  "primary_diagnosis": "Community-Acquired Pneumonia",
  "icd_code": "J18.9",
  "description": "Acute bacterial or atypical pneumonia acquired outside of healthcare settings. Patient presents with respiratory symptoms, elevated inflammatory markers, and radiographic evidence of pulmonary infiltrates. Clinical presentation and bilateral interstitial pattern suggest atypical pneumonia, possibly mycoplasma or viral etiology.",
  "confidence_score": 0.87,
  "supporting_evidence": [
    "Bilateral interstitial infiltrates on chest X-ray",
    "Elevated WBC count (12,500/μL) indicating infection",
    "Elevated C-reactive protein (45 mg/L) indicating inflammation",
    "Clinical symptoms of cough and dyspnea",
    "No evidence of pleural effusion or consolidation typical of bacterial pneumonia",
    "Patient age and demographics consistent with atypical pneumonia"
  ]
}

Confidence Scoring

The confidence score reflects diagnostic certainty:

High Confidence (0.9 - 1.0)

  • Multiple supporting findings align clearly
  • Classic presentation of well-defined condition
  • Pathognomonic findings present
  • No contradictory evidence

Moderate Confidence (0.7 - 0.9)

  • Several supporting findings present
  • Typical but not definitive presentation
  • Some findings support diagnosis
  • Minor inconsistencies possible

Low Confidence (Below 0.7)

  • Limited supporting evidence
  • Atypical presentation
  • Multiple differential diagnoses possible
  • Requires additional investigation

Supporting Evidence

Each diagnosis includes specific evidence:
supporting_evidence = [
    "Lab finding: Elevated WBC indicating infection",
    "Imaging: Bilateral infiltrates on CXR",
    "Clinical: Progressive respiratory symptoms",
    "History: Recent exposure in healthcare setting",
    "Physical: Decreased O2 saturation"
]
Evidence is categorized by:
  • Laboratory data: Specific abnormal values
  • Imaging findings: Radiographic patterns
  • Clinical presentation: Symptoms and signs
  • Patient history: Risk factors and exposures

ICD-10 Coding

The system provides appropriate ICD-10 codes:

Code Structure

  • Category: Disease classification (e.g., J00-J99 for respiratory)
  • Specificity: Detailed code for precise diagnosis
  • Laterality: Left/right/bilateral when applicable
  • Episode: Initial encounter, subsequent, sequela

Common Codes Generated

Respiratory Infections

J18.9 - Pneumonia, unspecified J20.9 - Acute bronchitis

Cardiovascular

I10 - Essential hypertension I25.10 - Atherosclerotic heart disease

Metabolic

E11.9 - Type 2 diabetes mellitus E78.5 - Hyperlipidemia

Musculoskeletal

M25.50 - Joint pain, unspecified M79.3 - Panniculitis

Integration with Medical Insights

Diagnosis is part of the complete insights package:
class MedicalInsights(BaseModel):
    case_summary: CaseSummary
    soap_note: SOAPNote
    primary_diagnosis: Diagnosis  # Diagnosis component
    overall_confidence_score: float
    generated_at: datetime
Source: backend/models/data_models.py:96-104

Differential Diagnosis (Future Feature)

The system is designed to support differential diagnoses:
class DifferentialDiagnosis(BaseModel):
    condition: str
    probability: float = Field(ge=0.0, le=1.0)
    reasoning: str
    distinguishing_factors: List[str]
Source: backend/models/data_models.py:77-81
Differential diagnosis generation is currently commented out in the codebase but designed for future implementation.

Planned Differential Features

  • Ranked Alternatives: Top 3-5 alternative diagnoses
  • Probability Scores: Likelihood of each diagnosis
  • Distinguishing Factors: Key differences between diagnoses
  • Recommended Tests: Investigations to differentiate

Investigation Recommendations (Future Feature)

Planned feature for diagnostic workup:
class InvestigationRecommendation(BaseModel):
    investigation_type: str
    urgency: Literal["urgent", "routine", "follow-up"]
    rationale: str
    expected_findings: Optional[str] = None
Source: backend/models/data_models.py:83-87

Recommendation Categories

  • Urgent: Immediate testing required for patient safety
  • Routine: Standard workup for diagnosis confirmation
  • Follow-up: Monitoring tests after treatment initiation

Treatment Recommendations (Future Feature)

Planned therapeutic guidance:
class TreatmentRecommendation(BaseModel):
    treatment_type: str
    description: str
    dosage: Optional[str] = None
    duration: Optional[str] = None
    precautions: Optional[List[str]] = None
Source: backend/models/data_models.py:89-94

Accessing Diagnosis Data

Retrieve diagnosis through the case API:
GET /cases/cases/{case_id}

Response:
{
  "case": {...},
  "ai_insights": {
    "primary_diagnosis": {
      "primary_diagnosis": "Community-Acquired Pneumonia",
      "icd_code": "J18.9",
      "description": "Acute pneumonia...",
      "confidence_score": 0.87,
      "supporting_evidence": [
        "Bilateral infiltrates on CXR",
        "Elevated WBC count",
        "..."
      ]
    },
    "soap_note": {...},
    "case_summary": {...}
  }
}

Clinical Decision Support Workflow

1

Data Collection

Gather all clinical data (history, labs, imaging)
2

AI Analysis

System processes data and generates diagnosis
3

Physician Review

Doctor reviews AI suggestions and supporting evidence
4

Clinical Validation

Physician validates or modifies based on clinical judgment
5

Patient Care

Final diagnosis used for treatment planning

Limitations and Considerations

Important Limitations:
  • AI suggestions require physician validation
  • Cannot replace clinical examination and judgment
  • May miss rare or unusual presentations
  • Limited by quality and completeness of input data
  • Cannot account for all patient-specific factors
  • Not suitable for emergency/life-threatening situations without immediate physician oversight

Best Practices

For Optimal Diagnostic Support:
  1. Complete Data Entry: Provide comprehensive case summaries
  2. Quality Documents: Upload clear, complete lab and imaging reports
  3. Clinical Context: Include relevant history and risk factors
  4. Critical Review: Always validate AI suggestions clinically
  5. Confidence Assessment: Pay attention to confidence scores
  6. Supporting Evidence: Review all evidence listed
  7. Patient Context: Consider individual patient circumstances

Use Cases

Primary Care

Quick reference for common conditions

Emergency Medicine

Rapid triage assistance

Specialist Referrals

Documentation for referral justification

Medical Education

Teaching tool for diagnostic reasoning

Quality Assurance

The system includes multiple validation layers:
  1. Data Validation: Pydantic models ensure structure
  2. Confidence Scoring: Flags uncertain diagnoses
  3. Evidence Requirements: Diagnosis must have supporting evidence
  4. ICD Code Validation: Codes checked against standard registry
  5. Clinical Review: Physician validation required

Next Steps

SOAP Notes

Learn about SOAP note generation

Case Management

Return to case management overview

Build docs developers (and LLMs) love