Fix MCU dummy generation and participant dedup
This commit is contained in:
@@ -326,7 +326,8 @@ class SendEmailPreregister extends MY_Controller
|
|||||||
$data_send_patients = $que_patients->result_array();
|
$data_send_patients = $que_patients->result_array();
|
||||||
|
|
||||||
$sql_notif_config = "SELECT
|
$sql_notif_config = "SELECT
|
||||||
Email_ConfigNofificationTemplate
|
Email_ConfigNofificationTemplate,
|
||||||
|
Email_ConfigNofificationSender
|
||||||
FROM email_config_nofification
|
FROM email_config_nofification
|
||||||
WHERE Email_ConfigNofificationIsActive = 'Y'
|
WHERE Email_ConfigNofificationIsActive = 'Y'
|
||||||
ORDER BY Email_ConfigNofificationID DESC
|
ORDER BY Email_ConfigNofificationID DESC
|
||||||
@@ -571,6 +572,12 @@ class SendEmailPreregister extends MY_Controller
|
|||||||
$recipient = json_encode([
|
$recipient = json_encode([
|
||||||
["name" => $patient['nama_pasien'], "email" => $targetEmail]
|
["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
|
$sql_cek_outbox = "SELECT PreregisterEmailOutboxID
|
||||||
FROM preregister_email_outbox
|
FROM preregister_email_outbox
|
||||||
@@ -598,7 +605,7 @@ class SendEmailPreregister extends MY_Controller
|
|||||||
$que_insert_outbox = $this->db->query($sql_insert_outbox, [
|
$que_insert_outbox = $this->db->query($sql_insert_outbox, [
|
||||||
$subject,
|
$subject,
|
||||||
$recipient,
|
$recipient,
|
||||||
NULL,
|
$sendCC,
|
||||||
$body,
|
$body,
|
||||||
'PREREGIST',
|
'PREREGIST',
|
||||||
$patient['preregister_id']
|
$patient['preregister_id']
|
||||||
@@ -620,7 +627,7 @@ class SendEmailPreregister extends MY_Controller
|
|||||||
$que_update_outbox = $this->db->query($sql_update_outbox, [
|
$que_update_outbox = $this->db->query($sql_update_outbox, [
|
||||||
$subject,
|
$subject,
|
||||||
$recipient,
|
$recipient,
|
||||||
NULL,
|
$sendCC,
|
||||||
$body,
|
$body,
|
||||||
$cek_outbox[0]['PreregisterEmailOutboxID']
|
$cek_outbox[0]['PreregisterEmailOutboxID']
|
||||||
]);
|
]);
|
||||||
|
|||||||
@@ -1131,10 +1131,10 @@ class Resumeindividucponev7 extends MY_Controller
|
|||||||
T_OrderDetailT_TestSasCode AS testSasCode,
|
T_OrderDetailT_TestSasCode AS testSasCode,
|
||||||
T_OrderDetailT_TestName AS testName,
|
T_OrderDetailT_TestName AS testName,
|
||||||
T_OrderDetailResult AS result,
|
T_OrderDetailResult AS result,
|
||||||
Nat_SubSubGroupID AS subGroupID,
|
IFNULL(Nat_SubSubGroupID, 0) AS subGroupID,
|
||||||
T_OrderDetailMinValue AS minValues,
|
T_OrderDetailMinValue AS minValues,
|
||||||
T_OrderDetailMaxValue AS maxValues,
|
T_OrderDetailMaxValue AS maxValues,
|
||||||
Nat_SubSubGroupName AS groupName,
|
IFNULL(Nat_SubSubGroupName, T_OrderDetailT_TestName) AS groupName,
|
||||||
T_TestNat_TestID AS natTestID,
|
T_TestNat_TestID AS natTestID,
|
||||||
T_TestIsQuantitative as isKuantitatif,
|
T_TestIsQuantitative as isKuantitatif,
|
||||||
CASE
|
CASE
|
||||||
@@ -1167,8 +1167,8 @@ class Resumeindividucponev7 extends MY_Controller
|
|||||||
JOIN t_test
|
JOIN t_test
|
||||||
ON T_OrderDetailT_TestID = T_TestID
|
ON T_OrderDetailT_TestID = T_TestID
|
||||||
JOIN nat_test ON T_TestNat_TestID = Nat_TestID
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID
|
||||||
JOIN nat_subsubgroup
|
LEFT JOIN nat_subsubgroup
|
||||||
ON T_TestNat_SubSubGroupID = Nat_SubSubGroupID
|
ON T_TestNat_SubSubGroupID = Nat_SubSubGroupID
|
||||||
LEFT JOIN mcu_resume
|
LEFT JOIN mcu_resume
|
||||||
ON T_OrderDetailT_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
|
ON T_OrderDetailT_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
|
||||||
AND Mcu_ResumeIsActive = 'Y'
|
AND Mcu_ResumeIsActive = 'Y'
|
||||||
@@ -1375,10 +1375,10 @@ class Resumeindividucponev7 extends MY_Controller
|
|||||||
T_OrderDetailT_TestSasCode AS testSasCode,
|
T_OrderDetailT_TestSasCode AS testSasCode,
|
||||||
T_OrderDetailT_TestName AS testName,
|
T_OrderDetailT_TestName AS testName,
|
||||||
T_OrderDetailResult AS result,
|
T_OrderDetailResult AS result,
|
||||||
Nat_SubSubGroupID AS subGroupID,
|
IFNULL(Nat_SubSubGroupID, 0) AS subGroupID,
|
||||||
T_OrderDetailMinValue AS minValues,
|
T_OrderDetailMinValue AS minValues,
|
||||||
T_OrderDetailMaxValue AS maxValues,
|
T_OrderDetailMaxValue AS maxValues,
|
||||||
Nat_SubSubGroupName AS groupName,
|
IFNULL(Nat_SubSubGroupName, T_OrderDetailT_TestName) AS groupName,
|
||||||
T_TestNat_TestID AS natTestID,
|
T_TestNat_TestID AS natTestID,
|
||||||
T_TestIsQuantitative as isKuantitatif,
|
T_TestIsQuantitative as isKuantitatif,
|
||||||
CASE
|
CASE
|
||||||
@@ -1411,8 +1411,8 @@ class Resumeindividucponev7 extends MY_Controller
|
|||||||
JOIN t_test
|
JOIN t_test
|
||||||
ON T_OrderDetailT_TestID = T_TestID
|
ON T_OrderDetailT_TestID = T_TestID
|
||||||
JOIN nat_test ON T_TestNat_TestID = Nat_TestID
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID
|
||||||
JOIN nat_subsubgroup
|
LEFT JOIN nat_subsubgroup
|
||||||
ON T_TestNat_SubSubGroupID=Nat_SubSubGroupID
|
ON T_TestNat_SubSubGroupID=Nat_SubSubGroupID
|
||||||
LEFT JOIN mcu_resume
|
LEFT JOIN mcu_resume
|
||||||
ON T_OrderDetailT_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
|
ON T_OrderDetailT_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
|
||||||
AND Mcu_ResumeIsActive = 'Y'
|
AND Mcu_ResumeIsActive = 'Y'
|
||||||
@@ -2300,12 +2300,12 @@ class Resumeindividucponev7 extends MY_Controller
|
|||||||
Mcu_ResumeStatus,
|
Mcu_ResumeStatus,
|
||||||
Mcu_ResumeMcu_FitnessCategoryID,
|
Mcu_ResumeMcu_FitnessCategoryID,
|
||||||
Mcu_ResumeCreated,
|
Mcu_ResumeCreated,
|
||||||
Mcu_ResumeUserID,
|
Mcu_ResumeUserID,
|
||||||
Mcu_ResumeKesimpulan,
|
Mcu_ResumeKesimpulan,
|
||||||
Mcu_ResumeRekomendasi,
|
Mcu_ResumeRekomendasi,
|
||||||
Mcu_ResumeSaran,
|
Mcu_ResumeSaran
|
||||||
)
|
)
|
||||||
VALUES(?,'NEW',?,NOW(),?,?,?,?)";
|
VALUES(?,'NEW',?,NOW(),?,?,?,?)";
|
||||||
$query = $this->db_onedev->query($sql, [
|
$query = $this->db_onedev->query($sql, [
|
||||||
$id,
|
$id,
|
||||||
$fitnessID,
|
$fitnessID,
|
||||||
|
|||||||
162
scripts/run_generate_kelainan_and_sync.sh
Executable file
162
scripts/run_generate_kelainan_and_sync.sh
Executable 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
|
||||||
@@ -75,7 +75,7 @@ BEGIN
|
|||||||
Mcu_ParticipantDailyDetailsMcu_PatientID,
|
Mcu_ParticipantDailyDetailsMcu_PatientID,
|
||||||
Mcu_ParticipantDailyDetailsIsActive
|
Mcu_ParticipantDailyDetailsIsActive
|
||||||
)
|
)
|
||||||
SELECT
|
SELECT DISTINCT
|
||||||
v_participant_daily_id,
|
v_participant_daily_id,
|
||||||
mp.Mcu_PatientID,
|
mp.Mcu_PatientID,
|
||||||
'Y'
|
'Y'
|
||||||
|
|||||||
1037
scripts/sql/2026-05-06_create_sp_dummy_mcu_transaction_generator.sql
Normal file
1037
scripts/sql/2026-05-06_create_sp_dummy_mcu_transaction_generator.sql
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user