SOAP Notes
Na tej stronie
Overview
Dział zatytułowany „Overview”SOAP to standardowy format dokumentacji medycznej używany w Wietnamie. Każda wizyta ma cztery sekcje SOAP plus dodatkowe pola.
SOAP Structure
Dział zatytułowany „SOAP Structure”flowchart TB subgraph SOAP["SOAP Note"] S[Subjective<br/>Wywiad] O[Objective<br/>Badanie] A[Assessment<br/>Rozpoznanie] P[Plan<br/>Zalecenia] end
subgraph Additional["Additional Fields"] Internal[Internal Notes<br/>Notatki wewnętrzne] Transcript[Transcript<br/>Transkrypcja] end
S --> O --> A --> P Additional -.-> SOAPSekcje SOAP
Dział zatytułowany „Sekcje SOAP”Subjective (S) - Wywiad
Dział zatytułowany „Subjective (S) - Wywiad”Co pacjent/właściciel zgłasza.
// Database fieldsoap_subjective: string
// UI split in editorreasonForVisit: string // "Powód wizyty" - first partrestOfSubjective: string // Remaining historyZawartość:
- Powód wizyty
- Historia obecnej choroby
- Zgłaszane objawy
- Timeline objawów
- Dotychczasowe leczenie
Objective (O) - Badanie
Dział zatytułowany „Objective (O) - Badanie”Obiektywne wyniki badania.
// Database fieldsoap_objective: stringZawartość:
- Badanie fizyczne
- Parametry życiowe (temp, HR, RR)
- Wyniki badań laboratoryjnych
- Wyniki badań obrazowych
- Stan ogólny pacjenta
Assessment (A) - Rozpoznanie
Dział zatytułowany „Assessment (A) - Rozpoznanie”Diagnoza i interpretacja.
// Database fieldsoap_assessment: stringZawartość:
- Rozpoznanie główne
- Rozpoznania różnicowe
- Stopień pewności diagnozy
- Powiązania z historią pacjenta
Plan (P) - Zalecenia
Dział zatytułowany „Plan (P) - Zalecenia”Plan leczenia i follow-up.
// Database fieldsoap_plan: stringZawartość:
- Zalecone leki i dawkowanie
- Zalecenia dla właściciela
- Termin kontroli
- Badania do wykonania
- Znaki ostrzegawcze
Data Model
Dział zatytułowany „Data Model”// Visit SOAP fields (database)interface VisitSOAP { soap_subjective: string | null; soap_objective: string | null; soap_assessment: string | null; soap_plan: string | null;
// AI-generated suggestions ai_sugestie: string | null;}
// EditedVisitData (UI state)interface EditedSOAP { subjective: string; objective: string; assessment: string; plan: string; ai_sugestie?: string;}AI SOAP Generation
Dział zatytułowany „AI SOAP Generation”sequenceDiagram participant User participant Editor as VisitEditor participant AI as useSOAPGeneration participant BE as unified_ai_generate_soap
User->>Editor: Click "Generate SOAP" Editor->>AI: generateSOAP(patient, visit, visitId)
AI->>AI: Build context Note over AI: patient data<br/>visit type<br/>transcript<br/>reason for visit
AI->>BE: unified_ai_generate_soap BE->>BE: LLM processing BE-->>AI: SOAP sections
AI->>Editor: Update editedData.soap Editor->>Editor: source: 'system' Editor->>Editor: Auto-save after delayContext for AI
Dział zatytułowany „Context for AI”// AINotesPatientData{ name: string; species: string; breed: string; age: number; weight: number; owner: string;}
// AINotesVisitData{ visitType: string; reasonForVisit: string; transcript: string; vetName: string;}AI Suggestions
Dział zatytułowany „AI Suggestions”AI może wygenerować sugestie zapisane w ai_sugestie:
// parseAiSuggestions() extracts sectionsconst suggestions = parseAiSuggestions(visit.ai_sugestie);// Returns: { interview, exam, diagnosis, plan }
// Polish keywords recognized:// subjective: 'wywiad', 'anamneza'// objective: 'badanie', 'examination'// assessment: 'rozpoznanie', 'diagnosis'// plan: 'zalecenia', 'plan', 'treatment'Editor UI
Dział zatytułowany „Editor UI”CenterPanel Layout
Dział zatytułowany „CenterPanel Layout”┌─────────────────────────────────────┐│ Patient Header + Visit Info │├─────────────────────────────────────┤│ Reason for Visit [text input] │├─────────────────────────────────────┤│ [S] Subjective ││ [expandable textarea] │├─────────────────────────────────────┤│ [O] Objective ││ [expandable textarea] │├─────────────────────────────────────┤│ [A] Assessment ││ [expandable textarea] │├─────────────────────────────────────┤│ [P] Plan ││ [expandable textarea] │├─────────────────────────────────────┤│ Internal Notes (collapsed) │└─────────────────────────────────────┘useVisitEditor
Dział zatytułowany „useVisitEditor”// EditedVisitData.soapeditedData.soap = { subjective: '', objective: '', assessment: '', plan: '', ai_sugestie: ''}
// Update single sectionsetEditedData(prev => ({ ...prev, soap: { ...prev.soap, [section]: value }}), { source: 'user' });Autosave
Dział zatytułowany „Autosave”SOAP pola są automatycznie zapisywane:
// useAutosave in useVisitSelectionuseAutosave({ trigger: `${selectedVisit?.id}:${editCounter}:${version}`, idleMs: 2000, canSave: hasChanges && !errors && !aiBusy, save: () => saveVisit(true),});Finalization
Dział zatytułowany „Finalization”Przed finalizacją wizyty SOAP powinien być kompletny:
// visitApi.finalizeawait visitApi.finalize(visitId, editedData, version);
// Updates visit_status to 'finalized'// SOAP fields are locked after finalizationTemplates
Dział zatytułowany „Templates”SOAP może być pre-filled z szablonu:
// VisitTemplate{ visitType: 'vaccination', defaultSubjective: 'Szczepienie profilaktyczne.', defaultObjective: 'Pacjent w dobrym stanie ogólnym.', defaultAssessment: '', defaultPlan: 'Szczepienie wykonane. Kontrola za rok.',}→ Zobacz Visit Templates
Related
Dział zatytułowany „Related”- Visits Overview - Module architecture
- Creating a Visit - Create visit flow
- Visit Templates - Pre-fill templates
- AI Suite: SOAP Generation - AI details