| | 1 | = UseCase04 - Doctor Views Patient Medical Records = |
| | 2 | |
| | 3 | == Initiating Actor - `Doctor` == |
| | 4 | |
| | 5 | |
| | 6 | == Description == |
| | 7 | A doctor views the complete medical history of a patient including diagnoses, symptoms, allergies, lab results, procedures, prescriptions, and medical reports. The system retrieves all associated clinical data to help the doctor make informed decisions. |
| | 8 | |
| | 9 | == Scenario == |
| | 10 | |
| | 11 | 1. Doctor searches for a patient by name or ID. |
| | 12 | |
| | 13 | {{{ |
| | 14 | #!sql |
| | 15 | SELECT |
| | 16 | p.patient_id, |
| | 17 | p.embg, |
| | 18 | p.date_of_birth, |
| | 19 | p.blood_type, |
| | 20 | p.gender, |
| | 21 | u.first_name, |
| | 22 | u.last_name, |
| | 23 | u.phone_number, |
| | 24 | u.email |
| | 25 | FROM patients p |
| | 26 | JOIN users u ON p.user_id = u.user_id |
| | 27 | WHERE u.last_name = 'Veljanova'; |
| | 28 | }}} |
| | 29 | |
| | 30 | 2. Doctor navigates to the patient's medical record. |
| | 31 | |
| | 32 | {{{ |
| | 33 | #!sql |
| | 34 | SELECT |
| | 35 | mr.record_id, |
| | 36 | mr.patient_id |
| | 37 | FROM medical_records mr |
| | 38 | WHERE mr.patient_id = ( |
| | 39 | SELECT patient_id |
| | 40 | FROM patients |
| | 41 | WHERE user_id = ( |
| | 42 | SELECT user_id |
| | 43 | FROM users |
| | 44 | WHERE username = 'maja.veljanova')); |
| | 45 | }}} |
| | 46 | |
| | 47 | 3. System displays all diagnoses for the patient. |
| | 48 | |
| | 49 | {{{ |
| | 50 | #!sql |
| | 51 | SELECT |
| | 52 | diag.diagnosis_id, |
| | 53 | diag.name, |
| | 54 | diag.description, |
| | 55 | u.first_name AS doctor_first_name, |
| | 56 | u.last_name AS doctor_last_name |
| | 57 | FROM diagnosis diag |
| | 58 | JOIN doctors d ON diag.doctor_id = d.doctor_id |
| | 59 | JOIN users u ON d.user_id = u.user_id |
| | 60 | WHERE diag.patient_id = ( |
| | 61 | SELECT patient_id |
| | 62 | FROM patients |
| | 63 | WHERE user_id = ( |
| | 64 | SELECT user_id |
| | 65 | FROM users |
| | 66 | WHERE username = 'maja.veljanova')); |
| | 67 | }}} |
| | 68 | |
| | 69 | 4. System displays symptoms recorded in the medical record. |
| | 70 | |
| | 71 | {{{ |
| | 72 | #!sql |
| | 73 | SELECT |
| | 74 | s.name, |
| | 75 | s.description, |
| | 76 | mrs.date_recorded |
| | 77 | FROM medical_record_symptoms mrs |
| | 78 | JOIN symptoms s ON mrs.symptom_id = s.symptom_id |
| | 79 | WHERE mrs.record_id = ( |
| | 80 | SELECT record_id |
| | 81 | FROM medical_records |
| | 82 | WHERE patient_id = ( |
| | 83 | SELECT patient_id |
| | 84 | FROM patients |
| | 85 | WHERE user_id = ( |
| | 86 | SELECT user_id |
| | 87 | FROM users |
| | 88 | WHERE username = 'maja.veljanova'))); |
| | 89 | }}} |
| | 90 | |
| | 91 | 5. System displays allergies with reaction and severity information. |
| | 92 | |
| | 93 | {{{ |
| | 94 | #!sql |
| | 95 | SELECT |
| | 96 | a.name, |
| | 97 | a.description, |
| | 98 | mra.reaction, |
| | 99 | mra.severity |
| | 100 | FROM medical_record_allergies mra |
| | 101 | JOIN allergies a ON mra.allergy_id = a.allergy_id |
| | 102 | WHERE mra.record_id = ( |
| | 103 | SELECT record_id |
| | 104 | FROM medical_records |
| | 105 | WHERE patient_id = ( |
| | 106 | SELECT patient_id |
| | 107 | FROM patients |
| | 108 | WHERE user_id = ( |
| | 109 | SELECT user_id |
| | 110 | FROM users |
| | 111 | WHERE username = 'maja.veljanova'))); |
| | 112 | }}} |
| | 113 | |
| | 114 | 6. System displays lab results linked to the medical record. |
| | 115 | |
| | 116 | {{{ |
| | 117 | #!sql |
| | 118 | SELECT |
| | 119 | lt.test_name, |
| | 120 | lr.results, |
| | 121 | lr.result_date |
| | 122 | FROM medical_record_lab_results mrlr |
| | 123 | JOIN lab_results lr ON mrlr.result_id = lr.result_id |
| | 124 | JOIN lab_tests lt ON lr.test_id = lt.test_id |
| | 125 | WHERE mrlr.record_id = ( |
| | 126 | SELECT record_id |
| | 127 | FROM medical_records |
| | 128 | WHERE patient_id = ( |
| | 129 | SELECT patient_id |
| | 130 | FROM patients |
| | 131 | WHERE user_id = ( |
| | 132 | SELECT user_id |
| | 133 | FROM users |
| | 134 | WHERE username = 'maja.veljanova'))); |
| | 135 | }}} |
| | 136 | |
| | 137 | 7. System displays procedures linked to the medical record. |
| | 138 | |
| | 139 | {{{ |
| | 140 | #!sql |
| | 141 | SELECT |
| | 142 | pr.procedure_type, |
| | 143 | pr.description |
| | 144 | FROM medical_record_procedures mrp |
| | 145 | JOIN procedures pr ON mrp.procedure_id = pr.procedure_id |
| | 146 | WHERE mrp.record_id = ( |
| | 147 | SELECT record_id |
| | 148 | FROM medical_records |
| | 149 | WHERE patient_id = ( |
| | 150 | SELECT patient_id |
| | 151 | FROM patients |
| | 152 | WHERE user_id = ( |
| | 153 | SELECT user_id |
| | 154 | FROM users |
| | 155 | WHERE username = 'maja.veljanova'))); |
| | 156 | }}} |
| | 157 | |
| | 158 | 8. System displays prescriptions linked to the medical record. |
| | 159 | |
| | 160 | {{{ |
| | 161 | #!sql |
| | 162 | SELECT |
| | 163 | p.name AS prescription_name, |
| | 164 | pmr.dosage, |
| | 165 | pmr.frequency, |
| | 166 | pmr.duration |
| | 167 | FROM prescription_medical_record pmr |
| | 168 | JOIN prescriptions p ON pmr.prescription_id = p.prescription_id |
| | 169 | WHERE pmr.record_id = ( |
| | 170 | SELECT record_id |
| | 171 | FROM medical_records |
| | 172 | WHERE patient_id = ( |
| | 173 | SELECT patient_id |
| | 174 | FROM patients |
| | 175 | WHERE user_id = ( |
| | 176 | SELECT user_id |
| | 177 | FROM users |
| | 178 | WHERE username = 'maja.veljanova'))); |
| | 179 | }}} |
| | 180 | |
| | 181 | 9. System displays medical reports created for this patient. |
| | 182 | |
| | 183 | {{{ |
| | 184 | #!sql |
| | 185 | SELECT |
| | 186 | rep.report_id, |
| | 187 | rep.content, |
| | 188 | rep.created_date, |
| | 189 | u.first_name AS doctor_first_name, |
| | 190 | u.last_name AS doctor_last_name |
| | 191 | FROM medical_reports rep |
| | 192 | JOIN doctors d ON rep.doctor_id = d.doctor_id |
| | 193 | JOIN users u ON d.user_id = u.user_id |
| | 194 | WHERE rep.record_id = ( |
| | 195 | SELECT record_id |
| | 196 | FROM medical_records |
| | 197 | WHERE patient_id = ( |
| | 198 | SELECT patient_id |
| | 199 | FROM patients |
| | 200 | WHERE user_id = ( |
| | 201 | SELECT user_id |
| | 202 | FROM users |
| | 203 | WHERE username = 'maja.veljanova'))); |
| | 204 | }}} |
| | 205 | |
| | 206 | 10. Doctor reviews the complete patient history and proceeds with clinical decisions. |