| 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 || ')'; |