Files
BE_CPONE/scripts/run_generate_kelainan_and_sync.sh
2026-05-06 16:51:53 +07:00

163 lines
5.3 KiB
Bash
Executable File

#!/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