From c76d4a64771190b98e338011e695ddf73816f638 Mon Sep 17 00:00:00 2001 From: "sas.fajri" Date: Wed, 6 May 2026 09:58:36 +0700 Subject: [PATCH] Add pemeriksaan mapping for MCU patient --- ...5-06_alter_mcu_patient_add_pemeriksaan.sql | 3 ++ ...ate_sp_upsert_mcu_patient_by_mgm_mcuid.sql | 43 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 scripts/sql/2026-05-06_alter_mcu_patient_add_pemeriksaan.sql diff --git a/scripts/sql/2026-05-06_alter_mcu_patient_add_pemeriksaan.sql b/scripts/sql/2026-05-06_alter_mcu_patient_add_pemeriksaan.sql new file mode 100644 index 0000000..3d377ac --- /dev/null +++ b/scripts/sql/2026-05-06_alter_mcu_patient_add_pemeriksaan.sql @@ -0,0 +1,3 @@ +ALTER TABLE cpone_dashboard.mcu_patient + ADD COLUMN Mcu_PatientPemeriksaan LONGTEXT NULL + AFTER Mcu_PatientOrders; diff --git a/scripts/sql/2026-05-06_create_sp_upsert_mcu_patient_by_mgm_mcuid.sql b/scripts/sql/2026-05-06_create_sp_upsert_mcu_patient_by_mgm_mcuid.sql index 9ec187a..f897275 100644 --- a/scripts/sql/2026-05-06_create_sp_upsert_mcu_patient_by_mgm_mcuid.sql +++ b/scripts/sql/2026-05-06_create_sp_upsert_mcu_patient_by_mgm_mcuid.sql @@ -13,6 +13,7 @@ BEGIN Mcu_PatientDivision, Mcu_PatientPosisi, Mcu_PatientOrders, + Mcu_PatientPemeriksaan, Mcu_PatientIsRegistered, Mcu_PatientOrderID, Mcu_PatientIsActive, @@ -29,6 +30,47 @@ BEGIN pp.Mcu_PreregisterPatientsDivisi, pp.Mcu_PreregisterPatientsPosisi, pp.Mcu_PreregisterPatientsOrders, + ( + SELECT GROUP_CONCAT(x.pemeriksaan_name ORDER BY x.seq SEPARATOR ', ') + FROM ( + SELECT + seqs.seq, + CASE + WHEN LEFT(seqs.order_code, 2) IN ('PN', 'PR') + THEN tp.T_PacketName + ELSE tt.T_TestName + END AS pemeriksaan_name + FROM ( + SELECT + nums.seq, + TRIM( + SUBSTRING_INDEX( + SUBSTRING_INDEX(REPLACE(IFNULL(pp.Mcu_PreregisterPatientsOrders, ''), ' ', ''), ',', nums.seq), + ',', + -1 + ) + ) AS order_code + FROM ( + SELECT ones.n + tens.n * 10 + 1 AS seq + FROM + (SELECT 0 AS n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) ones + CROSS JOIN + (SELECT 0 AS n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) tens + ) nums + WHERE nums.seq <= 1 + LENGTH(REPLACE(IFNULL(pp.Mcu_PreregisterPatientsOrders, ''), ' ', '')) - LENGTH(REPLACE(REPLACE(IFNULL(pp.Mcu_PreregisterPatientsOrders, ''), ' ', ''), ',', '')) + ) seqs + LEFT JOIN cpone.t_packet tp + ON LEFT(seqs.order_code, 2) IN ('PN', 'PR') + AND tp.T_PacketSasCode = seqs.order_code + AND tp.T_PacketIsActive = 'Y' + LEFT JOIN cpone.t_test tt + ON LEFT(seqs.order_code, 2) NOT IN ('PN', 'PR') + AND tt.T_TestSasCode = seqs.order_code + AND tt.T_TestIsActive = 'Y' + WHERE seqs.order_code <> '' + ) x + WHERE x.pemeriksaan_name IS NOT NULL + ) AS Mcu_PatientPemeriksaan, pp.Mcu_PreregisterPatientsIsRegistered, CASE WHEN pp.Mcu_PreregisterPatientsIsRegistered = 'Y' @@ -50,6 +92,7 @@ BEGIN Mcu_PatientDivision = VALUES(Mcu_PatientDivision), Mcu_PatientPosisi = VALUES(Mcu_PatientPosisi), Mcu_PatientOrders = VALUES(Mcu_PatientOrders), + Mcu_PatientPemeriksaan = VALUES(Mcu_PatientPemeriksaan), Mcu_PatientIsRegistered = VALUES(Mcu_PatientIsRegistered), Mcu_PatientOrderID = VALUES(Mcu_PatientOrderID), Mcu_PatientIsActive = VALUES(Mcu_PatientIsActive),