コンテンツにスキップ

holiday.sh

診療所の休診日を扱うコマンドライン・スクリプトです。祝日・休日の定義(shukujitsu.json)を、稼働中のアプリの API を通じて参照・更新します。

  • 休診日の判定は、アプリの resolveClinicOperation()src/lib/server/clinic-operation-service.ts)と同じ規則に従います。
  • データは API 経由で取得・更新します(get-shukujitsu / set-shukujitsu)。

休診日の考え方

区分 内容
定休日 毎週 水曜・日曜shukujitsu.json には持たず、曜日から判定します。
祝日(national-holiday) shukujitsu.json の通常のエントリ(例: "2026-01-01": "元日")。
臨時休診(ad-hoc-holiday) "ad-hoc-holiday:<名称>" 形式のエントリ。
臨時診療(ad-hoc-workday) "ad-hoc-workday:<名称>" 形式のエントリ。祝日・定休日でも診療日として扱います。

使い方

holiday.sh --env-file <path> <サブコマンド> [引数]

オプション

オプション 内容
--env-file <path> 必須。環境変数を読み込むファイル。MYCLINIC_APP_URL(例: http://localhost:3200)を定義しておく必要があります。

環境変数

変数 内容 既定値
MYCLINIC_APP_URL アプリの URL。API の接続先。 (env ファイルで必須)
MYCLINIC_HOLIDAY_CSV_URL 祝日 CSV の取得元 URL。 内閣府の祝日 CSV

サブコマンド

list [YEAR]

指定した年(省略時は当年)の休診日を一覧表示します。翌年 1 月まで含めて表示します。

  • 毎週の定休日(水・日)そのものは一覧しません。
  • 祝日・臨時休診が水曜・日曜に重なる場合は、[regular] を付けて表示します(その日はもともと定休日で閉院のため)。
  • 臨時診療(ad-hoc-workday)は診療日なので一覧しません。
$ holiday.sh --env-file prod.env list 2026
Clinic holidays for 2026 (through Jan 2027):
  2026-01-01 (Thu)  national-holiday 元日
  2026-02-11 (Wed)  national-holiday 建国記念の日 [regular]
  ...
  2026-09-05 (Sat)  ad-hoc-holiday   臨時休診
  ...
Total: 19 holidays

add YYYY-MM-DD [NAME]

指定した日を臨時休診(ad-hoc-holiday)として追加します。NAME を省略すると 臨時休診 になります。

  • 既存のエントリがある場合は、上書きの警告を表示します。
  • 対象日が水曜・日曜の場合は、もともと定休日である旨を注記します。
  • 内容を確認したうえで y を入力すると shukujitsu.json をアップロードします。それ以外は中止します。
$ holiday.sh --env-file prod.env add 2026-09-05 臨時休診
Add ad-hoc holiday:
  date:  2026-09-05 (Sat)
  name:  臨時休診
  value: ad-hoc-holiday:臨時休診
Upload updated shukujitsu.json to https://myclinic.internal? [y/N] y
Uploaded. 2026-09-05 is now an ad-hoc holiday.

add-national-holidays YEAR

指定した年の国民の祝日を、内閣府の祝日 CSV から取得して設定します。

  • 既存の臨時休診・臨時診療(ad-hoc-*)のエントリはそのまま保持し、日付が重なる場合は既存のエントリを優先します。
  • 取得した祝日の一覧と件数を表示し、確認後にアップロードします。
$ holiday.sh --env-file prod.env add-national-holidays 2027
National holidays for 2027 (source: https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv):
  2027-01-01  元日
  2027-01-11  成人の日
  ...
  (17 national holidays; 0 existing ad-hoc entries preserved)
Set these as 2027 national holidays and upload to https://myclinic.internal? [y/N] y
Uploaded. National holidays for 2027 are set.

祝日名について

内閣府 CSV では、振替休日は 振替休日 ではなく 休日 という名称で提供されます。本スクリプトは CSV の名称をそのまま保存します。

前提

  • curljq が必要です。add-national-holidays はさらに iconv(CSV の Shift-JIS 変換)を使います。
  • データの更新(add / add-national-holidays)には、set-shukujitsu が利用できる状態でアプリが稼働している必要があります。