feat(ai-onboarding): enhance conversation flow, prompt rules & update Postman environment port to 8001

This commit is contained in:
2026-09-01 15:22:40 +05:30
parent 1d794ca425
commit c23d979338
31 changed files with 4686 additions and 749 deletions
+70 -14
View File
@@ -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