Spaces:
Configuration error
Configuration error
| # SanjeevaniAI — REST API Reference (v1) | |
| Base URL: `http://localhost:8000/api/v1` | |
| Interactive OpenAPI UI: `http://localhost:8000/docs` | |
| ReDoc UI: `http://localhost:8000/redoc` | |
| All successful responses follow the standardized JSON envelope: | |
| ```json | |
| { | |
| "success": true, | |
| "data": { ... }, | |
| "message": "Optional descriptive status", | |
| "request_id": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d", | |
| "timestamp": "2026-08-18T21:00:00Z" | |
| } | |
| ``` | |
| --- | |
| ## 1. Authentication Endpoints (`/auth`) | |
| ### `POST /auth/register` | |
| Create a new patient, clinician, or administrator account. | |
| **Request Body:** | |
| ```json | |
| { | |
| "email": "user@example.com", | |
| "password": "SecurePassword123!", | |
| "full_name": "Dr. Sarah Jenkins", | |
| "role": "DOCTOR" | |
| } | |
| ``` | |
| **Response (200 OK):** | |
| ```json | |
| { | |
| "success": true, | |
| "data": { | |
| "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", | |
| "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", | |
| "token_type": "bearer", | |
| "expires_in": 7200, | |
| "user": { | |
| "id": "c1f725a2-9426-4d1e-84b2-f3e498c0b5f1", | |
| "email": "user@example.com", | |
| "full_name": "Dr. Sarah Jenkins", | |
| "role": "DOCTOR", | |
| "is_active": true | |
| } | |
| } | |
| } | |
| ``` | |
| ### `POST /auth/login` | |
| Authenticate user with email and password. | |
| --- | |
| ## 2. Biomedical NER Endpoints (`/ner`) | |
| ### `POST /ner/analyze` | |
| Extract biomedical entities from arbitrary clinical text using the local RoBERTa-large BC5CDR model. | |
| **Request Body:** | |
| ```json | |
| { | |
| "text": "The patient was prescribed metformin 500mg and lisinopril 10mg for type 2 diabetes mellitus and hypertension." | |
| } | |
| ``` | |
| **Response (200 OK):** | |
| ```json | |
| { | |
| "success": true, | |
| "data": { | |
| "request_id": "550e8400-e29b-41d4-a716-446655440000", | |
| "model": { | |
| "name": "roberta-large-bc5cdr", | |
| "version": "1.0.0", | |
| "provider": "local_pytorch", | |
| "device": "cuda:0", | |
| "status": "ready" | |
| }, | |
| "entities": [ | |
| { | |
| "text": "metformin", | |
| "label": "CHEMICAL", | |
| "start": 27, | |
| "end": 36, | |
| "confidence": 0.9998, | |
| "model": "roberta-large-bc5cdr" | |
| }, | |
| { | |
| "text": "lisinopril", | |
| "label": "CHEMICAL", | |
| "start": 47, | |
| "end": 57, | |
| "confidence": 0.9996, | |
| "model": "roberta-large-bc5cdr" | |
| }, | |
| { | |
| "text": "type 2 diabetes mellitus", | |
| "label": "DISEASE", | |
| "start": 68, | |
| "end": 92, | |
| "confidence": 0.9985, | |
| "model": "roberta-large-bc5cdr" | |
| }, | |
| { | |
| "text": "hypertension", | |
| "label": "DISEASE", | |
| "start": 97, | |
| "end": 109, | |
| "confidence": 0.9992, | |
| "model": "roberta-large-bc5cdr" | |
| } | |
| ], | |
| "entity_count": 4, | |
| "processing_time_ms": 14.8, | |
| "text_length": 110 | |
| } | |
| } | |
| ``` | |
| ### `GET /ner/model-info` | |
| Retrieve local model health, hardware device allocation, and parameter footprint. | |
| --- | |
| ## 3. Medical Document Management (`/documents`) | |
| ### `POST /documents/upload` | |
| Upload a medical report (multipart/form-data: PDF, DOCX, TXT). | |
| Automatically extracts text, computes SHA-256 integrity hash, runs local BC5CDR entity recognition, and generates a non-diagnostic summary. | |
| ### `GET /documents` | |
| List all uploaded reports for the authenticated user. | |
| ### `GET /documents/{document_id}` | |
| Retrieve full structured analysis, raw text, and identified entity spans for a specific document. | |
| ### `DELETE /documents/{document_id}` | |
| Permanently remove a document and its associated analysis. | |
| --- | |
| ## 4. AI Consultation Assistant (`/chat`) | |
| ### `POST /chat/message` | |
| Send a clinical query to the AI assistant with automatic patient profile injection and red-flag triage. | |
| **Request Body:** | |
| ```json | |
| { | |
| "message": "What are typical lifestyle considerations for managing Type 2 Diabetes?", | |
| "conversation_id": null | |
| } | |
| ``` | |
| **Response (200 OK):** | |
| ```json | |
| { | |
| "success": true, | |
| "data": { | |
| "conversation_id": "d3b07384-d113-4632-bc5d-8521c7d2427a", | |
| "message": { | |
| "id": "e4a18295-e224-4743-9d7e-9632d8e3538b", | |
| "role": "assistant", | |
| "content": "Type 2 Diabetes management involves glycemic control, balanced nutrition, and regular physical activity.", | |
| "structured_data": { | |
| "summary": "Educational guidance on Type 2 Diabetes management strategies.", | |
| "possible_considerations": [ | |
| "Consistent carbohydrate counting and complex fiber intake improve postprandial glucose stability.", | |
| "Regular aerobic and resistance exercise enhances insulin sensitivity." | |
| ], | |
| "questions_for_doctor": [ | |
| "What is my target HbA1c range given my current medication regimen?", | |
| "Should I consult a certified diabetes educator (CDCES)?" | |
| ], | |
| "safety_warning": "SanjeevaniAI provides decision-support information, not definitive diagnosis. Always consult your physician.", | |
| "is_emergency": false, | |
| "emergency_instructions": null | |
| }, | |
| "model_provider": "Google Gemini / Local Clinical Engine" | |
| }, | |
| "disclaimer": "SanjeevaniAI provides AI-assisted healthcare information and decision-support insights. It is not a substitute for professional medical diagnosis, treatment, or emergency care." | |
| } | |
| } | |
| ``` | |
| --- | |
| ## 5. Patient Profile (`/profile`) | |
| ### `GET /profile` | |
| Retrieve authenticated user's clinical profile. | |
| ### `PUT /profile` | |
| Update age, gender, blood group, height, weight, allergies, chronic conditions, and current medications. | |
| --- | |
| ## 6. History & Timeline (`/history`) | |
| ### `GET /history?limit=50` | |
| Retrieve chronological activity records with entity counts and timestamps. | |
| --- | |
| ## 7. Administrator Telemetry & Auditing (`/admin`) | |
| ### `GET /admin/stats` (Admin Only) | |
| Platform aggregates: total users, total documents, extracted entities count, and neural model device status. | |
| ### `GET /admin/audit-logs?limit=100` (Admin Only) | |
| Security audit records covering logins, uploads, deletions, and administrative actions. | |