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:<名称>" 形式のエントリ。祝日・定休日でも診療日として扱います。 |
使い方¶
オプション¶
| オプション | 内容 |
|---|---|
--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 の名称をそのまま保存します。
前提¶
curl、jqが必要です。add-national-holidaysはさらにiconv(CSV の Shift-JIS 変換)を使います。- データの更新(
add/add-national-holidays)には、set-shukujitsu が利用できる状態でアプリが稼働している必要があります。