| | 1 | = UseCase08 - Doctor Requests Procedure = |
| | 2 | |
| | 3 | == Initiating Actor - `Doctor` == |
| | 4 | |
| | 5 | == Description == |
| | 6 | A doctor requests a medical procedure for a patient. The system creates a performed procedure record linking the doctor, patient, and procedure, optionally links to a diagnosis. |
| | 7 | |
| | 8 | == Scenario == |
| | 9 | |
| | 10 | 1. Doctor opens a patient's medical record. |
| | 11 | |
| | 12 | {{{ |
| | 13 | #!sql |
| | 14 | SELECT |
| | 15 | mr.record_id, |
| | 16 | mr.patient_id |
| | 17 | FROM medical_records mr |
| | 18 | WHERE mr.patient_id = ( |
| | 19 | SELECT patient_id FROM users WHERE username = 'maja.veljanova' |
| | 20 | ); |
| | 21 | }}} |
| | 22 | |
| | 23 | 2. System displays all available procedures. |
| | 24 | |
| | 25 | {{{ |
| | 26 | #!sql |
| | 27 | SELECT |
| | 28 | pr.procedure_id, |
| | 29 | pr.procedure_type, |
| | 30 | pr.description, |
| | 31 | pr.cost |
| | 32 | FROM procedures pr |
| | 33 | ORDER BY pr.procedure_type; |
| | 34 | }}} |
| | 35 | |
| | 36 | 3. Doctor selects a procedure, specifies the date, optionally links a diagnosis, and submits the request. |
| | 37 | |
| | 38 | {{{ |
| | 39 | #!sql |
| | 40 | INSERT INTO performed_procedures (patient_id, doctor_id, procedure_id, diagnosis_id, procedure_date, notes) |
| | 41 | VALUES ( |
| | 42 | (SELECT patient_id FROM users WHERE username = 'maja.veljanova'), |
| | 43 | (SELECT doctor_id FROM users WHERE username = 'elena.kirova'), |
| | 44 | (SELECT procedure_id FROM procedures WHERE procedure_type = 'ECG'), |
| | 45 | (SELECT diagnosis_id FROM diagnosis |
| | 46 | WHERE name = 'Essential hypertension' |
| | 47 | AND patient_id = ( |
| | 48 | SELECT patient_id |
| | 49 | FROM users |
| | 50 | WHERE username = 'maja.veljanova')), |
| | 51 | '2026-06-10', |
| | 52 | 'ECG for hypertension monitoring' |
| | 53 | ) |
| | 54 | RETURNING performed_id; |
| | 55 | }}} |
| | 56 | |
| | 57 | 4. System calculates the total cost of procedures scheduled for that date. |
| | 58 | |
| | 59 | {{{ |
| | 60 | #!sql |
| | 61 | SELECT SUM(pr.cost) AS total_cost |
| | 62 | FROM performed_procedures pp |
| | 63 | JOIN procedures pr ON pp.procedure_id = pr.procedure_id |
| | 64 | WHERE pp.patient_id = (SELECT patient_id FROM users WHERE username = 'maja.veljanova') |
| | 65 | AND pp.procedure_date = '2026-06-10'; |
| | 66 | }}} |
| | 67 | |
| | 68 | 5. System creates a billing record for the patient. |
| | 69 | |
| | 70 | {{{ |
| | 71 | #!sql |
| | 72 | INSERT INTO billing (total_cost, payment_status, record_id, admin_id) |
| | 73 | VALUES ( |
| | 74 | 40.00, |
| | 75 | 'PENDING', |
| | 76 | (SELECT record_id FROM medical_records WHERE patient_id = ( |
| | 77 | SELECT patient_id |
| | 78 | FROM users WHERE username = 'maja.veljanova')), |
| | 79 | (SELECT admin_id FROM admin LIMIT 1) |
| | 80 | ) |
| | 81 | RETURNING bill_id; |
| | 82 | }}} |
| | 83 | |
| | 84 | 6. System links the billing record to the performed procedure. |
| | 85 | |
| | 86 | {{{ |
| | 87 | #!sql |
| | 88 | INSERT INTO billing_procedures (bill_id, procedure_id) |
| | 89 | VALUES ( |
| | 90 | (SELECT MAX(bill_id) FROM billing), |
| | 91 | (SELECT procedure_id FROM procedures WHERE procedure_type = 'ECG') |
| | 92 | ); |
| | 93 | }}} |
| | 94 | |
| | 95 | 7. System confirms the request and displays all procedures for the patient. |
| | 96 | |
| | 97 | {{{ |
| | 98 | #!sql |
| | 99 | SELECT |
| | 100 | pp.performed_id, |
| | 101 | pr.procedure_type, |
| | 102 | pr.description, |
| | 103 | pp.procedure_date, |
| | 104 | pp.notes |
| | 105 | FROM performed_procedures pp |
| | 106 | JOIN procedures pr ON pp.procedure_id = pr.procedure_id |
| | 107 | WHERE pp.patient_id = ( |
| | 108 | SELECT patient_id |
| | 109 | FROM users |
| | 110 | WHERE username = 'maja.veljanova'); |
| | 111 | }}} |