Advertisement
Guest User

Untitled

a guest
Jul 13th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. create function sp_patient_problem_create(p_patient_problem_id uuid, p_patient_id uuid, p_patient_visit_id uuid, p_list_json_icd json, p_symptom character varying, p_treatment_plans_rcd character varying, p_treatment_flag boolean, p_recommendation character varying, p_diagnose_result text, p_catastrophe_flag boolean, p_complication_flag boolean, p_dissection_rcd character varying, p_treatment_result_rcd character varying, p_json_object_die json, p_cpoe_placer_order_id uuid, p_icd_free_text description, p_list_json_cpoe_placer_order_exploding json, p_created_by_user_id uuid, p_created_by_department_id uuid) returns character varying
  2.     language plpgsql
  3. as
  4. $$
  5. /*
  6.   DROP FUNCTION sp_patient_problem_create;
  7.   TODO check flag update visit
  8. */
  9. DECLARE
  10.   v_patient_problem_id  UUID;
  11.   v_processing_queue_id UUID;
  12.   v_clinic_room_id      UUID;
  13.  
  14.   v_not_allow_main_icd  CHARACTER VARYING :='H52.0,H52.1,H52.2,H52.4';
  15.   v_err_context         TEXT;
  16. BEGIN
  17.   IF v_not_allow_main_icd NOTNULL AND p_list_json_icd NOTNULL
  18.   THEN
  19.     IF exists(SELECT 1
  20.               FROM json_populate_recordset(NULL :: ICD_REF, p_list_json_icd) AS rec
  21.               WHERE rec.seq_num = 0 AND rec.icd_code = ANY (string_to_array(v_not_allow_main_icd,
  22.                                                                             ',') :: CHARACTER VARYING []))
  23.     THEN
  24.       RAISE EXCEPTION 'MESSAGE.icd_main_not_allow';
  25.     END IF;
  26.   END IF;
  27.  
  28.   SELECT
  29.     processing_queue_id,
  30.     coalesce(clinic_room_id, facility_id)
  31.   INTO v_processing_queue_id, v_clinic_room_id
  32.   FROM patient_visit
  33.   WHERE patient_visit_id = p_patient_visit_id;
  34.  
  35.   v_patient_problem_id = coalesce(p_patient_problem_id, uuid_generate_v4());
  36.   IF exists(SELECT 1
  37.             FROM patient_problem pp
  38.             WHERE pp.patient_visit_id = p_patient_visit_id AND (pp.active_flag = 1 OR pp.active_flag = 0))
  39.   THEN
  40.     UPDATE patient_problem pp
  41.     SET list_json_icd      = p_list_json_icd,
  42.       symptom              = p_symptom,
  43.       treatment_plans_rcd  = p_treatment_plans_rcd,
  44.       treatment_flag       = p_treatment_flag,
  45.       recommendation       = p_recommendation,
  46.       cpoe_placer_order_id = p_cpoe_placer_order_id,
  47.       diagnose_result      = p_diagnose_result,
  48.       icd_free_text        = p_icd_free_text,
  49.       lu_updated           = now() :: DATETIME,
  50.       lu_user_id           = p_created_by_user_id,
  51.       active_flag          = 1
  52.     WHERE pp.patient_visit_id = p_patient_visit_id;
  53.   ELSE
  54.     RAISE LOG 'INSERT new p_patient_problem_id %', v_patient_problem_id;
  55.     INSERT INTO patient_problem (patient_problem_id, patient_id, patient_visit_id, list_json_icd, symptom, treatment_plans_rcd, treatment_flag,
  56.                                  recommendation, cpoe_placer_order_id, created_by_user_id, examination_date, diagnose_result, icd_free_text, created_date_time, active_flag, lu_updated, lu_user_id)
  57.     VALUES
  58.       (v_patient_problem_id, p_patient_id, p_patient_visit_id, p_list_json_icd, p_symptom, p_treatment_plans_rcd,
  59.                              p_treatment_flag, p_recommendation, p_cpoe_placer_order_id, p_created_by_user_id, now(),
  60.        p_diagnose_result, p_icd_free_text, now(), 1, now(), p_created_by_user_id)
  61.     ON CONFLICT (patient_visit_id)
  62.       DO UPDATE SET active_flag = 1;
  63.   END IF;
  64.  
  65.   --update cpoe status
  66.   UPDATE cpoe_placer_order cpo
  67.   SET lu_user_id                 = p_created_by_user_id,
  68.     lu_updated                   = now(),
  69.     cpoe_placer_order_status_rcd = 'COMPLETED',
  70.     administration_date_time     = now(),
  71.     administration_user_id       = p_created_by_user_id,
  72.     provider_id                  = p_created_by_department_id
  73.   WHERE cpo.active_flag = 1 AND cpo.cpoe_placer_order_id = p_cpoe_placer_order_id;
  74.  
  75.   --update done examination not allow cancel charge detail
  76.   UPDATE charge_detail
  77.   SET lu_updated              = now(),
  78.     lu_user_id                = p_created_by_user_id,
  79.     allow_cancel_flag         = FALSE,
  80.     remain_quantity           = 0,
  81.     executed_from_area_id     = v_clinic_room_id,
  82.     executed_by_employee_id   = p_created_by_user_id,
  83.     executed_by_department_id = p_created_by_department_id,
  84.     executed_datetime         = now(),
  85.     completed_datetime        = now()
  86.   WHERE active_flag = 1 AND cpoe_placer_order_id = p_cpoe_placer_order_id;
  87.   /*
  88.   --revenue summary
  89.   SELECT sp_charge_detail_summary_day_cru(p_cpoe_placer_order_id, --p_cpoe_placer_order_id    UUID,
  90.                                           1, --p_quantity QUANTITY,
  91.                                           p_created_by_user_id, --p_executed_by_employee_id UUID,
  92.                                           p_created_by_department_id, --p_executed_by_department_id UUID,
  93.                                           p_created_by_user_id--p_created_by_user_id      UUID)
  94.   )
  95.   INTO v_result;
  96.   IF v_result <> ''
  97.   THEN
  98.     RAISE EXCEPTION '%', v_result;
  99.   END IF;
  100.   */
  101.   --update cpoe exploding
  102.   IF p_list_json_cpoe_placer_order_exploding NOTNULL
  103.   THEN
  104.     UPDATE cpoe_placer_order_exploding cpoe
  105.     SET lu_user_id    = p_created_by_user_id, lu_updated = now(),
  106.       supply_quantity = rec.supply_quantity
  107.     FROM json_populate_recordset(NULL :: CPOE_PLACER_ORDER_EXPLODING, p_list_json_cpoe_placer_order_exploding) AS rec
  108.     WHERE cpoe.active_flag = 1 AND cpoe.default_booking = FALSE AND
  109.           cpoe.cpoe_placer_order_exploding_id = rec.cpoe_placer_order_exploding_id;
  110.   END IF;
  111.   --update cancel visit
  112.   UPDATE patient_visit
  113.   SET allow_cancel_flag = FALSE, allow_cancel_service_flag = FALSE, lu_updated = now(),
  114.     lu_user_id          = p_created_by_user_id
  115.   WHERE patient_visit_id = p_patient_visit_id;
  116.  
  117.   UPDATE patient_visit_history
  118.   SET allow_cancel_flag = FALSE, allow_cancel_service_flag = FALSE, lu_updated = now(),
  119.     lu_user_id          = p_created_by_user_id
  120.   WHERE patient_visit_id = p_patient_visit_id;
  121.  
  122.   UPDATE processing_queue
  123.   SET
  124.     -- active_flag = 3,
  125.     lu_updated = now(),
  126.     lu_user_id = p_created_by_user_id
  127.   WHERE processing_queue_id = v_processing_queue_id;
  128.  
  129.   --patient die
  130.   /*IF p_json_object_die NOTNULLsp_charge_type_ref_get_list_dropdown
  131.   THEN
  132.     SELECT sp_patient_die_cru(p_patient_visit_id, p_patient_id, p_json_object_die, p_created_by_user_id)
  133.     INTO v_result;
  134.   END IF;
  135.   --patient visit
  136.   UPDATE patient_visit
  137.   SET catastrophe_flag    = p_catastrophe_flag,
  138.     complication_flag     = p_complication_flag,
  139.     dissection_rcd        = CASE WHEN p_dissection_rcd NOTNULL AND p_dissection_rcd <> ''
  140.       THEN p_dissection_rcd
  141.                             ELSE dissection_rcd END,
  142.     treatment_result_rcd = CASE WHEN p_treatment_result_rcd NOTNULL AND p_treatment_result_rcd <> ''
  143.       THEN p_treatment_result_rcd
  144.                             ELSE treatment_result_rcd END,
  145.     lu_updated            = now(),
  146.     lu_user_id            = p_created_by_user_id
  147.   WHERE patient_visit_id = p_patient_visit_id;*/
  148.  
  149.   RETURN '';
  150.   EXCEPTION WHEN OTHERS
  151.   THEN
  152.     BEGIN
  153.       GET STACKED DIAGNOSTICS v_err_context = PG_EXCEPTION_CONTEXT;
  154.       RAISE LOG '##### [sp_patient_problem_create] Error Name: %', SQLERRM;
  155.       RAISE LOG '##### [sp_patient_problem_create] Error State: %', SQLSTATE;
  156.       RAISE LOG '##### [sp_patient_problem_create] Error Context: %', v_err_context;
  157.       RETURN SQLERRM;
  158.     END;
  159. END;
  160. $$;
  161.  
  162. alter function sp_patient_problem_create(uuid, uuid, uuid, json, varchar, varchar, boolean, varchar, text, boolean, boolean, varchar, varchar, json, uuid, description, json, uuid, uuid) owner to postgres;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement