Przejdź do głównej zawartości

Task Suggestions

Na tej stronie

AI Task Suggestions automatycznie proponuje zadania na podstawie wizyty – przypomnienia o kontroli, badania do wykonania, recepty do wystawienia.


flowchart TB
subgraph Trigger["Trigger"]
VisitComplete[Visit Completed]
SOAPGenerated[SOAP Generated]
Manual[Manual Request]
end
subgraph Generation["Generation"]
Service[aiTaskSuggestionsService]
AI[unified_ai_generate_tasks]
end
subgraph Output["Output"]
Suggestions[Task Suggestions]
Accept[Accept → Create Task]
Dismiss[Dismiss]
end
Trigger --> Service
Service --> AI
AI --> Suggestions
Suggestions --> Accept
Suggestions --> Dismiss

Plik: src/hooks/ai/useAiTaskSuggestions.ts

const {
suggestions, // TaskSuggestion[]
isLoading,
error,
acceptSuggestion,
dismissSuggestion,
acceptAll,
dismissAll,
refresh,
} = useAiTaskSuggestions(visitId);

interface TaskSuggestion {
id: string;
visitId: string;
title: string;
description?: string;
priority: 'low' | 'medium' | 'high';
suggestedDueDate?: string;
type: SuggestionType;
confidence: number; // 0-1
}
type SuggestionType =
| 'followup' // Wizyta kontrolna
| 'lab_test' // Badania laboratoryjne
| 'prescription' // Recepta
| 'callback' // Telefon do właściciela
| 'reminder' // Przypomnienie ogólne
| 'vaccination'; // Szczepienie

sequenceDiagram
participant UI as Visit Editor
participant Hook as useAiTaskSuggestions
participant Service as aiTaskSuggestionsService
participant BE as Backend
participant LLM as AI
Note over UI: Visit finalized
UI->>Hook: visitId changed
Hook->>Service: generateSuggestions(visitId)
Service->>BE: unified_ai_generate_tasks
BE->>BE: Load visit + patient data
BE->>LLM: Generate suggestions
LLM-->>BE: Suggested tasks
BE-->>Service: TaskSuggestion[]
Service-->>Hook: suggestions
Hook->>UI: Display suggestions

┌─────────────────────────────────────────────┐
│ 💡 AI Suggestions (3) │
├─────────────────────────────────────────────┤
│ │
│ ☐ 📅 Wizyta kontrolna za 5 dni │
│ Sprawdzenie postępu leczenia │
│ [Accept] [Dismiss] │
│ │
│ ☐ 🧪 Badanie krwi - morfologia │
│ Kontrola po antybiotykoterapii │
│ [Accept] [Dismiss] │
│ │
│ ☐ 📞 Telefon do właściciela │
│ Sprawdzić stan pacjenta za 2 dni │
│ [Accept] [Dismiss] │
│ │
├─────────────────────────────────────────────┤
│ [Accept All] [Dismiss All] │
└─────────────────────────────────────────────┘

CommandDescription
unified_ai_generate_tasksGenerate suggestions for visit
unified_ai_list_task_suggestionsList existing suggestions
unified_ai_accept_task_suggestionsAccept and create tasks
unified_ai_dismiss_task_suggestionsDismiss suggestions

// Accept single suggestion
const acceptSuggestion = async (suggestionId: string) => {
// 1. Call backend to accept
await safeInvoke('unified_ai_accept_task_suggestions', {
suggestion_ids: [suggestionId],
});
// 2. Task created automatically
// 3. Remove from suggestions list
setSuggestions(prev =>
prev.filter(s => s.id !== suggestionId)
);
// 4. Refresh tasks list
refreshTasks();
};

// WorkspaceReminders panel
const { aiSuggestions, aiLoading, aiAccept, aiDismiss } =
useAiTaskSuggestions(
aiTasksEnabled ? lastAiVisitId : null
);
// lastAiVisitId from localStorage
const lastAiVisitId = localStorage.getItem('vista.ai.lastVisitId');
// Event to update
'vista-open-workspace-ai-suggestions' → updates lastAiVisitId

AI analizuje wizytę i sugeruje zadania na podstawie:

SourceSuggestions
Plan (SOAP)Follow-up visits, prescriptions
AssessmentLab tests, specialists
MedicationsRefill reminders
Visit typeStandard protocols
SOAP Plan:
"Metacam 5 dni, kontrola po leczeniu, morfologia za tydzień"
Generated Suggestions:
1. Followup: "Wizyta kontrolna" - due: +5 days
2. Lab test: "Morfologia krwi" - due: +7 days
3. Reminder: "Sprawdzić tolerancję leku" - due: +2 days

Sugestie mają confidence score:

ScoreMeaningUI
0.9+Very confidentBold, highlighted
0.7-0.9ConfidentNormal
0.5-0.7ModerateSubtle
<0.5LowNot shown by default

// User preferences
{
tasks_panel_mode: 'manual' | 'auto' | 'off',
auto_generate_tasks: boolean,
}
// 'auto' - suggestions generated automatically
// 'manual' - only on request
// 'off' - feature disabled