PDF Analysis
Na tej stronie
Overview
Dział zatytułowany „Overview”PDF Analysis umożliwia analizę dokumentów medycznych (wyniki badań, zdjęcia RTG, dokumenty zewnętrzne) przez AI z ekstrakcją kluczowych informacji.
Architecture
Dział zatytułowany „Architecture”flowchart TB subgraph Input["Document Input"] PDF[PDF Upload] Image[Image Upload] Scan[Camera Scan] end
subgraph Processing["Processing"] Extract[Extract Content] OCR[OCR if needed] AI[unified_ai_analyze_document] end
subgraph Output["Analysis Output"] Summary[Document Summary] KeyValues[Key Values] Suggestions[Clinical Suggestions] end
Input --> Extract Extract --> OCR OCR --> AI AI --> Summary AI --> KeyValues AI --> SuggestionsSupported Documents
Dział zatytułowany „Supported Documents”| Type | Examples | Processing |
|---|---|---|
| Lab Results | Morfologia, biochemia | Extract values, flag abnormals |
| Imaging | RTG, USG descriptions | Summarize findings |
| External Records | Inne kliniki | Extract history |
| Prescriptions | Recepty | List medications |
| Certificates | Książeczka zdrowia | Extract vaccination dates |
// UnifiedAIClient.analyzeDocumentconst result = await UnifiedAIClient.analyzeDocument( documentContent, // string | ArrayBuffer documentType, // 'pdf' | 'image' | 'text' analysisPrompt // Custom analysis instructions);
// Backend command// unified_ai_analyze_documentAnalysis Flow
Dział zatytułowany „Analysis Flow”sequenceDiagram participant User participant UI as Document Viewer participant Client as UnifiedAIClient participant BE as Backend participant Vision as Vision LLM
User->>UI: Upload PDF UI->>UI: Extract pages
alt PDF with text UI->>UI: Extract text content else PDF with images UI->>UI: Convert to images end
UI->>Client: analyzeDocument(content, type, prompt) Client->>BE: unified_ai_analyze_document
BE->>Vision: Analyze with Vision LLM Vision-->>BE: Analysis result
BE-->>Client: AnalysisResult Client-->>UI: Display resultsAnalysis Prompt Templates
Dział zatytułowany „Analysis Prompt Templates”Lab Results
Dział zatytułowany „Lab Results”Analizujesz wyniki badań laboratoryjnych pacjenta weterynaryjnego.Wypisz:1. Wartości poza normą (z wartościami referencyjnymi)2. Możliwe przyczyny nieprawidłowości3. Sugerowane dalsze badaniaImaging Report
Dział zatytułowany „Imaging Report”Analizujesz opis badania obrazowego.Podsumuj:1. Główne zmiany patologiczne2. Diagnoza różnicowa3. Zalecenia dalszej diagnostykiExternal Records
Dział zatytułowany „External Records”Analizujesz dokumentację z innej kliniki.Wyciągnij:1. Historia choroby2. Poprzednie diagnozy3. Zastosowane leczenie4. Szczepienia i profilaktykaResult Structure
Dział zatytułowany „Result Structure”interface AnalysisResult { summary: string; // Krótkie podsumowanie keyFindings: Finding[]; // Główne odkrycia abnormalValues?: LabValue[]; // Nieprawidłowe wartości suggestions?: string[]; // Sugestie kliniczne confidence: number; // 0-1 warnings?: string[]; // Ostrzeżenia}
interface LabValue { name: string; value: string; unit: string; reference: string; status: 'low' | 'normal' | 'high' | 'critical';}UI Display
Dział zatytułowany „UI Display”┌─────────────────────────────────────────────┐│ 📄 Wyniki badań - morfologia.pdf │├─────────────────────────────────────────────┤│ ││ Podsumowanie ││ Morfologia krwi z odchyleniami: ││ leukocytoza, niedokrwistość łagodna ││ ││ Wartości poza normą: ││ • WBC: 18.5 (ref: 6-12) ↑ HIGH ││ • RBC: 4.2 (ref: 5.5-8.5) ↓ LOW ││ • HGB: 10.1 (ref: 12-18) ↓ LOW ││ ││ Sugestie: ││ • Rozważyć infekcję bakteryjną ││ • Kontrola żelaza i ferrytyny ││ • Powtórna morfologia za 7 dni ││ │├─────────────────────────────────────────────┤│ [Add to Visit Notes] [Save to Patient] │└─────────────────────────────────────────────┘Integration with Visits
Dział zatytułowany „Integration with Visits”// Attach analysis to visitconst attachAnalysis = async (visitId: string, analysis: AnalysisResult) => { await visitApi.update(visitId, { attachments: JSON.stringify([ ...existingAttachments, { type: 'document_analysis', data: { documentName: file.name, analysis: analysis, analyzedAt: new Date().toISOString(), }, timestamp: Date.now(), } ]), });};Limitations
Dział zatytułowany „Limitations”Error Handling
Dział zatytułowany „Error Handling”try { const result = await analyzeDocument(content, type, prompt);} catch (error) { if (error.code === 'FILE_TOO_LARGE') { showError('Plik jest zbyt duży (max 10MB)'); } else if (error.code === 'UNSUPPORTED_FORMAT') { showError('Nieobsługiwany format pliku'); } else if (error.code === 'OCR_FAILED') { showError('Nie udało się odczytać tekstu z dokumentu'); } else { showError('Błąd analizy dokumentu'); }}Related
Dział zatytułowany „Related”- AI Suite Overview - Full AI system
- AI Commands - API reference
- Visits Overview - Visit attachments