54 | | FOR v_item IN |
55 | | SELECT cobm.branded_medicine_id, cobm.quantity, bm.medicine_id |
| 57 | SELECT is_verified INTO isVerified |
| 58 | FROM synergymed.client |
| 59 | WHERE user_id = clientId; |
| 60 | |
| 61 | IF COALESCE(isVerified, FALSE) = FALSE THEN |
| 62 | UPDATE synergymed.clientorder |
| 63 | SET status = 'неуспешно' |
| 64 | WHERE id = p_order_id; |
| 65 | RAISE EXCEPTION 'Клиентот % не е верифициран!', clientId; |
| 66 | END IF; |
| 67 | |
| 68 | FOR orderItem IN |
| 69 | SELECT cobm.branded_medicine_id, cobm.quantity |
65 | | IF EXISTS ( |
66 | | SELECT 1 |
67 | | FROM synergymed.medicineinteraction mi |
68 | | WHERE (mi.medicine_id_1, mi.medicine_id_2) IN ( |
69 | | (v_item.medicine_id, v_active_pres.medicine_id), |
70 | | (v_active_pres.medicine_id, v_item.medicine_id) |
71 | | ) |
72 | | ) THEN |
73 | | v_problem := v_problem || E'\n Интеракција помеѓу нов лек ' || v_item.branded_medicine_id || ' и постоечки лек ' || v_active_pres.medicine_id; |
74 | | END IF; |
| 78 | FOR activePrescription IN |
| 79 | SELECT pr.medicine_id |
| 80 | FROM synergymed.prescription pr |
| 81 | WHERE pr.client_id = clientId |
| 82 | AND pr.valid_to >= CURRENT_DATE |
| 83 | LOOP |
| 84 | IF EXISTS ( |
| 85 | SELECT 1 |
| 86 | FROM synergymed.medicineinteraction mi |
| 87 | WHERE (mi.medicine_id_1 = medComponent.medicine_id AND mi.medicine_id_2 = activePrescription.medicine_id) |
| 88 | OR (mi.medicine_id_1 = activePrescription.medicine_id AND mi.medicine_id_2 = medComponent.medicine_id) |
| 89 | ) THEN |
| 90 | problems := problems || E'\n Интеракција помеѓу нов бренд лек ' || orderItem.branded_medicine_id || ' (компонента ' || medComponent.medicine_id |
| 91 | || ') и постоечки лек ' || activePrescription.medicine_id; |
| 92 | END IF; |
| 93 | END LOOP; |
76 | | |
77 | | IF EXISTS ( |
78 | | SELECT 1 |
79 | | FROM synergymed.inventory_brandedmedicine ibm |
80 | | WHERE ibm.branded_medicine_id = v_item.branded_medicine_id |
81 | | GROUP BY ibm.branded_medicine_id |
82 | | HAVING SUM(ibm.quantity) < v_item.quantity |
83 | | ) THEN |
84 | | v_problem := v_problem || E'\n Недоволна залиха за лек ' || v_item.branded_medicine_id; |
| 95 | |
| 96 | SELECT COALESCE(SUM(ibm.quantity), 0) INTO totalStock |
| 97 | FROM synergymed.inventory_brandedmedicine ibm |
| 98 | WHERE ibm.branded_medicine_id = orderItem.branded_medicine_id; |
| 99 | |
| 100 | IF totalStock < orderItem.quantity THEN |
| 101 | problems := problems || E'\n Недоволна залиха за бренд лек ' || orderItem.branded_medicine_id || ' (потребно: ' || orderItem.quantity |
| 102 | || ', достапно: ' || totalStock || ')'; |