| | 1 | = UseCase03 - Patient Views Medical Records = |
| | 2 | |
| | 3 | == Initiating Actor - `Patient` == |
| | 4 | |
| | 5 | == Description == |
| | 6 | A patient views their complete medical record including diagnoses, symptoms, allergies, prescriptions, lab results, and procedures. The system retrieves all associated medical data organized by category. |
| | 7 | |
| | 8 | == Scenario == |
| | 9 | |
| | 10 | 1. Patient logs in and navigates to "Medical Records" section. |
| | 11 | |
| | 12 | {{{ |
| | 13 | #!sql |
| | 14 | SELECT |
| | 15 | mr.record_id, |
| | 16 | mr.patient_id |
| | 17 | FROM medical_records mr |
| | 18 | WHERE mr.patient_id = (SELECT patient_id FROM patients WHERE user_id = (SELECT user_id FROM users WHERE username = 'maja.veljanova')); |
| | 19 | }}} |
| | 20 | |
| | 21 | 2. System retrieves all the diagnoses for the patient. |
| | 22 | |
| | 23 | {{{ |
| | 24 | #!sql |
| | 25 | SELECT |
| | 26 | diag.diagnosis_id, |
| | 27 | diag.name, |
| | 28 | diag.description, |
| | 29 | u.first_name AS doctor_first_name, |
| | 30 | u.last_name AS doctor_last_name |
| | 31 | FROM diagnosis diag |
| | 32 | JOIN doctors d ON diag.doctor_id = d.doctor_id |
| | 33 | JOIN users u ON d.user_id = u.user_id |
| | 34 | WHERE diag.patient_id = (SELECT patient_id FROM patients WHERE user_id = (SELECT user_id FROM users WHERE username = 'maja.veljanova')); |
| | 35 | }}} |
| | 36 | |
| | 37 | 3. System retrieves symptoms that are recorded in the medical record. |
| | 38 | |
| | 39 | {{{ |
| | 40 | #!sql |
| | 41 | SELECT |
| | 42 | s.name, |
| | 43 | s.description, |
| | 44 | mrs.date_recorded |
| | 45 | FROM medical_record_symptoms mrs |
| | 46 | JOIN symptoms s ON mrs.symptom_id = s.symptom_id |
| | 47 | WHERE mrs.record_id = (SELECT record_id FROM medical_records WHERE patient_id = (SELECT patient_id FROM patients WHERE user_id = (SELECT user_id FROM users WHERE username = 'maja.veljanova'))); |
| | 48 | }}} |
| | 49 | |
| | 50 | 4. System retrieves the allergies recorded in the medical record. |
| | 51 | |
| | 52 | {{{ |
| | 53 | #!sql |
| | 54 | SELECT |
| | 55 | a.name, |
| | 56 | a.description, |
| | 57 | mra.reaction, |
| | 58 | mra.severity |
| | 59 | FROM medical_record_allergies mra |
| | 60 | JOIN allergies a ON mra.allergy_id = a.allergy_id |
| | 61 | WHERE mra.record_id = (SELECT record_id FROM medical_records WHERE patient_id = (SELECT patient_id FROM patients WHERE user_id = (SELECT user_id FROM users WHERE username = 'maja.veljanova'))); |
| | 62 | }}} |
| | 63 | |
| | 64 | 5. System retrieves the lab results linked to the medical record. |
| | 65 | |
| | 66 | {{{ |
| | 67 | #!sql |
| | 68 | SELECT |
| | 69 | lt.test_name, |
| | 70 | lr.results, |
| | 71 | lr.result_date |
| | 72 | FROM medical_record_lab_results mrlr |
| | 73 | JOIN lab_results lr ON mrlr.result_id = lr.result_id |
| | 74 | JOIN lab_tests lt ON lr.test_id = lt.test_id |
| | 75 | WHERE mrlr.record_id = (SELECT record_id FROM medical_records WHERE patient_id = (SELECT patient_id FROM patients WHERE user_id = (SELECT user_id FROM users WHERE username = 'maja.veljanova'))); |
| | 76 | }}} |
| | 77 | |
| | 78 | 6. System retrieves the procedures linked to the medical record. |
| | 79 | |
| | 80 | {{{ |
| | 81 | #!sql |
| | 82 | SELECT |
| | 83 | pr.procedure_type, |
| | 84 | pr.description |
| | 85 | FROM medical_record_procedures mrp |
| | 86 | JOIN procedures pr ON mrp.procedure_id = pr.procedure_id |
| | 87 | WHERE mrp.record_id = (SELECT record_id FROM medical_records WHERE patient_id = (SELECT patient_id FROM patients WHERE user_id = (SELECT user_id FROM users WHERE username = 'maja.veljanova'))); |
| | 88 | }}} |
| | 89 | |
| | 90 | 7. System retrieves prescriptions linked to the medical record. |
| | 91 | |
| | 92 | {{{ |
| | 93 | #!sql |
| | 94 | SELECT |
| | 95 | p.name AS prescription_name, |
| | 96 | pmr.dosage, |
| | 97 | pmr.frequency, |
| | 98 | pmr.duration |
| | 99 | FROM prescription_medical_record pmr |
| | 100 | JOIN prescriptions p ON pmr.prescription_id = p.prescription_id |
| | 101 | WHERE pmr.record_id = ( |
| | 102 | SELECT record_id |
| | 103 | FROM medical_records |
| | 104 | WHERE patient_id = |
| | 105 | (SELECT patient_id |
| | 106 | FROM patients |
| | 107 | WHERE user_id = |
| | 108 | (SELECT user_id |
| | 109 | FROM users |
| | 110 | WHERE username = 'maja.veljanova'))); |
| | 111 | }}} |
| | 112 | |
| | 113 | 8. System retrieves medical reports created for this patient. |
| | 114 | |
| | 115 | {{{ |
| | 116 | #!sql |
| | 117 | SELECT |
| | 118 | rep.report_id, |
| | 119 | rep.content, |
| | 120 | rep.created_date, |
| | 121 | u.first_name AS doctor_first_name, |
| | 122 | u.last_name AS doctor_last_name |
| | 123 | FROM medical_reports rep |
| | 124 | JOIN doctors d ON rep.doctor_id = d.doctor_id |
| | 125 | JOIN users u ON d.user_id = u.user_id |
| | 126 | WHERE rep.record_id = ( |
| | 127 | SELECT record_id |
| | 128 | FROM medical_records |
| | 129 | WHERE patient_id = ( |
| | 130 | SELECT patient_id |
| | 131 | FROM patients |
| | 132 | WHERE user_id = ( |
| | 133 | SELECT user_id |
| | 134 | FROM users WHERE username = 'maja.veljanova'))); |
| | 135 | }}} |
| | 136 | |
| | 137 | 9. Patient views their complete medical history organized by category. |