163 lines
5.3 KiB
Bash
Executable File
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
|