機能概要¶
システム全体機能マップ¶
mindmap
root((DDDS<br/>システム))
本部機能
アクセスログ管理
アカウント管理
調査票管理
BOX API連携
EDC連携
バッチ処理
コーディネータ機能
ドナー登録
ドナー編集
ファイル管理
プレビュー
移植施設機能(死体)
死体移植管理
検索
詳細表示
登録編集
CSV出力
PDF出力
調査票
移植施設機能(生体)
生体移植管理
検索
受者情報入力
ドナー情報入力
CSV出力
レポート
共通機能
認証
メニュー
パスワード変更
ログ記録
サブドメイン別機能一覧¶
1. 本部機能(hdqrs)¶
対象ユーザー: 本部管理者(ACC_TYPE_HQ)
アクセス: https://hdqrs.example.com/
| 機能 | URL | 説明 | 使用テーブル |
|---|---|---|---|
| アクセスログ管理 | /headquarter/accessLog |
全ユーザーのアクセス履歴閲覧 | accessLogTbl |
| アカウント履歴 | /headquarter/accountHistory |
アカウント変更履歴閲覧 | accountTbl |
| コーディネータ管理 | /headquarter/cordinatorManage |
コーディネータアカウント管理 | accountTbl, Doctortbl |
| 移植施設管理 | /headquarter/transplantManage |
移植施設ユーザー管理 | accountTbl, institutionMst |
| 調査票管理 | /headquarter/transplantSurvey |
調査票作成・管理 | T_ISHOKU_KIHON, T_DONOR |
| BOX連携 | /boxapi/* |
BOXストレージ連携 | - |
| EDC連携 | /boxapi/1.0/edcupload |
EDCシステムデータ送信 | - |
| バッチ処理 | /headquarter/cron/* |
定期バッチ実行 | 全テーブル |
特徴: - システム全体の管理権限 - 全施設のデータ閲覧可能 - CSRF除外設定(BOX API)
2. コーディネータ機能(brnch)¶
対象ユーザー: コーディネータ(ACC_TYPE_CO)
アクセス: https://brnch.example.com/
| 機能 | URL | 説明 | 使用テーブル |
|---|---|---|---|
| ドナー一覧 | /cordinator/donorList |
ドナー情報一覧表示 | T_DONOR |
| ドナー登録 | /cordinator/donorRegist |
新規ドナー情報登録 | T_DONOR |
| ドナー編集 | /cordinator/donorEdit |
ドナー情報編集 | T_DONOR |
| プレビュー | /cordinator/donorPreview |
入力内容確認 | - |
| ファイルアップロード | /cordinator/fileUpload |
ドナー関連ファイルアップロード | - |
| ファイルダウンロード | /cordinator/fileDownload |
ドナー関連ファイルダウンロード | fileDownLoadLogTbl |
特徴: - ドナー情報の入力・管理に特化 - 所属地域のデータのみアクセス可能 - シンプルなUI
3. 移植施設機能(死体移植)- ddds¶
対象ユーザー: 移植施設ユーザー(ACC_TYPE_TP)、学会ユーザー(institution_kubun=4)
アクセス: https://ddds.example.com/
死体移植管理¶
| 機能 | URL | 説明 | 使用テーブル |
|---|---|---|---|
| 検索 | /cadavericTransplant/search |
死体移植症例検索 | T_ISHOKU_KIHON |
| 詳細表示 | /cadavericTransplant/detail |
症例詳細表示 | T_ISHOKU_KIHON, T_ISHOKU_KIHON_* |
| 新規登録 | /cadavericTransplant/entry |
新規症例登録 | T_ISHOKU_KIHON, T_ISHOKU_KIHON_* |
| 編集 | /cadavericTransplant/edit |
症例情報編集 | T_ISHOKU_KIHON, T_ISHOKU_KIHON_* |
| CSV出力 | /cadavericTransplant/csv |
症例データCSV出力 | T_ISHOKU_KIHON, T_ISHOKU_KIHON_* |
| PDF出力 | /cadavericTransplant/pdf |
症例帳票PDF出力 | T_ISHOKU_KIHON, T_ISHOKU_KIHON_* |
生体移植管理¶
| 機能 | URL | 説明 | 使用テーブル |
|---|---|---|---|
| 検索 | /livingDonorTransplant/search |
生体移植症例検索 | T_ISHOKU_KIHON_LIV |
| 詳細表示 | /livingDonorTransplant/detail |
症例詳細表示 | T_ISHOKU_KIHON_LIV, T_ISHOKU_KIHON_*_LIV |
| 新規登録 | /livingDonorTransplant/entry |
新規症例登録 | T_ISHOKU_KIHON_LIV |
| 受者情報入力 | /livingDonorTransplant/recipient |
受者情報入力・編集 | T_ISHOKU_KIHON_LIV, T_ISHOKU_KIHON_*_LIV |
| 受者情報確認 | /livingDonorTransplant/confRecipient |
受者情報確認・保存 | 同上 |
| ドナー情報入力 | /livingDonorTransplant/donor |
ドナー情報入力・編集 | T_DONOR_LIV, T_DONOR_*_LIV |
| ドナー情報確認 | /livingDonorTransplant/confDonor |
ドナー情報確認・保存 | 同上 |
| CSV出力 | /livingDonorTransplant/csv |
症例データCSV出力 | T_ISHOKU_KIHON_LIV系 |
| 入力状況参照 | /livingDonorTransplant/statusInfoTransplant |
入力状況確認 | T_NYURYOKUJOKYO_LIV |
調査票・レポート¶
| 機能 | URL | 説明 | 使用テーブル |
|---|---|---|---|
| 調査票検索 | /reportTransplant/search |
調査票対象症例検索 | T_ISHOKU_KIHON_LIV |
| 調査票詳細 | /reportTransplant/detail |
調査票内容表示 | T_ISHOKU_KIHON_LIV系 |
| CSV出力 | /reportTransplant/csv |
調査票CSV出力 | T_ISHOKU_KIHON_LIV系 |
| PDF出力 | /reportTransplant/pdf |
調査票PDF出力 | T_ISHOKU_KIHON_LIV系 |
特徴: - 死体移植と生体移植の両方を扱う - 自施設のデータのみアクセス可能 - 学会ユーザー(institution_kubun=4)もアクセス可能
4. 移植施設機能(生体移植専用)- tracer¶
対象ユーザー: 生体移植専用施設(institution_kubun=3)
アクセス: https://tracer.example.com/
セキュリティ: 2要素認証(2FA)必須
| 機能 | URL | 説明 | 使用テーブル |
|---|---|---|---|
| 生体移植管理 | /livingDonorTransplant/* |
dddsと同一機能 | T_ISHOKU_KIHON_LIV系 |
| 調査票 | /reportTransplant/* |
dddsと同一機能 | T_ISHOKU_KIHON_LIV系 |
特徴: - 生体移植専用のサブドメイン - 2要素認証でセキュリティ強化 - データ移行時のメンテナンス機能実装済み
共通機能¶
認証機能¶
| 機能 | URL | 説明 | 使用テーブル |
|---|---|---|---|
| ログイン画面 | / または /auth |
ログイン画面表示 | - |
| ログイン処理 | /auth/login |
認証処理 | accountTbl, Doctortbl |
| ログアウト | /auth/logout |
ログアウト処理 | sessionTbl |
| パスワード変更 | /auth/changePassword |
パスワード変更 | accountTbl |
2要素認証(tracerのみ): - Cookieベースのトークン管理 - トークン有効期限: 30日
メニュー機能¶
| 機能 | URL | 説明 | 対象ユーザー |
|---|---|---|---|
| 本部メニュー | /headquarter/menu |
本部機能メニュー | 本部管理者 |
| コーディネータメニュー | /cordinator/donorList |
ドナー一覧(メニュー兼用) | コーディネータ |
| 移植施設メニュー | /transplant/menu |
移植施設機能メニュー | 移植施設ユーザー |
ログ機能¶
| 機能 | 説明 | 記録先 |
|---|---|---|
| アクセスログ | 全URLアクセスを記録 | accessLogTbl |
| SQLクエリログ | 実行SQLをDEBUG出力 | application/logs/ |
| アプリケーションログ | エラー・警告を記録 | application/logs/ |
| ダウンロードログ | ファイルダウンロードを記録 | fileDownLoadLogTbl |
機能別アクセス権限マトリクス¶
| 機能 | 本部 | コーディネータ | 移植施設(死体) | 移植施設(生体) | 学会 |
|---|---|---|---|---|---|
| アクセスログ管理 | ✓ | ✗ | ✗ | ✗ | ✗ |
| アカウント管理 | ✓ | ✗ | ✗ | ✗ | ✗ |
| BOX連携 | ✓ | ✗ | ✗ | ✗ | ✗ |
| ドナー登録 | ✗ | ✓ | ✗ | ✗ | ✗ |
| 死体移植管理 | 閲覧のみ | ✗ | ✓ | ✗ | ✓ |
| 生体移植管理 | 閲覧のみ | ✗ | ✓ | ✓ | ✓ |
| 調査票 | ✓ | ✗ | ✓ | ✓ | ✓ |
データアクセス制御¶
施設コード制御¶
各機能は、ログインユーザーのSISETU_CD(施設コード)に基づいてデータアクセスを制御します。
例: 生体移植検索:
// application/models/TIshokuKihonLiv.php
public function search($conditions, $account) {
// 自施設のデータのみ検索
$this->db->where('SISETU_CD', $account->SISETU_CD);
// 本部の場合は全施設
if ($account->account_type_mst_id === ACC_TYPE_HQ) {
$this->db->where('1', '1'); // 全データ
}
return $this->db->get(T_ISHOKU_KIHON_LIV)->result();
}
所属区分制御¶
application/controllers/common/Auth.php (line 136-139):
// 生体専用施設・学会のアクセス制御
if ($this->branch === APP_TRANSPLANT &&
$this->domain !== 'ddds' &&
in_array($account->institution_kubun, [
INSTITUTION_KUBUN_LIVING_DONOR, // 3: 生体専用
INSTITUTION_KUBUN_MANAGEMENT // 4: 学会
])) {
// ddds以外からのアクセスをブロック
show_error('アクセスが許可されていません', 403);
}
機能横断的な処理¶
CSVエクスポート¶
共通処理フロー:
sequenceDiagram
participant User as ユーザー
participant Controller as コントローラ
participant Model as モデル
participant DB as データベース
User->>Controller: CSV出力リクエスト
Controller->>Model: データ取得
Model->>DB: SELECT文実行
DB-->>Model: データ返却
Model-->>Controller: 結果セット
Controller->>Controller: CSV形式変換
Controller-->>User: CSVファイルダウンロード
実装例:
// application/controllers/common/LivingDonorTransplant.php
public function csv() {
// データ取得
$data = $this->TIshokuKihonLiv->search($conditions, $this->account);
// CSVヘッダー出力
header('Content-Type: text/csv; charset=UTF-8');
header('Content-Disposition: attachment; filename="living_transplant.csv"');
// CSV出力
$fp = fopen('php://output', 'w');
$this->exportAllCsv($data, $fp);
fclose($fp);
}
PDFエクスポート¶
使用ライブラリ: PDFLib
実装: /opt/services/DDDS/pdflib-ext/
PDF生成フロー: 1. データベースからデータ取得 2. PDFテンプレート読み込み 3. データ埋め込み 4. PDF生成・ダウンロード
バリデーション¶
共通バリデーションルール:
// application/controllers/common/LivingDonorTransplant.php
$this->form_validation->set_rules('ISYOKU_DATE', '移植日', 'required|callback_valid_date');
$this->form_validation->set_rules('HEIGHT', '身長', 'numeric|callback_valid_range[50,250]');
$this->form_validation->set_rules('WEIGHT', '体重', 'numeric|callback_valid_range[10,200]');
スコア自動計算機能¶
MELD/PELD/CTPスコア(肝臓移植)¶
実装: web/ddds/js/cadaveric_transplant/common.js
MELDスコア計算式:
// line 718
meldScore = 9.57 * Math.log(creatinine) +
3.78 * Math.log(tbil) +
11.2 * Math.log(ptInr) +
6.43;
PELDスコア計算式:
計算タイミング: - 画面表示時: DBから取得した値を表示 - フィールド変更時: JavaScriptで再計算 - 保存時: 計算値をDBに保存