Add pemeriksaan mapping for MCU patient

This commit is contained in:
sas.fajri
2026-05-06 09:58:36 +07:00
parent 8145e088b1
commit c76d4a6477
2 changed files with 46 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
ALTER TABLE cpone_dashboard.mcu_patient
ADD COLUMN Mcu_PatientPemeriksaan LONGTEXT NULL
AFTER Mcu_PatientOrders;

View File

@@ -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),