Add MCU patient packet sync and indexes
This commit is contained in:
@@ -55,6 +55,57 @@ BEGIN
|
||||
Mcu_PatientIsActive = VALUES(Mcu_PatientIsActive),
|
||||
Mcu_PatientSyncedAt = NOW();
|
||||
|
||||
DELETE FROM cpone_dashboard.mcu_patient_packet
|
||||
WHERE Mcu_PatientPacketPreregisterID = p_preregister_id;
|
||||
|
||||
INSERT INTO cpone_dashboard.mcu_patient_packet (
|
||||
Mcu_PatientPacketMcu_PatientID,
|
||||
Mcu_PatientPacketPreregisterID,
|
||||
Mcu_PatientPacketCode,
|
||||
Mcu_PatientPacketName
|
||||
)
|
||||
SELECT DISTINCT
|
||||
mp.Mcu_PatientID,
|
||||
pp.Mcu_PreregisterPatientsID,
|
||||
seqs.order_code AS Mcu_PatientPacketCode,
|
||||
tp.T_PacketName AS Mcu_PatientPacketName
|
||||
FROM cpone.mcu_preregister_patients pp
|
||||
INNER JOIN cpone_dashboard.mcu_patient mp
|
||||
ON mp.Mcu_PatientPreregisterID = pp.Mcu_PreregisterPatientsID
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
src.Mcu_PreregisterPatientsID,
|
||||
TRIM(
|
||||
SUBSTRING_INDEX(
|
||||
SUBSTRING_INDEX(src.clean_orders, ',', nums.seq),
|
||||
',',
|
||||
-1
|
||||
)
|
||||
) AS order_code
|
||||
FROM (
|
||||
SELECT
|
||||
p.Mcu_PreregisterPatientsID,
|
||||
REPLACE(IFNULL(p.Mcu_PreregisterPatientsOrders, ''), ' ', '') AS clean_orders
|
||||
FROM cpone.mcu_preregister_patients p
|
||||
WHERE p.Mcu_PreregisterPatientsID = p_preregister_id
|
||||
) src
|
||||
INNER JOIN (
|
||||
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
|
||||
ON nums.seq <= 1 + LENGTH(src.clean_orders) - LENGTH(REPLACE(src.clean_orders, ',', ''))
|
||||
) seqs
|
||||
ON seqs.Mcu_PreregisterPatientsID = pp.Mcu_PreregisterPatientsID
|
||||
INNER JOIN cpone.t_packet tp
|
||||
ON tp.T_PacketSasCode = seqs.order_code
|
||||
AND tp.T_PacketIsActive = 'Y'
|
||||
WHERE pp.Mcu_PreregisterPatientsID = p_preregister_id
|
||||
AND LEFT(seqs.order_code, 2) IN ('PN', 'PR')
|
||||
AND seqs.order_code <> '';
|
||||
|
||||
SELECT ROW_COUNT() AS affected_rows;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
CREATE TABLE IF NOT EXISTS cpone_dashboard.mcu_patient_packet (
|
||||
Mcu_PatientPacketID INT AUTO_INCREMENT PRIMARY KEY,
|
||||
Mcu_PatientPacketMcu_PatientID INT NOT NULL,
|
||||
Mcu_PatientPacketPreregisterID INT NOT NULL,
|
||||
Mcu_PatientPacketCode VARCHAR(50) NOT NULL,
|
||||
Mcu_PatientPacketName VARCHAR(255) NOT NULL,
|
||||
Mcu_PatientPacketCreatedAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
Mcu_PatientPacketUpdatedAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uq_mcu_patient_packet_unique (
|
||||
Mcu_PatientPacketMcu_PatientID,
|
||||
Mcu_PatientPacketPreregisterID,
|
||||
Mcu_PatientPacketCode
|
||||
),
|
||||
KEY idx_mcu_patient_packet_patient_id (Mcu_PatientPacketMcu_PatientID),
|
||||
KEY idx_mcu_patient_packet_preregister_id (Mcu_PatientPacketPreregisterID),
|
||||
KEY idx_mcu_patient_packet_code (Mcu_PatientPacketCode),
|
||||
KEY idx_mcu_patient_packet_name (Mcu_PatientPacketName)
|
||||
);
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM information_schema.statistics
|
||||
WHERE table_schema = 'cpone_dashboard'
|
||||
AND table_name = 'mcu_patient'
|
||||
AND index_name = 'Mcu_PatientDepartment'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE cpone_dashboard.mcu_patient ADD INDEX `Mcu_PatientDepartment` (`Mcu_PatientDepartment`)'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM information_schema.statistics
|
||||
WHERE table_schema = 'cpone_dashboard'
|
||||
AND table_name = 'mcu_patient'
|
||||
AND index_name = 'Mcu_PatientGender'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE cpone_dashboard.mcu_patient ADD INDEX `Mcu_PatientGender` (`Mcu_PatientGender`)'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM information_schema.statistics
|
||||
WHERE table_schema = 'cpone_dashboard'
|
||||
AND table_name = 'mcu_patient'
|
||||
AND index_name = 'Mcu_PatientNIP'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE cpone_dashboard.mcu_patient ADD INDEX `Mcu_PatientNIP` (`Mcu_PatientNIP`)'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM information_schema.statistics
|
||||
WHERE table_schema = 'cpone_dashboard'
|
||||
AND table_name = 'mcu_patient'
|
||||
AND index_name = 'Mcu_PatientAge'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE cpone_dashboard.mcu_patient ADD INDEX `Mcu_PatientAge` (`Mcu_PatientAge`)'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM information_schema.statistics
|
||||
WHERE table_schema = 'cpone_dashboard'
|
||||
AND table_name = 'mcu_patient'
|
||||
AND index_name = 'Mcu_PatientDivision'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE cpone_dashboard.mcu_patient ADD INDEX `Mcu_PatientDivision` (`Mcu_PatientDivision`)'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM information_schema.statistics
|
||||
WHERE table_schema = 'cpone_dashboard'
|
||||
AND table_name = 'mcu_patient'
|
||||
AND index_name = 'Mcu_PatientPosisi'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE cpone_dashboard.mcu_patient ADD INDEX `Mcu_PatientPosisi` (`Mcu_PatientPosisi`)'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM information_schema.statistics
|
||||
WHERE table_schema = 'cpone_dashboard'
|
||||
AND table_name = 'mcu_patient'
|
||||
AND index_name = 'Mcu_PatientIsRegistered'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE cpone_dashboard.mcu_patient ADD INDEX `Mcu_PatientIsRegistered` (`Mcu_PatientIsRegistered`)'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
@@ -98,6 +98,61 @@ BEGIN
|
||||
Mcu_PatientIsActive = VALUES(Mcu_PatientIsActive),
|
||||
Mcu_PatientSyncedAt = NOW();
|
||||
|
||||
DELETE ppk
|
||||
FROM cpone_dashboard.mcu_patient_packet ppk
|
||||
INNER JOIN cpone_dashboard.mcu_patient mp
|
||||
ON mp.Mcu_PatientID = ppk.Mcu_PatientPacketMcu_PatientID
|
||||
WHERE mp.Mcu_PatientMcuID = p_mgm_mcuid;
|
||||
|
||||
INSERT INTO cpone_dashboard.mcu_patient_packet (
|
||||
Mcu_PatientPacketMcu_PatientID,
|
||||
Mcu_PatientPacketPreregisterID,
|
||||
Mcu_PatientPacketCode,
|
||||
Mcu_PatientPacketName
|
||||
)
|
||||
SELECT DISTINCT
|
||||
mp.Mcu_PatientID,
|
||||
pp.Mcu_PreregisterPatientsID,
|
||||
seqs.order_code AS Mcu_PatientPacketCode,
|
||||
tp.T_PacketName AS Mcu_PatientPacketName
|
||||
FROM cpone.mcu_preregister_patients pp
|
||||
INNER JOIN cpone_dashboard.mcu_patient mp
|
||||
ON mp.Mcu_PatientPreregisterID = pp.Mcu_PreregisterPatientsID
|
||||
AND mp.Mcu_PatientMcuID = pp.Mcu_PreregisterPatientsMgm_McuID
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
src.Mcu_PreregisterPatientsID,
|
||||
TRIM(
|
||||
SUBSTRING_INDEX(
|
||||
SUBSTRING_INDEX(src.clean_orders, ',', nums.seq),
|
||||
',',
|
||||
-1
|
||||
)
|
||||
) AS order_code
|
||||
FROM (
|
||||
SELECT
|
||||
p.Mcu_PreregisterPatientsID,
|
||||
REPLACE(IFNULL(p.Mcu_PreregisterPatientsOrders, ''), ' ', '') AS clean_orders
|
||||
FROM cpone.mcu_preregister_patients p
|
||||
WHERE p.Mcu_PreregisterPatientsMgm_McuID = p_mgm_mcuid
|
||||
) src
|
||||
INNER JOIN (
|
||||
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
|
||||
ON nums.seq <= 1 + LENGTH(src.clean_orders) - LENGTH(REPLACE(src.clean_orders, ',', ''))
|
||||
) seqs
|
||||
ON seqs.Mcu_PreregisterPatientsID = pp.Mcu_PreregisterPatientsID
|
||||
INNER JOIN cpone.t_packet tp
|
||||
ON tp.T_PacketSasCode = seqs.order_code
|
||||
AND tp.T_PacketIsActive = 'Y'
|
||||
WHERE pp.Mcu_PreregisterPatientsMgm_McuID = p_mgm_mcuid
|
||||
AND LEFT(seqs.order_code, 2) IN ('PN', 'PR')
|
||||
AND seqs.order_code <> '';
|
||||
|
||||
SELECT ROW_COUNT() AS affected_rows;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
Reference in New Issue
Block a user