| 32 | | == 2) Блокирање на клиент ако има повеќе неуспешни плаќања \\ |
| 33 | | Со оваа процедура се проверува колку пати клиентот имал неуспешно плаќање и ако надмине лимит, автоматски му се деактивира статусот. \\Корисна е за ризик менаџмент и заштита од злоупотреби.\\ |
| | 32 | == 2) Проверка на ризици при нова нарачка \\ |
| | 33 | Кога клиент прави нова нарачка, пред таа да се потврди, системот прави комплетна проверка – дали клиентот е верифициран, дали некој од лековите има опасни интеракции со постојните рецепти на клиентот, и дали залихата е доволна. Ако има проблем, процедурата враќа предупредување; ако е сè во ред, ја потврдува нарачката.\\ |
| | 34 | Ова е корисно за да се спречат нелегални купувања, медицински ризици и грешки. |
| 51 | | RAISE NOTICE 'Клиентот % е блокиран поради % неуспешни плаќања', p_client_id, v_failed; |
| | 54 | FOR v_item IN |
| | 55 | SELECT cobm.branded_medicine_id, cobm.quantity, bm.medicine_id |
| | 56 | FROM synergymed.clientorder_brandedmedicine cobm |
| | 57 | JOIN synergymed.brandedmedicine bm ON bm.id = cobm.branded_medicine_id |
| | 58 | WHERE cobm.order_id = p_order_id |
| | 59 | LOOP |
| | 60 | FOR v_active_pres IN |
| | 61 | SELECT pr.medicine_id |
| | 62 | FROM synergymed.prescription pr |
| | 63 | WHERE pr.client_id = v_client_id AND pr.valid_to >= CURRENT_DATE |
| | 64 | LOOP |
| | 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; |
| | 75 | 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; |
| | 85 | END IF; |
| | 86 | END LOOP; |
| | 87 | |
| | 88 | IF v_problem <> '' THEN |
| | 89 | RAISE EXCEPTION 'Нарачката % има проблеми: %', p_order_id, v_problem; |