Update MCU sync, dummy generator, and kelainan trigger

This commit is contained in:
sas.fajri
2026-05-06 22:01:57 +07:00
parent 3d50bcf7f1
commit 3cde1b3cdb
6 changed files with 575 additions and 98 deletions

View File

@@ -790,6 +790,11 @@ BEGIN
DECLARE v_lab_number VARCHAR(25);
DECLARE v_seq INT;
DECLARE v_effective_date DATE;
DECLARE v_lab_exists INT DEFAULT 0;
DECLARE v_checkin_time TIME;
DECLARE v_checkout_time TIME;
DECLARE v_total_station INT DEFAULT 0;
DECLARE v_done_station INT DEFAULT 0;
DECLARE cur_target CURSOR FOR
SELECT
@@ -821,6 +826,11 @@ BEGIN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Gunakan preregister_id, atau mcu_id + date';
END IF;
SELECT IFNULL(MAX(CAST(RIGHT(T_OrderHeaderLabNumber, 4) AS UNSIGNED)), 0) + 1
INTO v_seq
FROM cpone.t_orderheader
WHERE T_OrderHeaderLabNumber LIKE CONCAT('X', DATE_FORMAT(NOW(), '%y%m%d'), '%');
OPEN cur_target;
read_loop: LOOP
FETCH cur_target INTO v_preregister_id, v_patient_id, v_gender, v_corporate_id, v_mcu_id, v_orders;
@@ -845,75 +855,102 @@ BEGIN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Tanggal MCU tidak ditemukan di mcu_preregister_date aktif';
END IF;
SELECT oh.T_OrderHeaderID
INTO v_source_order_id
FROM cpone.t_orderheader oh
JOIN cpone.mcu_preregister_patients p2
ON p2.Mcu_PreregisterPatientsT_OrderHeaderID = oh.T_OrderHeaderID
AND p2.Mcu_PreregisterPatientsIsActive = 'Y'
WHERE oh.T_OrderHeaderIsActive = 'Y'
AND p2.Mcu_PreregisterPatientsGender = v_gender
AND EXISTS (
SELECT 1
FROM cpone.so_resultentry r
JOIN cpone.so_resultentrydetail rd
ON rd.So_ResultEntryDetailSo_ResultEntryID = r.So_ResultEntryID
AND rd.So_ResultEntryDetailIsActive = 'Y'
WHERE r.So_ResultEntryT_OrderHeaderID = oh.T_OrderHeaderID
AND r.So_ResultEntryIsActive = 'Y'
AND r.So_ResultEntryValidation1 = 'Y'
AND r.So_ResultEntryStatus = 'VAL'
)
AND EXISTS (
SELECT 1
FROM cpone.t_orderdetail odr
WHERE odr.T_OrderDetailT_OrderHeaderID = oh.T_OrderHeaderID
AND odr.T_OrderDetailIsActive = 'Y'
AND IFNULL(TRIM(odr.T_OrderDetailResult), '') <> ''
)
AND EXISTS (
SELECT 1
FROM cpone.t_orderdetail odf
JOIN cpone.so_resultentry rf
ON rf.So_ResultEntryT_OrderHeaderID = odf.T_OrderDetailT_OrderHeaderID
AND rf.So_ResultEntryT_OrderDetailID = odf.T_OrderDetailID
AND rf.So_ResultEntryIsActive = 'Y'
AND rf.So_ResultEntryValidation1 = 'Y'
AND rf.So_ResultEntryStatus = 'VAL'
JOIN cpone.so_resultentry_fisik_umum rfu
ON rfu.So_ResultEntryFisikUmumSo_ResultEntryID = rf.So_ResultEntryID
AND rfu.So_ResultEntryFisikUmumIsActive = 'Y'
WHERE odf.T_OrderDetailT_OrderHeaderID = oh.T_OrderHeaderID
AND odf.T_OrderDetailIsActive = 'Y'
AND odf.T_OrderDetailT_TestID = 2562
)
AND (
(v_orders LIKE '%PN%' AND EXISTS (
SELECT IFNULL((
SELECT oh.T_OrderHeaderID
FROM cpone.t_orderheader oh
JOIN cpone.mcu_preregister_patients p2
ON p2.Mcu_PreregisterPatientsT_OrderHeaderID = oh.T_OrderHeaderID
AND p2.Mcu_PreregisterPatientsIsActive = 'Y'
WHERE oh.T_OrderHeaderIsActive = 'Y'
AND p2.Mcu_PreregisterPatientsGender = v_gender
AND EXISTS (
SELECT 1
FROM cpone.t_orderdetailorder odo
WHERE odo.T_OrderDetailOrderT_OrderHeaderID = oh.T_OrderHeaderID
AND odo.T_OrderDetailOrderIsPacket = 'Y'
AND odo.T_OrderDetailOrderIsActive = 'Y'
))
OR v_orders NOT LIKE '%PN%'
)
ORDER BY oh.T_OrderHeaderDate DESC
LIMIT 1;
FROM cpone.so_resultentry r
JOIN cpone.so_resultentrydetail rd
ON rd.So_ResultEntryDetailSo_ResultEntryID = r.So_ResultEntryID
AND rd.So_ResultEntryDetailIsActive = 'Y'
WHERE r.So_ResultEntryT_OrderHeaderID = oh.T_OrderHeaderID
AND r.So_ResultEntryIsActive = 'Y'
AND r.So_ResultEntryValidation1 = 'Y'
AND r.So_ResultEntryStatus = 'VAL'
)
AND EXISTS (
SELECT 1
FROM cpone.t_orderdetail odr
WHERE odr.T_OrderDetailT_OrderHeaderID = oh.T_OrderHeaderID
AND odr.T_OrderDetailIsActive = 'Y'
AND IFNULL(TRIM(odr.T_OrderDetailResult), '') <> ''
)
AND (
(v_orders LIKE '%PN%' AND EXISTS (
SELECT 1
FROM cpone.t_orderdetailorder odo
WHERE odo.T_OrderDetailOrderT_OrderHeaderID = oh.T_OrderHeaderID
AND odo.T_OrderDetailOrderIsPacket = 'Y'
AND odo.T_OrderDetailOrderIsActive = 'Y'
))
OR EXISTS (
SELECT 1
FROM cpone.t_orderdetail odx
WHERE odx.T_OrderDetailT_OrderHeaderID = oh.T_OrderHeaderID
AND odx.T_OrderDetailIsActive = 'Y'
AND FIND_IN_SET(TRIM(odx.T_OrderDetailT_TestCode), REPLACE(v_orders, ' ', '')) > 0
)
OR IFNULL(TRIM(v_orders), '') = ''
)
ORDER BY oh.T_OrderHeaderDate DESC
LIMIT 1
), 0)
INTO v_source_order_id;
IF IFNULL(v_source_order_id, 0) = 0 THEN
SELECT IFNULL((
SELECT oh.T_OrderHeaderID
FROM cpone.t_orderheader oh
JOIN cpone.mcu_preregister_patients p2
ON p2.Mcu_PreregisterPatientsT_OrderHeaderID = oh.T_OrderHeaderID
AND p2.Mcu_PreregisterPatientsIsActive = 'Y'
WHERE oh.T_OrderHeaderIsActive = 'Y'
AND p2.Mcu_PreregisterPatientsGender = v_gender
AND EXISTS (
SELECT 1
FROM cpone.t_orderdetail odr
WHERE odr.T_OrderDetailT_OrderHeaderID = oh.T_OrderHeaderID
AND odr.T_OrderDetailIsActive = 'Y'
AND IFNULL(TRIM(odr.T_OrderDetailResult), '') <> ''
)
ORDER BY oh.T_OrderHeaderDate DESC
LIMIT 1
), 0)
INTO v_source_order_id;
END IF;
IF IFNULL(v_source_order_id, 0) = 0 THEN
ITERATE read_loop;
END IF;
SELECT IFNULL(MAX(CAST(RIGHT(T_OrderHeaderLabNumber, 4) AS UNSIGNED)), 0) + 1
INTO v_seq
FROM cpone.t_orderheader
WHERE T_OrderHeaderLabNumber LIKE CONCAT('X', DATE_FORMAT(NOW(), '%y%m%d'), '%');
SET v_lab_number = CONCAT(
'X',
DATE_FORMAT(NOW(), '%y%m%d'),
LPAD(v_seq, 4, '0')
);
SELECT COUNT(1)
INTO v_lab_exists
FROM cpone.t_orderheader
WHERE T_OrderHeaderLabNumber = v_lab_number;
WHILE v_lab_exists > 0 DO
SET v_seq = v_seq + 1;
SET v_lab_number = CONCAT(
'X',
DATE_FORMAT(NOW(), '%y%m%d'),
LPAD(v_seq, 4, '0')
);
SELECT COUNT(1)
INTO v_lab_exists
FROM cpone.t_orderheader
WHERE T_OrderHeaderLabNumber = v_lab_number;
END WHILE;
SET v_seq = v_seq + 1;
INSERT INTO cpone.t_orderheader (
T_OrderHeaderM_BranchID,
@@ -994,7 +1031,7 @@ BEGIN
v_mcu_id,
os.T_OrderSampleT_SampleStationID,
ss.T_SampleStationName,
'LAB',
'lab',
os.T_OrderSampleSamplingDate,
CONCAT(os.T_OrderSampleSamplingDate, ' ', IFNULL(os.T_OrderSampleSamplingTime, '00:00:00')),
CONCAT(os.T_OrderSampleReceiveDate, ' ', IFNULL(os.T_OrderSampleReceiveTime, '00:00:00')),
@@ -1020,6 +1057,83 @@ BEGIN
Mcu_StationProgressProcessAt = VALUES(Mcu_StationProgressProcessAt),
Mcu_StationProgressDoneAt = VALUES(Mcu_StationProgressDoneAt),
Mcu_StationProgressSyncedAt = VALUES(Mcu_StationProgressSyncedAt);
SELECT TIME(oh.T_OrderHeaderDate)
INTO v_checkin_time
FROM cpone.t_orderheader oh
WHERE oh.T_OrderHeaderID = v_new_order_id
LIMIT 1;
IF v_checkin_time IS NULL THEN
SET v_checkin_time = '07:30:00';
END IF;
SELECT COUNT(*)
INTO v_total_station
FROM cpone.t_ordersample os
WHERE os.T_OrderSampleT_OrderHeaderID = v_new_order_id
AND os.T_OrderSampleIsActive = 'Y';
SELECT COUNT(*)
INTO v_done_station
FROM cpone.t_ordersample os
JOIN cpone.t_samplingso sso
ON sso.T_SamplingSoT_OrderHeaderID = os.T_OrderSampleT_OrderHeaderID
AND sso.T_SamplingSoT_SampleStationID = os.T_OrderSampleT_SampleStationID
AND sso.T_SamplingSoIsActive = 'Y'
WHERE os.T_OrderSampleT_OrderHeaderID = v_new_order_id
AND os.T_OrderSampleIsActive = 'Y'
AND sso.T_SamplingSoDoneDate IS NOT NULL
AND sso.T_SamplingSoDoneDate <> '0000-00-00'
AND IFNULL(sso.T_SamplingSoDoneTime, '') <> '';
IF v_total_station > 0 AND v_done_station = v_total_station THEN
SELECT MAX(sso.T_SamplingSoDoneTime)
INTO v_checkout_time
FROM cpone.t_samplingso sso
WHERE sso.T_SamplingSoT_OrderHeaderID = v_new_order_id
AND sso.T_SamplingSoIsActive = 'Y'
AND sso.T_SamplingSoDoneDate IS NOT NULL
AND sso.T_SamplingSoDoneDate <> '0000-00-00'
AND IFNULL(sso.T_SamplingSoDoneTime, '') <> '';
ELSE
SET v_checkout_time = NULL;
END IF;
INSERT INTO cpone_dashboard.mcu_checkinout (
Mcu_CheckinoutMcuID,
Mcu_CheckinoutPreregisterID,
Mcu_CheckinoutOrderID,
Mcu_CheckinoutDate,
Mcu_CheckinoutInTime,
Mcu_CheckinoutOutTime,
Mcu_CheckinoutOutUserID,
Mcu_CheckinoutIsActive,
Mcu_CheckinoutSyncedAt
)
VALUES (
v_mcu_id,
v_preregister_id,
v_new_order_id,
v_effective_date,
v_checkin_time,
v_checkout_time,
CASE WHEN v_checkout_time IS NULL THEN 0 ELSE p_user_id END,
'Y',
NOW()
)
ON DUPLICATE KEY UPDATE
Mcu_CheckinoutMcuID = VALUES(Mcu_CheckinoutMcuID),
Mcu_CheckinoutOrderID = VALUES(Mcu_CheckinoutOrderID),
Mcu_CheckinoutOutTime = CASE
WHEN VALUES(Mcu_CheckinoutOutTime) IS NULL THEN Mcu_CheckinoutOutTime
ELSE VALUES(Mcu_CheckinoutOutTime)
END,
Mcu_CheckinoutOutUserID = CASE
WHEN VALUES(Mcu_CheckinoutOutTime) IS NULL THEN Mcu_CheckinoutOutUserID
ELSE VALUES(Mcu_CheckinoutOutUserID)
END,
Mcu_CheckinoutSyncedAt = NOW();
END LOOP;
CLOSE cur_target;

View File

@@ -0,0 +1,204 @@
-- Auto-maintain cpone_corporate.kelainan_summary from cpone_corporate.kelainan_details
-- 1) deduplicate existing rows before adding unique key
DELETE ks1
FROM cpone_corporate.kelainan_summary ks1
JOIN cpone_corporate.kelainan_summary ks2
ON ks1.Mcu_KelainanMgm_McuID = ks2.Mcu_KelainanMgm_McuID
AND ks1.Mcu_KelainanID = ks2.Mcu_KelainanID
AND ks1.created_at > ks2.created_at;
DELETE dks1
FROM cpone_dashboard.kelainan_summary dks1
JOIN cpone_dashboard.kelainan_summary dks2
ON dks1.Mgm_McuID = dks2.Mgm_McuID
AND dks1.Mcu_KelainanID = dks2.Mcu_KelainanID
AND dks1.created_at > dks2.created_at;
DROP TRIGGER IF EXISTS cpone_corporate.trg_kelainan_details_ai_sync_summary;
DROP TRIGGER IF EXISTS cpone_corporate.trg_kelainan_details_au_sync_summary;
DROP TRIGGER IF EXISTS cpone_corporate.trg_kelainan_details_ad_sync_summary;
DELIMITER $$
CREATE TRIGGER cpone_corporate.trg_kelainan_details_ai_sync_summary
AFTER INSERT ON cpone_corporate.kelainan_details
FOR EACH ROW
BEGIN
DECLARE v_mgm_mcuid INT;
SELECT oh.T_OrderHeaderMgm_McuID
INTO v_mgm_mcuid
FROM cpone.t_orderheader oh
WHERE oh.T_OrderHeaderID = NEW.T_OrderHeaderID
AND oh.T_OrderHeaderIsActive = 'Y'
LIMIT 1;
IF v_mgm_mcuid IS NOT NULL
AND NEW.Mcu_KelainanID IS NOT NULL
AND NEW.Mcu_KelainanName IS NOT NULL
AND NEW.Mcu_KelainanName <> '' THEN
INSERT INTO cpone_corporate.kelainan_summary (
Mcu_KelainanID,
Mcu_KelainanMgm_McuID,
Mcu_KelainanName,
created_at
)
SELECT NEW.Mcu_KelainanID, v_mgm_mcuid, NEW.Mcu_KelainanName, NOW()
FROM DUAL
WHERE NOT EXISTS (
SELECT 1
FROM cpone_corporate.kelainan_summary ks
WHERE ks.Mcu_KelainanMgm_McuID = v_mgm_mcuid
AND ks.Mcu_KelainanID = NEW.Mcu_KelainanID
);
UPDATE cpone_corporate.kelainan_summary
SET Mcu_KelainanName = NEW.Mcu_KelainanName
WHERE Mcu_KelainanMgm_McuID = v_mgm_mcuid
AND Mcu_KelainanID = NEW.Mcu_KelainanID;
INSERT INTO cpone_dashboard.kelainan_summary (
Mcu_KelainanID,
Mcu_KelainanMgm_McuID,
Mcu_KelainanName,
created_at,
Mgm_McuID
)
SELECT NEW.Mcu_KelainanID, v_mgm_mcuid, NEW.Mcu_KelainanName, NOW(), v_mgm_mcuid
FROM DUAL
WHERE NOT EXISTS (
SELECT 1
FROM cpone_dashboard.kelainan_summary dks
WHERE dks.Mgm_McuID = v_mgm_mcuid
AND dks.Mcu_KelainanID = NEW.Mcu_KelainanID
);
UPDATE cpone_dashboard.kelainan_summary
SET Mcu_KelainanName = NEW.Mcu_KelainanName,
Mcu_KelainanMgm_McuID = v_mgm_mcuid
WHERE Mgm_McuID = v_mgm_mcuid
AND Mcu_KelainanID = NEW.Mcu_KelainanID;
END IF;
END$$
CREATE TRIGGER cpone_corporate.trg_kelainan_details_au_sync_summary
AFTER UPDATE ON cpone_corporate.kelainan_details
FOR EACH ROW
BEGIN
DECLARE v_mgm_old INT;
DECLARE v_mgm_new INT;
SELECT oh.T_OrderHeaderMgm_McuID
INTO v_mgm_old
FROM cpone.t_orderheader oh
WHERE oh.T_OrderHeaderID = OLD.T_OrderHeaderID
AND oh.T_OrderHeaderIsActive = 'Y'
LIMIT 1;
SELECT oh.T_OrderHeaderMgm_McuID
INTO v_mgm_new
FROM cpone.t_orderheader oh
WHERE oh.T_OrderHeaderID = NEW.T_OrderHeaderID
AND oh.T_OrderHeaderIsActive = 'Y'
LIMIT 1;
IF v_mgm_old IS NOT NULL AND OLD.Mcu_KelainanID IS NOT NULL THEN
IF NOT EXISTS (
SELECT 1
FROM cpone_corporate.kelainan_details kd
JOIN cpone.t_orderheader oh ON oh.T_OrderHeaderID = kd.T_OrderHeaderID
WHERE oh.T_OrderHeaderMgm_McuID = v_mgm_old
AND oh.T_OrderHeaderIsActive = 'Y'
AND kd.Mcu_KelainanID = OLD.Mcu_KelainanID
) THEN
DELETE FROM cpone_corporate.kelainan_summary
WHERE Mcu_KelainanMgm_McuID = v_mgm_old
AND Mcu_KelainanID = OLD.Mcu_KelainanID;
DELETE FROM cpone_dashboard.kelainan_summary
WHERE Mgm_McuID = v_mgm_old
AND Mcu_KelainanID = OLD.Mcu_KelainanID;
END IF;
END IF;
IF v_mgm_new IS NOT NULL
AND NEW.Mcu_KelainanID IS NOT NULL
AND NEW.Mcu_KelainanName IS NOT NULL
AND NEW.Mcu_KelainanName <> '' THEN
INSERT INTO cpone_corporate.kelainan_summary (
Mcu_KelainanID,
Mcu_KelainanMgm_McuID,
Mcu_KelainanName,
created_at
)
SELECT NEW.Mcu_KelainanID, v_mgm_new, NEW.Mcu_KelainanName, NOW()
FROM DUAL
WHERE NOT EXISTS (
SELECT 1
FROM cpone_corporate.kelainan_summary ks
WHERE ks.Mcu_KelainanMgm_McuID = v_mgm_new
AND ks.Mcu_KelainanID = NEW.Mcu_KelainanID
);
UPDATE cpone_corporate.kelainan_summary
SET Mcu_KelainanName = NEW.Mcu_KelainanName
WHERE Mcu_KelainanMgm_McuID = v_mgm_new
AND Mcu_KelainanID = NEW.Mcu_KelainanID;
INSERT INTO cpone_dashboard.kelainan_summary (
Mcu_KelainanID,
Mcu_KelainanMgm_McuID,
Mcu_KelainanName,
created_at,
Mgm_McuID
)
SELECT NEW.Mcu_KelainanID, v_mgm_new, NEW.Mcu_KelainanName, NOW(), v_mgm_new
FROM DUAL
WHERE NOT EXISTS (
SELECT 1
FROM cpone_dashboard.kelainan_summary dks
WHERE dks.Mgm_McuID = v_mgm_new
AND dks.Mcu_KelainanID = NEW.Mcu_KelainanID
);
UPDATE cpone_dashboard.kelainan_summary
SET Mcu_KelainanName = NEW.Mcu_KelainanName,
Mcu_KelainanMgm_McuID = v_mgm_new
WHERE Mgm_McuID = v_mgm_new
AND Mcu_KelainanID = NEW.Mcu_KelainanID;
END IF;
END$$
CREATE TRIGGER cpone_corporate.trg_kelainan_details_ad_sync_summary
AFTER DELETE ON cpone_corporate.kelainan_details
FOR EACH ROW
BEGIN
DECLARE v_mgm_mcuid INT;
SELECT oh.T_OrderHeaderMgm_McuID
INTO v_mgm_mcuid
FROM cpone.t_orderheader oh
WHERE oh.T_OrderHeaderID = OLD.T_OrderHeaderID
AND oh.T_OrderHeaderIsActive = 'Y'
LIMIT 1;
IF v_mgm_mcuid IS NOT NULL AND OLD.Mcu_KelainanID IS NOT NULL THEN
IF NOT EXISTS (
SELECT 1
FROM cpone_corporate.kelainan_details kd
JOIN cpone.t_orderheader oh ON oh.T_OrderHeaderID = kd.T_OrderHeaderID
WHERE oh.T_OrderHeaderMgm_McuID = v_mgm_mcuid
AND oh.T_OrderHeaderIsActive = 'Y'
AND kd.Mcu_KelainanID = OLD.Mcu_KelainanID
) THEN
DELETE FROM cpone_corporate.kelainan_summary
WHERE Mcu_KelainanMgm_McuID = v_mgm_mcuid
AND Mcu_KelainanID = OLD.Mcu_KelainanID;
DELETE FROM cpone_dashboard.kelainan_summary
WHERE Mgm_McuID = v_mgm_mcuid
AND Mcu_KelainanID = OLD.Mcu_KelainanID;
END IF;
END IF;
END$$
DELIMITER ;

View File

@@ -0,0 +1,35 @@
#!/usr/bin/env bash
set -euo pipefail
TOKEN="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJNX1VzZXJJRCI6IjIiLCJNX1VzZXJFbWFpbCI6Impva29AZ21haWwuY29tIiwiTV9Vc2VyVXNlcm5hbWUiOiJqb2tvQGdtYWlsLmNvbSIsIk1fVXNlckdyb3VwRGFzaGJvYXJkIjoib25lLXVpXC90ZXN0XC92dWV4XC9vbmUtbWQtdXNlcmdyb3VwLXVzZXItdjVcLyIsIk1fVXNlckRlZmF1bHRUX1NhbXBsZVN0YXRpb25JRCI6IjEiLCJNX1N0YWZmTmFtZSI6IkFkbWluIENQT05FIiwiaXNfY291cmllciI6Ik4iLCJNX0JyYW5jaElEIjoiMTAiLCJNX0JyYW5jaE5hbWUiOiJMYWJvcmF0b3JpdW0gTWFrYXNzYXIiLCJ0aW1lX2F1dG9sb2dvdXQiOiIxNSIsImlwIjoiMTI4LjE5OS44Ni43IiwiYWdlbnQiOiJHby1odHRwLWNsaWVudFwvMS4xIiwidmVyc2lvbiI6InYyIiwibGFzdC1sb2dpbiI6IjIwMjYtMDUtMDYgMTY6MDA6MzYifQ.YoDFYB-uayRtGSqGeapbo9EbvtHx_RcvNLlXDNwVk4s"
COOKIE="cpone_session=ZmFqcmk.4VydTLnAE5nMiudJXBPrlz1MqzQbA38R6JGiawYu5zI; cpone_project_mcu_id=1583; token=${TOKEN}"
ORDER_IDS=$(ssh -o BatchMode=yes one@devcpone.aplikasi.web.id "mysql -N -D cpone -e \"SELECT DISTINCT pp.Mcu_PreregisterPatientsT_OrderHeaderID FROM mcu_preregister_patients pp JOIN mcu_preregister_date pd ON pd.Mcu_PreregisterDateMcu_PreregisterPatientsID=pp.Mcu_PreregisterPatientsID AND pd.Mcu_PreregisterDateIsActive='Y' JOIN t_orderheader oh ON oh.T_OrderHeaderID=pp.Mcu_PreregisterPatientsT_OrderHeaderID AND oh.T_OrderHeaderIsActive='Y' WHERE pp.Mcu_PreregisterPatientsMgm_McuID=1583 AND pd.Mcu_PreregisterDateCheckinSchedule='2026-05-05' AND pp.Mcu_PreregisterPatientsIsActive='Y' ORDER BY pp.Mcu_PreregisterPatientsT_OrderHeaderID;\"")
ok=0
val_fail=0
gen_fail=0
sync_fail=0
total=0
for OID in $ORDER_IDS; do
total=$((total+1))
RESP=$(curl -sS "https://devcpone.aplikasi.web.id/one-api/mockup/mcuoffline/Resumeindividucponev7/generateFitnessCategory" \
-H "Accept: application/json, text/plain, */*" \
-H "Content-Type: application/json;charset=UTF-8" \
-H "Cookie: ${COOKIE}" \
--data-raw "{\"token\":\"${TOKEN}\",\"orderid\":\"${OID}\",\"kesimpulan\":\"\",\"rekomendasi\":\"\",\"saran\":\"\",\"conclusion\":\"\",\"recomendation\":\"\",\"advice\":\"\"}")
if echo "$RESP" | grep -q '"status":"OK"'; then
if ssh -o BatchMode=yes one@devcpone.aplikasi.web.id "mysql -N -D cpone -e \"CALL cpone.sp_sync_kelainan_details_by_orderheader(${OID});\"" >/dev/null 2>&1; then
ok=$((ok+1))
else
sync_fail=$((sync_fail+1))
fi
elif echo "$RESP" | grep -q 'belum di validasi'; then
val_fail=$((val_fail+1))
else
gen_fail=$((gen_fail+1))
fi
done
echo "RESULT total=${total} ok=${ok} val_fail=${val_fail} gen_fail=${gen_fail} sync_fail=${sync_fail}"