| | 1 | = UseCase14 - View and Record Patient Allergies = |
| | 2 | |
| | 3 | == Initiating Actor - `Doctor / Patient / Lab Technician` == |
| | 4 | |
| | 5 | == Description == |
| | 6 | Medical professionals and patients view a patient's recorded allergies. A doctor can additionally record a newly identified allergy during consultation. The system checks for duplicates and adds it to the patient's medical record. |
| | 7 | |
| | 8 | == Scenario == |
| | 9 | |
| | 10 | 1. User navigates to the patient's allergy profile. |
| | 11 | |
| | 12 | {{{ |
| | 13 | #!sql |
| | 14 | SELECT |
| | 15 | a.allergy_id, |
| | 16 | a.name, |
| | 17 | a.allergy_severity, |
| | 18 | mra.reaction, |
| | 19 | mra.severity |
| | 20 | FROM medical_record_allergies mra |
| | 21 | JOIN allergies a ON mra.allergy_id = a.allergy_id |
| | 22 | WHERE mra.record_id = ( |
| | 23 | SELECT record_id FROM medical_records |
| | 24 | WHERE patient_id = ( |
| | 25 | SELECT patient_id |
| | 26 | FROM users |
| | 27 | WHERE username = 'maja.veljanova') |
| | 28 | ); |
| | 29 | }}} |
| | 30 | |
| | 31 | 2. System displays all recorded allergies with severity levels. |
| | 32 | |
| | 33 | 3. Doctor clicks "Add Allergy" and system displays all available allergies to choose from. |
| | 34 | |
| | 35 | {{{ |
| | 36 | #!sql |
| | 37 | SELECT |
| | 38 | a.allergy_id, |
| | 39 | a.name, |
| | 40 | a.allergy_severity |
| | 41 | FROM allergies a |
| | 42 | ORDER BY a.name; |
| | 43 | }}} |
| | 44 | |
| | 45 | 4. System checks the allergy is not already recorded for this patient. |
| | 46 | |
| | 47 | {{{ |
| | 48 | #!sql |
| | 49 | SELECT 1 |
| | 50 | FROM medical_record_allergies mra |
| | 51 | WHERE mra.record_id = ( |
| | 52 | SELECT record_id FROM medical_records |
| | 53 | WHERE patient_id = (SELECT patient_id FROM users WHERE username = 'maja.veljanova') |
| | 54 | ) |
| | 55 | AND mra.allergy_id = (SELECT allergy_id FROM allergies WHERE name = 'Penicillin'); |
| | 56 | }}} |
| | 57 | |
| | 58 | 5. Doctor selects the allergy, enters reaction and severity, and submits. |
| | 59 | |
| | 60 | {{{ |
| | 61 | #!sql |
| | 62 | INSERT INTO medical_record_allergies (record_id, allergy_id, reaction, severity) |
| | 63 | VALUES ( |
| | 64 | (SELECT record_id FROM medical_records WHERE patient_id = (SELECT patient_id FROM users WHERE username = 'maja.veljanova')), |
| | 65 | (SELECT allergy_id FROM allergies WHERE name = 'Penicillin'), |
| | 66 | 'Rash and swelling', |
| | 67 | 'MODERATE' |
| | 68 | ); |
| | 69 | }}} |
| | 70 | |
| | 71 | 6. System displays the updated allergy profile. |
| | 72 | |
| | 73 | {{{ |
| | 74 | #!sql |
| | 75 | SELECT |
| | 76 | a.allergy_id, |
| | 77 | a.name, |
| | 78 | a.allergy_severity, |
| | 79 | mra.reaction, |
| | 80 | mra.severity |
| | 81 | FROM medical_record_allergies mra |
| | 82 | JOIN allergies a ON mra.allergy_id = a.allergy_id |
| | 83 | WHERE mra.record_id = ( |
| | 84 | SELECT record_id FROM medical_records |
| | 85 | WHERE patient_id = (SELECT patient_id FROM users WHERE username = 'maja.veljanova') |
| | 86 | ); |
| | 87 | }}} |