Parcel #grcf65iq0m9jrt6
Created by Anonymous
Public
Created March 28, 2025 Expires in 4 days
Loading editor...
delimiter // create procedure prescribe in patient_name_param varchar(255), in doctor_name_param varchar(255), in medication_name_param varchar(255), in ppd_param int begin -- variable declarations declare patient_id_var int; declare age_var float; declare is_pregnant_var boolean; declare weight_var int; declare doctor_id_var int; declare medication_id_var int; declare take_under_12_var boolean; declare take_if_pregnant_var boolean; declare mg_per_pill_var double; declare max_mg_per_10kg_var double; declare message varchar(255); declare ddi_medication varchar(255); -- select relevant values into variables select patient_id, datediff(curdate(), dob) / 365.25, is_pregnant, weight into patient_id_var, age_var, is_pregnant_var, weight_var from patient where patient_name = patient_name_param; select doctor_id into doctor_id_var from doctor where doctor_name = doctor_name_param; select medication_id, take_under_12, take_if_pregnant, mg_per_pill, max_mg_per_10kg into medication_id_var, take_under_12_var, take_if_pregnant_var, mg_per_pill_var, max_mg_per_10kg_var from medication where medication_name = medication_name_param; -- check age of patient if (age_var < 12 and take_under_12_var = false) then select concat(medication_name_param, ' cannot be prescribed to children under 12.') into message; signal sqlstate 'HY000' set message_text = message; end if; -- check if medication ok for pregnant women (or the patient is not pregnant) if (is_pregnant_var = true and take_if_pregnant_var = false) then select concat(medication_name_param, ' cannot be prescribed to pregnant women.') into message; signal sqlstate 'HY000' set message_text = message; end if; -- Check for drug-drug interactions select m.medication_name into ddi_medication from prescription p join interaction i on p.medication_id = i.medication_1 join medication m on i.medication_2 = m.medication_id where p.patient_id = patient_id_var and i.medication_2 = medication_id_var limit 1; if ddi_medication is not null then select concat(medication_name_param, ' interacts with ', ddi_medication, ' currently prescribed to ', patient_name_param) into message; signal sqlstate 'HY000' set message_text = message; end if; -- No exceptions thrown, so insert the prescription record insert into prescription (medication_id, patient_id, doctor_id, prescription_dt, ppd) values (medication_id_var, patient_id_var, doctor_id_var, now(), ppd_param); end // delimiter ;