| | 1 | = UseCase09 - Doctor Records Procedure Outcome = |
| | 2 | |
| | 3 | == Initiating Actor - `Doctor` == |
| | 4 | |
| | 5 | == Description == |
| | 6 | After performing a procedure, a doctor records the outcome. The system stores the procedure result, links it to the patient's medical record, and updates the performed procedure notes. |
| | 7 | |
| | 8 | == Scenario == |
| | 9 | |
| | 10 | 1. Doctor navigates to pending procedures for a patient. |
| | 11 | |
| | 12 | {{{ |
| | 13 | #!sql |
| | 14 | SELECT |
| | 15 | pp.performed_id, |
| | 16 | pr.procedure_type, |
| | 17 | pr.description, |
| | 18 | pp.procedure_date, |
| | 19 | pp.notes |
| | 20 | FROM performed_procedures pp |
| | 21 | JOIN procedures pr ON pp.procedure_id = pr.procedure_id |
| | 22 | WHERE pp.patient_id = ( |
| | 23 | SELECT patient_id |
| | 24 | FROM users |
| | 25 | WHERE username = 'maja.veljanova') |
| | 26 | AND pp.doctor_id = ( |
| | 27 | SELECT doctor_id |
| | 28 | FROM users |
| | 29 | WHERE username = 'elena.kirova'); |
| | 30 | }}} |
| | 31 | |
| | 32 | 2. Doctor selects a performed procedure to record the outcome for. |
| | 33 | |
| | 34 | {{{ |
| | 35 | #!sql |
| | 36 | SELECT |
| | 37 | pp.performed_id, |
| | 38 | pr.procedure_type, |
| | 39 | pr.description, |
| | 40 | u_p.first_name AS patient_first_name, |
| | 41 | u_p.last_name AS patient_last_name, |
| | 42 | pp.procedure_date, |
| | 43 | pp.notes |
| | 44 | FROM performed_procedures pp |
| | 45 | JOIN procedures pr ON pp.procedure_id = pr.procedure_id |
| | 46 | JOIN patients p ON pp.patient_id = p.patient_id |
| | 47 | JOIN users u_p ON p.patient_id = u_p.patient_id |
| | 48 | WHERE pp.performed_id = ( |
| | 49 | SELECT MAX(performed_id) |
| | 50 | FROM performed_procedures |
| | 51 | WHERE doctor_id = ( |
| | 52 | SELECT doctor_id |
| | 53 | FROM users |
| | 54 | WHERE username = 'elena.kirova')); |
| | 55 | }}} |
| | 56 | |
| | 57 | 3. Doctor enters the outcome notes and submits. |
| | 58 | |
| | 59 | {{{ |
| | 60 | #!sql |
| | 61 | UPDATE performed_procedures |
| | 62 | SET notes = 'ECG completed successfully. Heart rhythm normal, no arrhythmias detected.' |
| | 63 | WHERE performed_id = (SELECT MAX(performed_id) FROM performed_procedures |
| | 64 | WHERE doctor_id = (SELECT doctor_id FROM users WHERE username = 'elena.kirova')); |
| | 65 | }}} |
| | 66 | |
| | 67 | 4. System stores the detailed procedure result. |
| | 68 | |
| | 69 | {{{ |
| | 70 | #!sql |
| | 71 | INSERT INTO procedure_results (procedure_id, result_description, result_date) |
| | 72 | VALUES ( |
| | 73 | (SELECT procedure_id FROM procedures WHERE procedure_type = 'ECG'), |
| | 74 | 'Normal sinus rhythm. Heart rate 72 bpm. No ST elevation.', |
| | 75 | '2026-06-10' |
| | 76 | ) |
| | 77 | RETURNING result_id; |
| | 78 | }}} |
| | 79 | |
| | 80 | 5. System links the procedure result to the patient's medical record. |
| | 81 | |
| | 82 | {{{ |
| | 83 | #!sql |
| | 84 | INSERT INTO medical_record_procedure_results (record_id, result_id) |
| | 85 | VALUES ( |
| | 86 | (SELECT record_id FROM medical_records WHERE patient_id = ( |
| | 87 | SELECT patient_id |
| | 88 | FROM users |
| | 89 | WHERE username = 'maja.veljanova')), |
| | 90 | (SELECT MAX(result_id) |
| | 91 | FROM procedure_results) |
| | 92 | ); |
| | 93 | }}} |
| | 94 | |
| | 95 | 6. System confirms and displays all procedure results on the patient's medical record. |
| | 96 | |
| | 97 | {{{ |
| | 98 | #!sql |
| | 99 | SELECT |
| | 100 | p.procedure_type, |
| | 101 | pr.result_description, |
| | 102 | pr.result_date |
| | 103 | FROM medical_record_procedure_results mpr |
| | 104 | JOIN procedure_results pr ON mpr.result_id = pr.result_id |
| | 105 | JOIN procedures p ON pr.procedure_id = p.procedure_id |
| | 106 | WHERE mpr.record_id = ( |
| | 107 | SELECT record_id |
| | 108 | FROM medical_records |
| | 109 | WHERE patient_id = ( |
| | 110 | SELECT patient_id |
| | 111 | FROM users |
| | 112 | WHERE username = 'maja.veljanova')); |
| | 113 | }}} |