| from pydantic import BaseModel | |
| from typing import List, Optional | |
| class ICDCode(BaseModel): | |
| code: str | |
| description: str | |
| explanation: str | |
| class CPTCode(BaseModel): | |
| code: str | |
| description: str | |
| explanation: str | |
| class ProviderNotesRequest(BaseModel): | |
| provider_notes: str = Field( | |
| ..., | |
| description="The medical provider notes to analyze", | |
| min_length=10, | |
| example="Patient presents with acute bronchitis. Performed comprehensive examination and prescribed antibiotics." | |
| ) | |
| class Config: | |
| json_schema_extra = { | |
| "example": { | |
| "provider_notes": "Patient presents with acute bronchitis. Cough for 5 days, productive with yellow sputum. Lung exam reveals diffuse wheezing. Prescribed azithromycin 500mg." | |
| } | |
| } | |
| class ProviderNote(BaseModel): | |
| note: str | |
| class CodingResponse(BaseModel): | |
| icd_codes: List[ICDCode] | |
| cpt_codes: List[CPTCode] | |
| overall_summary: str | |
| class Config: | |
| json_schema_extra = { | |
| "example": { | |
| "icd_codes": [ | |
| { | |
| "code": "J20.9", | |
| "description": "Acute bronchitis, unspecified", | |
| "explanation": "Patient presents with acute bronchitis as documented in provider notes" | |
| } | |
| ], | |
| "cpt_codes": [ | |
| { | |
| "code": "99213", | |
| "description": "Office visit, established patient", | |
| "explanation": "Comprehensive examination performed as documented" | |
| } | |
| ], | |
| "overall_summary": "Patient encounter for acute bronchitis with examination and treatment" | |
| } | |
| } | |
| class FileUploadResponse(BaseModel): | |
| success: bool | |
| filename: str | |
| extracted_text_length: int | |
| pii_removed: bool | |
| pii_count: int | |
| icd_codes: List[ICDCode] | |
| cpt_codes: List[CPTCode] | |
| overall_summary: str | |
| class Config: | |
| json_schema_extra = { | |
| "example": { | |
| "success": True, | |
| "filename": "provider_notes.txt", | |
| "extracted_text_length": 450, | |
| "pii_removed": True, | |
| "pii_count": 3, | |
| "cpt_codes": ["99213", "93000"], | |
| "cpt_explanation": "Office visit and EKG", | |
| "icd_codes": ["I20.0", "R07.9"], | |
| "icd_explanation": "Unstable angina and chest pain" | |
| } | |
| } |