Fix MCU dummy generation and participant dedup

This commit is contained in:
sas.fajri
2026-05-06 16:51:53 +07:00
parent 5aed7c05b4
commit 3d50bcf7f1
5 changed files with 1224 additions and 18 deletions

View File

@@ -326,7 +326,8 @@ class SendEmailPreregister extends MY_Controller
$data_send_patients = $que_patients->result_array();
$sql_notif_config = "SELECT
Email_ConfigNofificationTemplate
Email_ConfigNofificationTemplate,
Email_ConfigNofificationSender
FROM email_config_nofification
WHERE Email_ConfigNofificationIsActive = 'Y'
ORDER BY Email_ConfigNofificationID DESC
@@ -571,6 +572,12 @@ class SendEmailPreregister extends MY_Controller
$recipient = json_encode([
["name" => $patient['nama_pasien'], "email" => $targetEmail]
]);
$senderEmail = isset($notifConfig['Email_ConfigNofificationSender'])
? trim((string)$notifConfig['Email_ConfigNofificationSender'])
: '';
$sendCC = $senderEmail !== ''
? json_encode([["name" => $senderEmail, "email" => $senderEmail]])
: NULL;
$sql_cek_outbox = "SELECT PreregisterEmailOutboxID
FROM preregister_email_outbox
@@ -598,7 +605,7 @@ class SendEmailPreregister extends MY_Controller
$que_insert_outbox = $this->db->query($sql_insert_outbox, [
$subject,
$recipient,
NULL,
$sendCC,
$body,
'PREREGIST',
$patient['preregister_id']
@@ -620,7 +627,7 @@ class SendEmailPreregister extends MY_Controller
$que_update_outbox = $this->db->query($sql_update_outbox, [
$subject,
$recipient,
NULL,
$sendCC,
$body,
$cek_outbox[0]['PreregisterEmailOutboxID']
]);

View File

@@ -1131,10 +1131,10 @@ class Resumeindividucponev7 extends MY_Controller
T_OrderDetailT_TestSasCode AS testSasCode,
T_OrderDetailT_TestName AS testName,
T_OrderDetailResult AS result,
Nat_SubSubGroupID AS subGroupID,
IFNULL(Nat_SubSubGroupID, 0) AS subGroupID,
T_OrderDetailMinValue AS minValues,
T_OrderDetailMaxValue AS maxValues,
Nat_SubSubGroupName AS groupName,
IFNULL(Nat_SubSubGroupName, T_OrderDetailT_TestName) AS groupName,
T_TestNat_TestID AS natTestID,
T_TestIsQuantitative as isKuantitatif,
CASE
@@ -1167,8 +1167,8 @@ class Resumeindividucponev7 extends MY_Controller
JOIN t_test
ON T_OrderDetailT_TestID = T_TestID
JOIN nat_test ON T_TestNat_TestID = Nat_TestID
JOIN nat_subsubgroup
ON T_TestNat_SubSubGroupID = Nat_SubSubGroupID
LEFT JOIN nat_subsubgroup
ON T_TestNat_SubSubGroupID = Nat_SubSubGroupID
LEFT JOIN mcu_resume
ON T_OrderDetailT_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
AND Mcu_ResumeIsActive = 'Y'
@@ -1375,10 +1375,10 @@ class Resumeindividucponev7 extends MY_Controller
T_OrderDetailT_TestSasCode AS testSasCode,
T_OrderDetailT_TestName AS testName,
T_OrderDetailResult AS result,
Nat_SubSubGroupID AS subGroupID,
IFNULL(Nat_SubSubGroupID, 0) AS subGroupID,
T_OrderDetailMinValue AS minValues,
T_OrderDetailMaxValue AS maxValues,
Nat_SubSubGroupName AS groupName,
IFNULL(Nat_SubSubGroupName, T_OrderDetailT_TestName) AS groupName,
T_TestNat_TestID AS natTestID,
T_TestIsQuantitative as isKuantitatif,
CASE
@@ -1411,8 +1411,8 @@ class Resumeindividucponev7 extends MY_Controller
JOIN t_test
ON T_OrderDetailT_TestID = T_TestID
JOIN nat_test ON T_TestNat_TestID = Nat_TestID
JOIN nat_subsubgroup
ON T_TestNat_SubSubGroupID=Nat_SubSubGroupID
LEFT JOIN nat_subsubgroup
ON T_TestNat_SubSubGroupID=Nat_SubSubGroupID
LEFT JOIN mcu_resume
ON T_OrderDetailT_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
AND Mcu_ResumeIsActive = 'Y'
@@ -2300,12 +2300,12 @@ class Resumeindividucponev7 extends MY_Controller
Mcu_ResumeStatus,
Mcu_ResumeMcu_FitnessCategoryID,
Mcu_ResumeCreated,
Mcu_ResumeUserID,
Mcu_ResumeKesimpulan,
Mcu_ResumeRekomendasi,
Mcu_ResumeSaran,
)
VALUES(?,'NEW',?,NOW(),?,?,?,?)";
Mcu_ResumeUserID,
Mcu_ResumeKesimpulan,
Mcu_ResumeRekomendasi,
Mcu_ResumeSaran
)
VALUES(?,'NEW',?,NOW(),?,?,?,?)";
$query = $this->db_onedev->query($sql, [
$id,
$fitnessID,

View File

@@ -0,0 +1,162 @@
#!/usr/bin/env bash
set -euo pipefail
# Usage examples:
# 1) Single preregister:
# ./scripts/run_generate_kelainan_and_sync.sh \
# --preregister-id 77502 \
# --token 'JWT_TOKEN' \
# --cookie 'cpone_session=...; token=...'
#
# 2) Multi by MCU + date:
# ./scripts/run_generate_kelainan_and_sync.sh \
# --mcu-id 1583 --date 2026-05-05 \
# --token 'JWT_TOKEN' \
# --cookie 'cpone_session=...; token=...'
#
# Optional:
# --base-url https://devcpone.aplikasi.web.id
# --ssh-host one@devcpone.aplikasi.web.id
BASE_URL="https://devcpone.aplikasi.web.id"
SSH_HOST="one@devcpone.aplikasi.web.id"
PREREGISTER_ID=""
MCU_ID=""
SCHEDULE_DATE=""
TOKEN=""
COOKIE=""
KESIMPULAN=$'- Anemia\n- Peningkatan LED\n- Penurunan HDL Kolesterol\n- Presbiopia ODS\n'
REKOMENDASI="Sedang"
SARAN=$'1. Konsul ke dokter gigi untuk membersihkan karang gigi dan kemungkinan\n membuat gigi palsu\n2. Intake vitamin yang mengandung zat besi untuk memperbaiki kadar\n Hemoglobin dalam darah\n3. Ulang pemeriksaan LED, bila tidak ada perbaikan konsul ke dokter untuk\n mencari kemungkinan adanya fokus infeksi\n4. Lakukan olah raga secara teratur\n5. Sebaiknya hentikan kebiasaan merokok'
CONCLUSION=$'- Anemia\n- Elevated of ESR\n- Decreased HDL Cholesterol level\n- Presbiopia ODS\n'
RECOMENDATION="Fit with note"
ADVICE=""
while [[ $# -gt 0 ]]; do
case "$1" in
--preregister-id) PREREGISTER_ID="${2:-}"; shift 2 ;;
--mcu-id) MCU_ID="${2:-}"; shift 2 ;;
--date) SCHEDULE_DATE="${2:-}"; shift 2 ;;
--token) TOKEN="${2:-}"; shift 2 ;;
--cookie) COOKIE="${2:-}"; shift 2 ;;
--base-url) BASE_URL="${2:-}"; shift 2 ;;
--ssh-host) SSH_HOST="${2:-}"; shift 2 ;;
--kesimpulan) KESIMPULAN="${2:-}"; shift 2 ;;
--rekomendasi) REKOMENDASI="${2:-}"; shift 2 ;;
--saran) SARAN="${2:-}"; shift 2 ;;
--conclusion) CONCLUSION="${2:-}"; shift 2 ;;
--recomendation) RECOMENDATION="${2:-}"; shift 2 ;;
--advice) ADVICE="${2:-}"; shift 2 ;;
*) echo "Unknown arg: $1" >&2; exit 1 ;;
esac
done
if [[ -z "$TOKEN" || -z "$COOKIE" ]]; then
echo "token dan cookie wajib diisi" >&2
exit 1
fi
if [[ -n "$PREREGISTER_ID" ]]; then
MODE="single"
elif [[ -n "$MCU_ID" && -n "$SCHEDULE_DATE" ]]; then
MODE="multi"
else
echo "Gunakan --preregister-id ATAU --mcu-id + --date" >&2
exit 1
fi
get_order_ids_sql_single="
SELECT DISTINCT pp.Mcu_PreregisterPatientsT_OrderHeaderID
FROM cpone.mcu_preregister_patients pp
WHERE pp.Mcu_PreregisterPatientsID = ${PREREGISTER_ID}
AND pp.Mcu_PreregisterPatientsIsActive = 'Y'
AND IFNULL(pp.Mcu_PreregisterPatientsT_OrderHeaderID,0) > 0;
"
get_order_ids_sql_multi="
SELECT DISTINCT pp.Mcu_PreregisterPatientsT_OrderHeaderID
FROM cpone.mcu_preregister_patients pp
JOIN cpone.mcu_preregister_date pd
ON pd.Mcu_PreregisterDateMcu_PreregisterPatientsID = pp.Mcu_PreregisterPatientsID
AND pd.Mcu_PreregisterDateIsActive = 'Y'
JOIN cpone.t_orderheader oh
ON oh.T_OrderHeaderID = pp.Mcu_PreregisterPatientsT_OrderHeaderID
AND oh.T_OrderHeaderIsActive = 'Y'
WHERE pp.Mcu_PreregisterPatientsMgm_McuID = ${MCU_ID}
AND pd.Mcu_PreregisterDateCheckinSchedule = '${SCHEDULE_DATE}'
AND pp.Mcu_PreregisterPatientsIsActive = 'Y'
AND IFNULL(pp.Mcu_PreregisterPatientsT_OrderHeaderID,0) > 0;
"
if [[ "$MODE" == "single" ]]; then
SQL="$get_order_ids_sql_single"
else
SQL="$get_order_ids_sql_multi"
fi
echo "Ambil orderid target..."
ORDER_IDS="$(ssh -o BatchMode=yes "$SSH_HOST" "mysql -N -e \"$SQL\"")"
if [[ -z "$ORDER_IDS" ]]; then
echo "Tidak ada orderid target yang ditemukan." >&2
exit 1
fi
echo "Order target:"
echo "$ORDER_IDS" | sed 's/^/- /'
API_URL="${BASE_URL}/one-api/mockup/mcuoffline/Resumeindividucponev7/generateFitnessCategory"
SUCCESS=0
FAILED=0
while IFS= read -r ORDER_ID; do
[[ -z "$ORDER_ID" ]] && continue
echo ""
echo "Processing orderid=${ORDER_ID} ..."
PAYLOAD="$(cat <<JSON
{"token":"${TOKEN}","orderid":"${ORDER_ID}","kesimpulan":"${KESIMPULAN}","rekomendasi":"${REKOMENDASI}","saran":"${SARAN}","conclusion":"${CONCLUSION}","recomendation":"${RECOMENDATION}","advice":"${ADVICE}"}
JSON
)"
RESP_FILE="$(mktemp)"
HTTP_CODE="$(curl -sS -o "$RESP_FILE" -w "%{http_code}" "$API_URL" \
-H 'Accept: application/json, text/plain, */*' \
-H 'Content-Type: application/json;charset=UTF-8' \
-H "Cookie: ${COOKIE}" \
--data-raw "$PAYLOAD" || true)"
if [[ "$HTTP_CODE" != "200" ]]; then
echo "ERR generateFitnessCategory orderid=${ORDER_ID}, http=${HTTP_CODE}"
cat "$RESP_FILE"
rm -f "$RESP_FILE"
FAILED=$((FAILED + 1))
continue
fi
if grep -qiE '"status"\s*:\s*"err"|invalid token|error' "$RESP_FILE"; then
echo "ERR generateFitnessCategory orderid=${ORDER_ID}, response error:"
cat "$RESP_FILE"
rm -f "$RESP_FILE"
FAILED=$((FAILED + 1))
continue
fi
rm -f "$RESP_FILE"
echo "OK generateFitnessCategory orderid=${ORDER_ID}, lanjut sync kelainan dashboard..."
if ssh -o BatchMode=yes "$SSH_HOST" "mysql -N -e \"CALL cpone.sp_sync_kelainan_details_by_orderheader(${ORDER_ID});\""; then
echo "OK sync kelainan orderid=${ORDER_ID}"
SUCCESS=$((SUCCESS + 1))
else
echo "ERR sync kelainan orderid=${ORDER_ID}"
FAILED=$((FAILED + 1))
fi
done <<< "$ORDER_IDS"
echo ""
echo "Selesai. success=${SUCCESS}, failed=${FAILED}"
if [[ "$FAILED" -gt 0 ]]; then
exit 2
fi

View File

@@ -75,7 +75,7 @@ BEGIN
Mcu_ParticipantDailyDetailsMcu_PatientID,
Mcu_ParticipantDailyDetailsIsActive
)
SELECT
SELECT DISTINCT
v_participant_daily_id,
mp.Mcu_PatientID,
'Y'

File diff suppressed because it is too large Load Diff