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

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