feat(ai-onboarding): enhance conversation flow, prompt rules & update Postman environment port to 8001
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
from typing import Any, Literal, Optional
|
||||
from typing import Any, Literal, Optional, Union
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
@@ -50,12 +50,72 @@ class SendMessageResponse(BaseModel):
|
||||
response_time_sec: Optional[float] = None
|
||||
|
||||
|
||||
class Symptom(BaseModel):
|
||||
name: str
|
||||
duration: Optional[str] = None
|
||||
severity: Optional[str] = None
|
||||
description: Optional[str] = None
|
||||
location: Optional[str] = None
|
||||
onset: Optional[str] = None
|
||||
frequency: Optional[str] = None
|
||||
pattern: Optional[str] = None
|
||||
triggers: Optional[str] = None
|
||||
relieving_factors: Optional[str] = None
|
||||
aggravating_factors: Optional[str] = None
|
||||
|
||||
|
||||
class MedicationDetail(BaseModel):
|
||||
name: str
|
||||
dosage: Optional[str] = None
|
||||
frequency: Optional[str] = None
|
||||
duration: Optional[str] = None
|
||||
reason: Optional[str] = None
|
||||
|
||||
|
||||
class AllergyDetail(BaseModel):
|
||||
name: str
|
||||
type: Optional[str] = None
|
||||
reaction: Optional[str] = None
|
||||
|
||||
|
||||
class MedicalHistoryDetail(BaseModel):
|
||||
condition: str
|
||||
duration: Optional[str] = None
|
||||
status: Optional[str] = None
|
||||
|
||||
|
||||
class SurgicalHistoryDetail(BaseModel):
|
||||
procedure: str
|
||||
approximate_date: Optional[str] = None
|
||||
reason: Optional[str] = None
|
||||
|
||||
|
||||
class PreviousEpisodeDetail(BaseModel):
|
||||
description: str
|
||||
time: Optional[str] = None
|
||||
outcome: Optional[str] = None
|
||||
|
||||
|
||||
class FamilyHistoryDetail(BaseModel):
|
||||
condition: str
|
||||
relationship: Optional[str] = None
|
||||
|
||||
|
||||
class AdditionalInfoDetail(BaseModel):
|
||||
category: str
|
||||
value: str
|
||||
|
||||
|
||||
class AIStateUpdate(BaseModel):
|
||||
reason_for_visit: Optional[Any] = None
|
||||
symptoms: Optional[Any] = None
|
||||
medical_history: Optional[Any] = None
|
||||
medications: Optional[Any] = None
|
||||
allergies: Optional[Any] = None
|
||||
surgical_history: Optional[Any] = None
|
||||
previous_episodes: Optional[Any] = None
|
||||
family_history: Optional[Any] = None
|
||||
additional_information: Optional[Any] = None
|
||||
|
||||
|
||||
class AIOnboardingResponse(BaseModel):
|
||||
@@ -63,13 +123,7 @@ class AIOnboardingResponse(BaseModel):
|
||||
next_stage: str
|
||||
state_updates: AIStateUpdate
|
||||
completed: bool = False
|
||||
|
||||
|
||||
class Symptom(BaseModel):
|
||||
name: str
|
||||
duration: Optional[str] = None
|
||||
severity: Optional[str] = None
|
||||
description: Optional[str] = None
|
||||
suggested_specialty: Optional[dict[str, Any]] = None
|
||||
|
||||
|
||||
class PatientOnboardingResult(BaseModel):
|
||||
@@ -79,17 +133,19 @@ class PatientOnboardingResult(BaseModel):
|
||||
insurance_scheme: Optional[str] = None
|
||||
category: dict[str, Any]
|
||||
chief_complaint: Optional[str] = None
|
||||
symptoms: list[Symptom] = Field(default_factory=list)
|
||||
medical_history: list[str] = Field(default_factory=list)
|
||||
medications: list[str] = Field(default_factory=list)
|
||||
allergies: list[str] = Field(default_factory=list)
|
||||
symptoms: list[Union[Symptom, dict, str]] = Field(default_factory=list)
|
||||
medical_history: list[Union[str, dict, MedicalHistoryDetail]] = Field(default_factory=list)
|
||||
medications: list[Union[str, dict, MedicationDetail]] = Field(default_factory=list)
|
||||
allergies: list[Union[str, dict, AllergyDetail]] = Field(default_factory=list)
|
||||
surgical_history: Optional[list[Union[str, dict, SurgicalHistoryDetail]]] = Field(default_factory=list)
|
||||
previous_episodes: Optional[list[Union[str, dict, PreviousEpisodeDetail]]] = Field(default_factory=list)
|
||||
family_history: Optional[list[Union[str, dict, FamilyHistoryDetail]]] = Field(default_factory=list)
|
||||
dietary_habits: Optional[str] = None
|
||||
additional_information: Optional[str] = None
|
||||
additional_information: Optional[Any] = None
|
||||
language: str
|
||||
onboarding_completed: bool = True
|
||||
|
||||
|
||||
|
||||
class CompleteOnboardingRequest(BaseModel):
|
||||
confirmed: bool = False
|
||||
|
||||
|
||||
Reference in New Issue
Block a user