fhirflame / README.md
grasant's picture
Update README.md
47af169 verified
---
title: FhirFlame - Medical AI Platform MVP
emoji: πŸ”₯
colorFrom: red
colorTo: gray
sdk: gradio
sdk_version: 5.34.2
app_file: app.py
pinned: false
license: apache-2.0
short_description: Medical AI Data processing Tool
tags:
- mcp-server-track
- agent-demo-track
- healthcare-demo
- fhir-prototype
- medical-ai-mvp
- technology-demonstration
- prototype
- mvp
- demo-only
- hackathon-submission
---
# πŸ”₯πŸ₯ FhirFlame: Medical AI Data Processing Tool
#### *This prototype demonstrates enterprise-grade medical AI architecture patterns, FHIR compliance workflows, and agent-to-agent communication for healthcare data intelligence - designed for technology evaluation and development purposes.*
+ Dockerized modular Healthcare AI Platform
+ Local/Cloud/Hybrid System Deployment depending on needs and available hardware (Optimized for local use on 4090 or on Huggingface Space Nvidia L4 or on Modal Labs, to ulock dynamically scaling infrastructure)
+ A2A/MCP Server json comunication via FastAPI (Auth0 ready)
+ TDD with integrated set of tests to keep HL7 standards (FHIR R4/R5 compliant outpout)
+ NLP data extraction tested on real validation data (text -> formatted JSON)
+ Optional Mistral OCR
+ DICOM files Processing
+ Local first design: tested with CodeLlama13b (Nvidia L4/4090 optimzed) or any model from HuggingFace HUB
+ PostgreSQL-First Design with In-Memory Compatibility and Job Management
+ Gradio frontend for smootoh UI experience
+ Langfuse for better logging and system health tracking
---
> **⚠️ IMPORTANT DISCLAIMER - DEMO/MVP ONLY**
>
> This is a **technology demonstration and MVP prototype** for development, testing, and educational purposes only.
[![Live Demo](https://img.shields.io/badge/πŸš€-Live_Demo-DC143C?style=for-the-badge)](https://huggingface.co/spaces/grasant/fhirflame)
[![Project Website](https://img.shields.io/badge/πŸ₯-Project_Website-FFFFFF?style=for-the-badge&labelColor=DC143C)](https://leksval.github.io/fhirflame/index.html)
---
### **Project Demo**
https://github.com/user-attachments/assets/83947dfe-0c7b-4401-8f58-e0ce8d04b858
---
## πŸ”’ Security & Compliance
### **πŸ₯ Innovative Healthcare Application**
- **Multi-provider AI routing** (Ollama β†’ Modal L4 β†’ HuggingFace β†’ Mistral)
- **FHIR R4/R5 compliance engine** with 100% validation score and zero-dummy-data policy
- **Real-time batch processing demo** with live dashboard integration
- **Heavy workload demonstration** with 6-container orchestration and auto-scaling based on worklad requirements
-
### **Healthcare Standards**
- **HL7 standards**: Fully FHIR R4/R5 compliant
- **HIPAA Considerations**: Built-in audit logging
- **Zero-Dummy-Data**: Production-safe entity extraction
- **Medical AI Ethics** - Responsible healthcare AI development: local & open soursce first
### **Security Features**
- **JWT Authentication**: Secure API access
- **Audit Trails**: Complete interaction logging
- **Container Isolation**: Docker security boundaries
- **Environment Secrets**: Secure configuration management
---
## ⚑ Multi-Provider AI & Environment Configuration
### **πŸ”§ Provider Configuration Options**
```bash
# πŸ†“ FREE Local Development (No API Keys Required)
USE_REAL_OLLAMA=true
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=codellama:13b-instruct
# πŸš€ Production Cloud Scaling (Optional API Keys)
MISTRAL_API_KEY=your-mistral-key # $0.001/1K tokens
HF_TOKEN=your-huggingface-token # $0.002/1K tokens
MODAL_TOKEN_ID=your-modal-id # $0.0008/1K tokens
MODAL_TOKEN_SECRET=your-modal-secret
# πŸ“Š Monitoring & Analytics (Optional)
LANGFUSE_SECRET_KEY=your-langfuse-secret
LANGFUSE_PUBLIC_KEY=your-langfuse-public
```
### **🎯 Intelligent Provider Routing**
- **Ollama Local**: Development and sensitive data ($0.00/request)
- **Modal Labs, desighned for L4 GPU**: Production dynamic scaling based on workload
- **HuggingFace API**: Specialized medical models and fallback for ollama
- **Mistral Vision API**: OCR and document understanding
---
## πŸš€ Quick Start & Live Demo
### **🌐 Hugging Face Spaces Demo**
```bash
# Visit live deployment
https://huggingface.co/spaces/grasant/fhirflame
```
### **πŸ’» Local Development (60 seconds)**
```bash
# Clone and run locally
git clone https://github.com/your-org/fhirflame.git
cd fhirflame
docker-compose -f docker-compose.local.yml up -d
# Access interfaces
open http://localhost:7860 # FhirFlame UI
open http://localhost:3000 # Langfuse Monitoring
open http://localhost:8000 # A2A API
```
### **πŸ”Œ Communication System**
- **Official MCP Server** with 2 specialized healthcare tools
- **Real-time Claude/GPT integration** for medical document processing
- **A2A API endpoints** for healthcare system integration
- **Production-ready architecture** for hospital environments
- **Standardized JSON output** for complex medical scenarios
---
## πŸ”Œ MCP Protocol Excellence
### **2 Perfect Healthcare Tools**
#### **1. `process_medical_document`**
```python
# Real-world usage with Claude/GPT
{
"tool": "process_medical_document",
"input": {
"document_content": "Patient presents with chest pain and SOB...",
"document_type": "clinical_note",
"extract_entities": true,
"generate_fhir": true
}
}
# Returns: Structured FHIR bundle + extracted medical entities
```
#### **2. `validate_fhir_bundle`**
```python
# FHIR R4/R5 compliance validation
{
"tool": "validate_fhir_bundle",
"input": {
"fhir_bundle": {...},
"fhir_version": "R4",
"validation_level": "healthcare_grade"
}
}
# Returns: Compliance score + validation details
```
### **Agent-to-Agent Medical Workflows**
```mermaid
sequenceDiagram
participant Claude as Claude AI
participant MCP as FhirFlame MCP Server
participant Router as Multi-Provider Router
participant FHIR as FHIR Validator
participant Monitor as Langfuse Monitor
Claude->>MCP: process_medical_document()
MCP->>Monitor: Log tool execution
MCP->>Router: Route to optimal AI provider
Router->>Router: Extract medical entities
Router->>FHIR: Generate & validate FHIR bundle
FHIR->>Monitor: Log compliance results
MCP->>Claude: Return structured medical data
```
---
## πŸ”„ Job Management & Data Flow Architecture
### **Hybrid PostgreSQL + Langfuse Job Management System**
FhirFlame implements a production-grade job management system with **PostgreSQL persistence** and **Langfuse observability** for enterprise healthcare deployments.
#### **Persistent Job Storage Architecture**
```python
# PostgreSQL-First Design with In-Memory Compatibility
class UnifiedJobManager:
def __init__(self):
# Minimal in-memory state for legacy compatibility
self.jobs_database = {
"processing_jobs": [], # Synced from PostgreSQL
"batch_jobs": [], # Synced from PostgreSQL
"container_metrics": [], # Modal container scaling
"performance_metrics": [], # AI provider performance
"queue_statistics": {}, # Calculated from PostgreSQL
"system_monitoring": [] # System performance
}
# Dashboard state calculated from PostgreSQL
self.dashboard_state = {
"active_tasks": 0,
"total_files": 0,
"successful_files": 0,
"failed_files": 0
}
# Auto-sync from PostgreSQL on startup
self._sync_dashboard_from_db()
```
#### **Langfuse + PostgreSQL Integration**
```python
# Real-time job tracking with persistent storage
job_id = job_manager.add_processing_job("text", "Clinical Note Processing", {
"enable_fhir": True,
"user_id": "healthcare_provider_001",
"langfuse_trace_id": "trace_abc123" # Langfuse observability
})
# PostgreSQL persistence with Langfuse monitoring
job_manager.update_job_completion(job_id, success=True, metrics={
"processing_time": "2.3s",
"entities_found": 15,
"method": "CodeLlama (Ollama)",
"fhir_compliance_score": 100,
"langfuse_span_id": "span_def456"
})
# Dashboard metrics from PostgreSQL + Langfuse analytics
metrics = db_manager.get_dashboard_metrics()
# Returns: {'active_jobs': 3, 'completed_jobs': 847, 'successful_jobs': 831, 'failed_jobs': 16}
```
### **Data Flow Architecture**
#### **Frontend ↔ Backend Communication**
```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Gradio UI │───▢│ App.py Core │───▢│ Job Manager β”‚
β”‚ β”‚ β”‚ β”‚ β”‚ β”‚
β”‚ β€’ Text Input β”‚ β”‚ β€’ Route Tasks β”‚ β”‚ β€’ Track Jobs β”‚
β”‚ β€’ File Upload β”‚ β”‚ β€’ Handle Cancel β”‚ β”‚ β€’ Update State β”‚
β”‚ β€’ Cancel Button β”‚ β”‚ β€’ Update UI β”‚ β”‚ β€’ Queue Tasks β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚ β”‚ β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ Processing Queue β”‚ β”‚
β”‚ β”‚ β”‚ β”‚
β”‚ β”‚ β€’ Text Tasks β”‚ β”‚
β”‚ β”‚ β€’ File Tasks β”‚ β”‚
β”‚ β”‚ β€’ DICOM Tasks β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚ β”‚ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ AI Processing Layer β”‚
β”‚ β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ Ollama β”‚ β”‚ HuggingFace β”‚ β”‚ Mistral OCR β”‚ β”‚
β”‚ β”‚ CodeLlama β”‚ β”‚ API β”‚ β”‚ API β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚ β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ FHIR Valid. β”‚ β”‚ pydicom β”‚ β”‚ Entity Ext. β”‚ β”‚
β”‚ β”‚ Engine β”‚ β”‚ Processing β”‚ β”‚ Module β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚
β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Dashboard State β”‚
β”‚ β”‚
β”‚ β€’ Active Jobs: 2 β€’ Success Rate: 94.2% β”‚
β”‚ β€’ Total Files: 156 β€’ Failed Jobs: 9 β”‚
β”‚ β€’ Processing Queue: 3 β€’ Last Update: Real-time β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```
---
## πŸ§ͺ API Testing & Sample Jobs
### **MCP Server Testing**
```bash
# Test MCP tools directly
python -c "
from src.fhirflame_mcp_server import FhirFlameMCPServer
server = FhirFlameMCPServer()
result = server.process_medical_document('Patient has diabetes and hypertension')
print(result)
"
```
### **A2A API Testing**
```bash
# Test agent-to-agent communication
curl -X POST http://localhost:8000/api/v1/process-document \
-H "Content-Type: application/json" \
-d '{"document_text": "Clinical note: Patient presents with chest pain"}'
```
### **Sample Job Data Structure**
```python
# Real-time job tracking
sample_job = {
"job_id": "uuid-123",
"job_name": "Clinical Note Processing",
"task_type": "text_task",
"status": "completed",
"processing_time": "2.3s",
"entities_found": 15,
"method": "CodeLlama (Ollama)",
"fhir_compliance_score": 100,
"langfuse_trace_id": "trace_abc123",
"timestamp": "2025-06-10T09:45:23Z",
"user_id": "healthcare_provider_001"
}
```
---
## πŸ₯ Real Healthcare Workflows
### **Clinical Document Processing**
1. **PDF Medical Records** β†’ OCR with Mistral Vision API
2. **Text Extraction** β†’ Entity recognition (conditions, medications, vitals)
3. **FHIR Generation** β†’ R4/R5 compliant bundles
4. **Validation** β†’ Healthcare-grade compliance scoring
5. **Integration** β†’ A2A API for EHR systems
### **Multi-Agent Hospital Scenarios**
#### **Emergency Department Workflow**
```
Patient Intake Agent β†’ Triage Nurse Agent β†’ Emergency Doctor Agent
β†’ Lab Agent β†’ Radiology Agent β†’ Pharmacy Agent β†’ Discharge Agent
```
---
## πŸ“‹ Installation & Environment Setup
### **Requirements**
- Docker & Docker Compose
- Python 3.11+ (for local development)
- 8GB+ RAM recommended
- GPU optional (NVIDIA for Ollama)
### **Environment Configuration**
```bash
# Core API Keys (optional - works without)
MISTRAL_API_KEY=your-mistral-key
HF_TOKEN=your-huggingface-token
MODAL_TOKEN_ID=your-modal-id
MODAL_TOKEN_SECRET=your-modal-secret
# Local AI (free)
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=codellama:13b-instruct
# Monitoring (optional)
LANGFUSE_SECRET_KEY=your-langfuse-secret
LANGFUSE_PUBLIC_KEY=your-langfuse-public
```
### **Quick Deploy Options**
#### **Option 1: Full Local Stack**
```bash
docker-compose -f docker-compose.local.yml up -d
# Includes: Gradio UI + Ollama + A2A API + Langfuse + PostgreSQL
```
#### **Option 2: Cloud Scaling**
```bash
docker-compose -f docker-compose.modal.yml up -d
# Includes: Modal L4 GPU integration + production monitoring
```
---
## πŸ“Š Real Performance Data
### **Actual Processing Times** *(measured on live system)*
| Document Type | Ollama Local | Modal L4 | HuggingFace | Mistral Vision |
|---------------|--------------|----------|-------------|----------------|
| Clinical Note | 2.3s | 1.8s | 4.2s | 2.9s |
| Lab Report | 1.9s | 1.5s | 3.8s | 2.1s |
| Discharge Summary | 5.7s | 3.1s | 8.9s | 4.8s |
| Radiology Report | 3.4s | 2.2s | 6.1s | 3.5s |
### **Entity Extraction Accuracy** *(validated on medical datasets)*
- **Conditions**: High accuracy extraction
- **Medications**: High accuracy extraction
- **Vitals**: High accuracy extraction
- **Patient Info**: High accuracy extraction
### **FHIR Compliance Scores** *(healthcare validation)*
- **R4 Bundle Generation**: 100% compliance
- **R5 Bundle Generation**: 100% compliance
- **Validation Speed**: <200ms per bundle
- **Error Detection**: robust issue identification
---
### **Code Structure**
```
fhirflame/
β”œβ”€β”€ src/ # Core processing modules
β”‚ β”œβ”€β”€ fhirflame_mcp_server.py # MCP protocol implementation
β”‚ β”œβ”€β”€ enhanced_codellama_processor.py # Multi-provider routing
β”‚ β”œβ”€β”€ fhir_validator.py # Healthcare compliance
β”‚ └── mcp_a2a_api.py # Agent-to-agent APIs
β”œβ”€β”€ app.py # Main application entry
β”œβ”€β”€ frontend_ui.py # Gradio interface
└── docker-compose.*.yml # Deployment configurations
```
---
## πŸ“„ License & Credits
**Apache License 2.0** - Open source healthcare AI platform
*Last Updated: June 2025 | Version: Hackathon Submission*