Ali2206 commited on
Commit
2912388
·
verified ·
1 Parent(s): a895713

Update models/schemas.py

Browse files
Files changed (1) hide show
  1. models/schemas.py +27 -85
models/schemas.py CHANGED
@@ -1,6 +1,6 @@
1
  from pydantic import BaseModel, EmailStr
2
- from typing import Optional, List, Literal, Dict, Any
3
- from datetime import date, time, datetime
4
 
5
  # --- USER SCHEMAS ---
6
  class SignupForm(BaseModel):
@@ -13,100 +13,42 @@ class TokenResponse(BaseModel):
13
  access_token: str
14
  token_type: str
15
 
16
- # --- DOCTOR CREATION SCHEMA ---
17
  class DoctorCreate(BaseModel):
18
  matricule: str
19
  email: EmailStr
20
  password: str
21
  full_name: str
22
- specialty: str
 
23
 
24
  # --- CONTACT INFO ---
25
  class ContactInfo(BaseModel):
26
  email: Optional[EmailStr] = None
27
  phone: Optional[str] = None
28
 
29
- # --- CONDITION SCHEMA ---
30
- class Condition(BaseModel):
31
- id: str
32
- code: str
33
- status: Optional[str] = ""
34
- onset_date: Optional[str] = None
35
- recorded_date: Optional[str] = None
36
- verification_status: Optional[str] = ""
37
-
38
- # --- MEDICATION SCHEMA ---
39
- class Medication(BaseModel):
40
- id: str
41
- name: str
42
- status: str
43
- prescribed_date: Optional[str] = None
44
- requester: Optional[str] = ""
45
- dosage: Optional[str] = ""
46
-
47
- # --- ENCOUNTER SCHEMA ---
48
- class Encounter(BaseModel):
49
- id: str
50
- type: str
51
- status: str
52
- period: Dict[str, str]
53
- service_provider: Optional[str] = ""
54
-
55
- # --- NOTE SCHEMA ---
56
- class Note(BaseModel):
57
- id: str
58
- date: str
59
- type: str
60
- text: str
61
- context: Optional[str] = ""
62
- author: Optional[str] = "System"
63
-
64
- # --- PATIENT BASE SCHEMA ---
65
- class PatientBase(BaseModel):
66
  full_name: str
 
67
  gender: str
68
- date_of_birth: str
69
- address: Optional[str] = ""
70
- city: Optional[str] = ""
71
- state: Optional[str] = ""
72
- postal_code: Optional[str] = ""
73
- country: Optional[str] = "US"
74
- marital_status: Optional[str] = "Never Married"
75
- language: Optional[str] = "en"
76
-
77
- # --- PATIENT CREATE SCHEMA ---
78
- class PatientCreate(PatientBase):
79
- conditions: Optional[List[Condition]] = []
80
- medications: Optional[List[Medication]] = []
81
- encounters: Optional[List[Encounter]] = []
82
- notes: Optional[List[Note]] = []
83
-
84
- # --- PATIENT RESPONSE SCHEMA ---
85
- class Patient(PatientBase):
86
- id: str
87
- fhir_id: Optional[str] = None
88
- source: Optional[str] = None
89
- conditions: List[Condition] = []
90
- medications: List[Medication] = []
91
- encounters: List[Encounter] = []
92
- notes: List[Note] = []
93
-
94
- class Config:
95
- orm_mode = True
96
-
97
- # --- PATIENT UPDATE SCHEMA ---
98
- class PatientUpdate(BaseModel):
99
- full_name: Optional[str] = None
100
- gender: Optional[str] = None
101
- date_of_birth: Optional[str] = None
102
  address: Optional[str] = None
103
- city: Optional[str] = None
104
- state: Optional[str] = None
105
- postal_code: Optional[str] = None
106
- country: Optional[str] = None
107
- marital_status: Optional[str] = None
108
- language: Optional[str] = None
109
- conditions: Optional[List[Condition]] = None
110
- medications: Optional[List[Medication]] = None
111
- encounters: Optional[List[Encounter]] = None
112
- notes: Optional[List[Note]] = None
 
 
 
 
 
 
 
 
 
1
  from pydantic import BaseModel, EmailStr
2
+ from typing import Optional, List, Literal
3
+ from datetime import date, time
4
 
5
  # --- USER SCHEMAS ---
6
  class SignupForm(BaseModel):
 
13
  access_token: str
14
  token_type: str
15
 
16
+ # --- DOCTOR CREATION SCHEMA (Admin use only) ---
17
  class DoctorCreate(BaseModel):
18
  matricule: str
19
  email: EmailStr
20
  password: str
21
  full_name: str
22
+ specialty: str # ✅ added field
23
+
24
 
25
  # --- CONTACT INFO ---
26
  class ContactInfo(BaseModel):
27
  email: Optional[EmailStr] = None
28
  phone: Optional[str] = None
29
 
30
+ # --- PATIENT SCHEMA ---
31
+ class PatientCreate(BaseModel):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  full_name: str
33
+ date_of_birth: date
34
  gender: str
35
+ notes: Optional[str] = ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  address: Optional[str] = None
37
+ national_id: Optional[str] = None
38
+ blood_type: Optional[str] = None
39
+ allergies: Optional[List[str]] = []
40
+ chronic_conditions: Optional[List[str]] = []
41
+ medications: Optional[List[str]] = []
42
+ emergency_contact_name: Optional[str] = None
43
+ emergency_contact_phone: Optional[str] = None
44
+ insurance_provider: Optional[str] = None
45
+ insurance_policy_number: Optional[str] = None
46
+ contact: Optional[ContactInfo] = None
47
+
48
+ # --- APPOINTMENT SCHEMA ---
49
+ class AppointmentCreate(BaseModel):
50
+ patient_id: str # MongoDB ObjectId as string
51
+ doctor_id: str # MongoDB ObjectId as string
52
+ date: date
53
+ time: time
54
+ reason: Optional[str] = None