# ケアプランデータ連携 管理システム

福祉用具事業所向けの **ケアプランデータ連携** 管理システムです。国保中央会の標準仕様に準拠した CSV ベースのデータ連携・実績出力機能を提供します。

## 概要

- **対象**: 福祉用具事業所（要介護・介護予防両対応）
- **機能**: CSV 取込・管理、ケアプラン閲覧、実績データ出力
- **標準仕様**: ケアプランデータ連携標準仕様 V4.1（CSV バージョン 202407）
- **エンコーディング**: Shift-JIS (cp932)
- **ベンダー試験対応**: D1～D3（要介護）、D6/D7（介護予防利用票）

## ディレクトリ構成

```
smile-assist/
├── public/
│   └── index.php                 エントリーポイント
├── app/
│   ├── layout.php                HTML 共通レイアウト
│   ├── routes.php                POST ハンドラ（アクション処理）
│   └── helpers.php               ヘルパー関数（esc(), statusBadge() など）
├── views/
│   ├── dashboard.php             ダッシュボード
│   ├── import.php                CSV 取込
│   ├── files.php                 ファイル一覧
│   ├── detail.php                ファイル詳細
│   ├── export.php                実績出力
│   ├── careplan-list.php         ケアプラン利用者一覧
│   └── careplan-detail.php       ケアプラン詳細（様式表示）
├── assets/
│   ├── styles.css                スタイルシート
│   └── scripts.js                JavaScript（ドラッグ&ドロップ、テーブル編集）
├── src/
│   ├── Manager.php               ファイル管理・DB クラス
│   ├── CsvCodec.php              CSV エンコーディング
│   ├── Validator.php             バリデーション
│   ├── Codes.php                 制度コード辞書
│   ├── Fields.php                CSV フィールド定義
│   ├── FileNameRule.php          ファイル名規約
│   └── CarePlan.php              ケアプラン整形
├── sampledata/
│   ├── generate_careplan.py      サンプルデータ生成スクリプト
│   └── README.md                 サンプルデータ説明
├── index.php.backup              元の構成（参考）
└── README.md                     このファイル
```

## セットアップ

### 必須要件

- PHP 8.0 以上
- SQLite 3（`src/Manager.php` で使用）

### インストール

1. リポジトリをクローン
   ```bash
   git clone <repository-url> smile-assist
   cd smile-assist
   ```

2. ディレクトリパーミッション設定
   ```bash
   mkdir -p data export
   chmod 755 data export
   ```

### 起動方法

#### Docker を使用（推奨）

```bash
docker-compose up -d
```

以下のサービスが起動します:
- **PHP + Apache**: http://localhost:8080
- **MySQL**: `localhost:3306`
  - ユーザー: `smile_user`
  - パスワード: `smile_password`
  - データベース: `smile_db`
- **phpMyAdmin**: http://localhost:8081（DB 管理画面）

ログを確認:
```bash
docker-compose logs -f
```

停止:
```bash
docker-compose down
```

#### ローカル開発環境

3. PHP 組み込みサーバーで起動（開発環境）
   ```bash
   php -S localhost:8080 -t public/
   ```
   ブラウザで `http://localhost:8080` を開く

#### 本番環境（Apache/Nginx）
   - ドキュメントルートを `public/` に設定
   - または `.htaccess` で `public/index.php` にリダイレクト

## 機能説明

### ダッシュボード
- 受信状況の統計表示（受信済、取込済、エラー、出力済）
- 最近のファイル一覧
- 受信済ファイルの一括連番処理

### CSV 取込
- **対応形式**: Shift-JIS (cp932)
- **対応パターン**:
  - D1～D3（要介護）: UP1KYO, UP2KYO, UP3KYO, UPHOSOKU, UPPLAN
  - D6/D7（介護予防利用票）: UPPLAN(サービス種別 67)
- **ドラッグ&ドロップ対応**: 複数ファイル同時選択可能
- **バリデーション**: フィールド数・型チェック

### ファイル管理
- 取込済みファイルの一覧表示・詳細確認
- ファイル名規約解析（接頭辞・対象年月・事業所番号など）
- バリデーション結果の表示
- ダウンロード機能

### ケアプラン閲覧
- 利用者別のケアプラン表示
- 第 1～3 表（計画書）・第 6 表（予定）の様式表示
- 印刷対応 CSS

### 実績出力
- **入力方式**: テーブル形式エディター
  - 行追加・削除
  - **対応サービス種類はマスタ駆動**: 実績入力の種別 select／コードピッカーは「サービスコードマスタ（有効）＋自社事業所マスタ」に登録された種別だけを表示（両方空なら既定 17/67）
    - 使うコードの選択 = [サービスコードマスタ](views/service-codes.php) で登録・有効/無効
    - 使う種別の追加 = [サービスコードマスタ]／[自社事業所マスタ](views/jigyosho-master.php) の種別プルダウン（全種類から選択可）
  - **時刻はサービス種別で自動判定**: 福祉用具貸与・短期入所・居宅療養管理指導は時刻指定なし（9999）、訪問・通所系は開始/終了時刻（HHMM）を入力
  - TAIS コード/福祉用具届出コード排他チェック（17/67）
  - 30 日超 0 が既定
  - ※ `Fields::FUKUSHIYOGU_ONLY = true` はマスタが空のときの既定フォールバックを福祉用具(17/67)に固定する補助スイッチ
  
- **UPPLAN 自動埋充**: 取込済みの予定ファイルから共通項目を自動抽出
  - 対象年月、作成年月日、ケアマネ業者コード、プラン担当者名
  
- **出力形式**: Shift-JIS (cp932) CSV
  - サービス種別 17（要介護） / 67（介護予防）両対応

### スキーマ参照
- 各 CSV の全フィールド定義表
- 必須/フリーテキスト情報
- 福祉用具排他チェックマーク

## サンプルデータ生成

```bash
cd sampledata
python3 generate_careplan.py
```

生成されるファイル:
- `UPHOSOKU_*.CSV` — 利用者補足情報
- `UP1KYO_*.CSV` — 第 1 表（基本情報）
- `UP2KYO_*.CSV` — 第 2 表（サービス内容）
- `UP3KYO_*.CSV` — 第 3 表（週間計画表）
- `UPPLAN_*.CSV` — 第 6 表（予定）

## 制度コード

### 要介護状態区分
- `00`: 自立
- `11`: 事業対象者
- `12`: 要支援 1
- `13`: 要支援 2
- `21`～`25`: 要介護 1～5

### サービス種別
- `17`: 福祉用具貸与（要介護）
- `67`: 福祉用具貸与（介護予防）
- `43`: 居宅介護支援（ケアマネ事業所）

### 重要な仕様
**サービス開始/終了時刻の扱い（第 6 表 予定・実績）**:
- 24 時間制で開始〜終了を記載する。ただし以下の種別は時刻指定なし（`9999`）:
  - 福祉用具貸与（17 / 67）、短期入所サービス（21〜26）、居宅療養管理指導（31 / 34）
- 上記以外（訪問・通所系など）は実時刻（HHMM）を入力する。判定は [Codes::NO_TIME_KBN](src/Codes.php) に集約。
- 第 3 表（週間計画表）: 福祉用具は「週単位以外のサービス」欄に用具名を記載（時刻は記入しない）

## 技術スタック

| レイヤー | 技術 |
|---------|------|
| **Front-end** | HTML5, CSS3（レスポンシブ）, Vanilla JavaScript |
| **Back-end** | PHP 8.0+, SQLite 3 |
| **CSV** | Shift-JIS エンコーディング, 引用符対応パーサ |
| **UI フレームワーク** | なし（カスタム CSS） |
| **アーキテクチャ** | MVC ライク（public/index.php → app/routes.php → views/） |

## ファイル分割（アーキテクチャ）

### 元の構成
- `index.php` （1910 行、全機能統合）

### 新しい構成
```
public/index.php               リクエストハンドラ・ルーティング
  ↓
app/routes.php                 POST アクション処理
  ↓
views/*.php                    ページテンプレート（HTML）
  ↓
app/layout.php                 HTML 共通骨組み
```

**メリット**:
- ファイルサイズの削減（最大ファイル: 17.5KB）
- 機能ごとの保守性向上
- テスト容易性向上
- CSS/JS の分離（assets/）

## ベンダー試験対応

### 現在の実装範囲
- **D1**: 居宅サービス計画書（第 1～3 表）✅
- **D2**: サービス利用票（予定・UPPLAN）✅
- **D3**: サービス利用票（実績・UPJSK）✅
- **D6/D7**: 介護予防利用票（予定/実績、サービス種別 67）✅

### 未実装
- **D4**: 利用者基本情報（UPKIHON） — スキーマ定義待ち
- **D5**: 介護予防計画書（UPYOBO） — スキーマ定義待ち

## よくある質問

### Q1: CSV 出力後、どこに送信する？
A: 生成された CSV は自社システムで保管し、「ケアプランデータ連携システム（連携クライアント）」で暗号化・基盤送信されます。本システムは CSV 出力までを担当します。

### Q2: 福祉用具の TAIS コードがわからない
A: TAIS（福祉用具貸与情報提供システム）で検索してください。または福祉用具届出コードを使用可能です。

### Q3: 複数事業所分を1ファイルで出力できる？
A: はい。利用者ごと・サービスごと に複数行入力して「CSV 生成」すれば、サテライトを含む全事業所分が1ファイルに統合されます。

### Q4: 要支援（介護予防）にも対応している？
A: はい。サービス種別 `67` を選択すれば、要支援・介護予防の利用票が生成されます。

## 開発・保守

### ログイン不要
セキュリティモデルを持たない（ローカルシステム想定）。本番導入時は Apache や Nginx の認証機能を使用してください。

### リソース管理
- CSV ファイルは `data/import` と `data/export` に保存
- SQLite DB は `data/` 以下に配置
- 定期的なバックアップを推奨

### コード規約
- PHP: PSR-12（命名は日本語可）
- JavaScript: Vanilla JS（フレームワーク不使用）
- CSS: CSS 変数（`:root`）で設計トークン管理

## ライセンス

未定（プロジェクト内部用）

## 参考資料

- [ケアプランデータ連携標準仕様 V4.1](https://www.cocoa.or.jp/) — 国保中央会
- [居宅サービス計画書標準様式及び記載要領](https://www.mhlw.go.jp/) — 厚生労働省
