運用フロー
概要
DDDSシステムにおける臓器移植の運用フローを、ステータス遷移とデータベース書き込みタイミングを含めて解説します。
生体移植共通フロー
基本フロー
stateDiagram-v2
[*] --> 新規登録: レシピエント情報登録
新規登録 --> 移植前評価: 基本情報入力完了
移植前評価 --> ドナー評価: ドナー情報登録
ドナー評価 --> 移植実施: 移植手術実施
移植実施 --> 経過観察1年目: 移植完了
経過観察1年目 --> 経過観察2年目: 1年後フォロー完了
経過観察2年目 --> 経過観察3年目: 2年後フォロー完了
経過観察3年目 --> 経過観察5年目: 3年後フォロー完了
経過観察5年目 --> 完了: 5年後フォロー完了
完了 --> [*]
note right of 新規登録
DB: T_ISHOKU_KIHON_LIV
Status: 0 (未入力)
end note
note right of 移植実施
DB: T_ISHOKU_KIHON_*_LIV
Status: 1 (入力中)
end note
note right of 完了
Status: 9 (完了)
end note
データ書き込みタイミング
sequenceDiagram
participant User as ユーザー
participant Screen as 画面
participant Controller as コントローラ
participant Model as モデル
participant DB as データベース
User->>Screen: レシピエント情報入力
Screen->>Controller: POST /livingDonorTransplant/recipient
Controller->>Controller: バリデーション
Controller->>Screen: 確認画面表示
User->>Screen: 登録確認
Screen->>Controller: POST /livingDonorTransplant/confRecipient
Controller->>Model: T_ISHOKU_KIHON_LIV::insert()
Model->>DB: INSERT INTO T_ISHOKU_KIHON_LIV
DB-->>Model: SEITAI_ISYOKU_ID取得
Model-->>Controller: 登録完了
Controller->>Model: T_ISHOKU_KIHON_*_LIV::insert()
Model->>DB: INSERT INTO T_ISHOKU_KIHON_LIVER_LIV等
DB-->>Model: OK
Model-->>Controller: 登録完了
Controller->>Model: T_NYURYOKUJOKYO_LIV::insert()
Model->>DB: INSERT INTO T_NYURYOKUJOKYO_LIV
DB-->>Model: OK
Model-->>Controller: 登録完了
Controller-->>Screen: 登録完了メッセージ
Screen-->>User: 登録完了表示
肝臓移植運用フロー
詳細フロー
flowchart TD
START([開始]) --> INPUT_RECIPIENT[レシピエント基本情報入力]
INPUT_RECIPIENT --> DB_KIHON_LIV[(T_ISHOKU_KIHON_LIV<br/>SEITAI_ISYOKU_ID生成<br/>Status: 0)]
DB_KIHON_LIV --> INPUT_LIVER[肝臓移植詳細入力]
INPUT_LIVER --> CALC_SCORES[スコア自動計算<br/>MELD/PELD/CTP]
CALC_SCORES --> DB_LIVER[(T_ISHOKU_KIHON_LIVER_LIV<br/>MELD_SCORE<br/>PELD_SCORE<br/>CTP_SCORE)]
DB_LIVER --> INPUT_DONOR[ドナー情報入力]
INPUT_DONOR --> DB_DONOR_LIV[(T_DONOR_LIV<br/>DONOR_A_ID生成)]
DB_DONOR_LIV --> DB_DONOR_LIVER[(T_DONOR_LIVER_LIV<br/>ドナー詳細情報)]
DB_DONOR_LIVER --> TRANSPLANT[移植手術実施]
TRANSPLANT --> UPDATE_STATUS1[(T_NYURYOKUJOKYO_LIV<br/>Status: 1 → 2<br/>受者・ドナー入力完了)]
UPDATE_STATUS1 --> FOLLOW_3M{3ヶ月後<br/>フォロー}
FOLLOW_3M --> DB_LIVING_R_3M[(T_LIVING_R_LIV<br/>KIROKU_DATE: +3ヶ月<br/>SEIKA_STATUS<br/>SURVIVAL_STATUS)]
DB_LIVING_R_3M --> REJECTION_CHECK{拒絶反応<br/>あり?}
REJECTION_CHECK -->|あり| DB_REJECTION[(T_REJECTION_R_LIV<br/>拒絶反応記録)]
REJECTION_CHECK -->|なし| COMPLICATION_CHECK
DB_REJECTION --> COMPLICATION_CHECK{合併症<br/>あり?}
COMPLICATION_CHECK -->|あり| DB_COMPLICATION[(T_GAPPEI_R_LIV<br/>合併症記録)]
COMPLICATION_CHECK -->|なし| LAB_TEST
DB_COMPLICATION --> LAB_TEST[血液検査実施]
LAB_TEST --> DB_LAB[(T_KENSA_R_LIV<br/>検査値記録)]
DB_LAB --> IMMUNOSUPPRESSION[免疫抑制剤記録]
IMMUNOSUPPRESSION --> DB_IMMUNO[(T_IJI_MENEKI_YOKUSEI_R_LIV<br/>薬剤情報)]
DB_IMMUNO --> FOLLOW_6M{6ヶ月後<br/>フォロー}
FOLLOW_6M --> DB_LIVING_R_6M[(T_LIVING_R_LIV<br/>KIROKU_DATE: +6ヶ月)]
DB_LIVING_R_6M --> FOLLOW_1Y{1年後<br/>フォロー}
FOLLOW_1Y --> DB_LIVING_R_1Y[(T_LIVING_R_LIV<br/>KIROKU_DATE: +1年)]
DB_LIVING_R_1Y --> UPDATE_STATUS2[(T_NYURYOKUJOKYO_LIV<br/>Status: 2 → 3<br/>1年フォロー完了)]
UPDATE_STATUS2 --> FOLLOW_2Y{2年後<br/>フォロー}
FOLLOW_2Y --> DB_LIVING_R_2Y[(T_LIVING_R_LIV<br/>KIROKU_DATE: +2年)]
DB_LIVING_R_2Y --> FOLLOW_3Y{3年後<br/>フォロー}
FOLLOW_3Y --> DB_LIVING_R_3Y[(T_LIVING_R_LIV<br/>KIROKU_DATE: +3年)]
DB_LIVING_R_3Y --> FOLLOW_5Y{5年後<br/>フォロー}
FOLLOW_5Y --> DB_LIVING_R_5Y[(T_LIVING_R_LIV<br/>KIROKU_DATE: +5年)]
DB_LIVING_R_5Y --> UPDATE_STATUS_COMPLETE[(T_NYURYOKUJOKYO_LIV<br/>Status: 3 → 9<br/>完了)]
UPDATE_STATUS_COMPLETE --> AMED_OUTPUT[AMED要約データ生成]
AMED_OUTPUT --> DB_AMED[(AMED_LIVER<br/>要約データ)]
DB_AMED --> END([完了])
style DB_KIHON_LIV fill:#e1f5ff
style DB_LIVER fill:#e1f5ff
style DB_DONOR_LIV fill:#ffe1e1
style DB_DONOR_LIVER fill:#ffe1e1
style DB_LIVING_R_3M fill:#e8f5e9
style DB_REJECTION fill:#fff9c4
style DB_COMPLICATION fill:#fff9c4
style DB_LAB fill:#f3e5f5
style DB_IMMUNO fill:#f3e5f5
style UPDATE_STATUS1 fill:#ffebee
style UPDATE_STATUS2 fill:#ffebee
style UPDATE_STATUS_COMPLETE fill:#ffebee
style DB_AMED fill:#e0f2f1
ドナー追跡フロー
flowchart TD
START([ドナー情報登録完了]) --> DONOR_FOLLOW_3M{3ヶ月後<br/>フォロー}
DONOR_FOLLOW_3M --> DB_LIVING_D_3M[(T_LIVING_D_LIV<br/>KIROKU_DATE: +3ヶ月<br/>SURVIVAL_STATUS)]
DB_LIVING_D_3M --> DONOR_COMPLICATION{合併症<br/>あり?}
DONOR_COMPLICATION -->|あり| DB_DONOR_COMPLICATION[(T_GAPPEI_D_LIV<br/>合併症記録)]
DONOR_COMPLICATION -->|なし| DONOR_LAB
DB_DONOR_COMPLICATION --> DONOR_LAB[血液検査実施]
DONOR_LAB --> DB_DONOR_LAB[(T_KENSA_D_LIV<br/>検査値記録)]
DB_DONOR_LAB --> DONOR_FOLLOW_1Y{1年後<br/>フォロー}
DONOR_FOLLOW_1Y --> DB_LIVING_D_1Y[(T_LIVING_D_LIV<br/>KIROKU_DATE: +1年)]
DB_LIVING_D_1Y --> DONOR_FOLLOW_5Y{5年後<br/>フォロー}
DONOR_FOLLOW_5Y --> DB_LIVING_D_5Y[(T_LIVING_D_LIV<br/>KIROKU_DATE: +5年)]
DB_LIVING_D_5Y --> END([完了])
style DB_LIVING_D_3M fill:#ffe1e1
style DB_DONOR_COMPLICATION fill:#fff9c4
style DB_DONOR_LAB fill:#f3e5f5
腎臓移植運用フロー
詳細フロー
flowchart TD
START([開始]) --> INPUT_RECIPIENT[レシピエント基本情報入力]
INPUT_RECIPIENT --> DB_KIHON_LIV[(T_ISHOKU_KIHON_LIV<br/>SEITAI_ISYOKU_ID生成<br/>Status: 0)]
DB_KIHON_LIV --> INPUT_KIDNEY[腎臓移植詳細入力]
INPUT_KIDNEY --> DIALYSIS_INFO[透析情報入力<br/>透析期間・透析方法]
DIALYSIS_INFO --> DB_KIDNEY[(T_ISHOKU_KIHON_KIDNEY_LIV<br/>TOSEKI_KIKAN<br/>TOSEKI_HOHO)]
DB_KIDNEY --> INPUT_DONOR[ドナー情報入力]
INPUT_DONOR --> DONOR_SIDE[摘出側指定<br/>R: 右 / L: 左]
DONOR_SIDE --> DB_DONOR_LIV[(T_DONOR_LIV<br/>DONOR_A_ID生成)]
DB_DONOR_LIV --> DB_DONOR_KIDNEY[(T_DONOR_KIDNEY_LIV<br/>DONOR_SIDE<br/>DONOR_CR<br/>DONOR_EGFR)]
DB_DONOR_KIDNEY --> TRANSPLANT[移植手術実施]
TRANSPLANT --> UPDATE_STATUS1[(T_NYURYOKUJOKYO_LIV<br/>Status: 1 → 2)]
UPDATE_STATUS1 --> FOLLOW_1M{1ヶ月後<br/>フォロー}
FOLLOW_1M --> KIDNEY_FUNCTION[腎機能検査]
KIDNEY_FUNCTION --> DB_LAB_CR[(T_KENSA_R_LIV<br/>KENSA_NAME: '血清Cr'<br/>KENSA_VALUE)]
DB_LAB_CR --> DB_LAB_PROTEIN[(T_KENSA_R_LIV<br/>KENSA_NAME: '尿蛋白'<br/>KENSA_VALUE)]
DB_LAB_PROTEIN --> DB_LIVING_R_1M[(T_LIVING_R_LIV<br/>KIROKU_DATE: +1ヶ月<br/>SEIKA_STATUS)]
DB_LIVING_R_1M --> REJECTION_CHECK{拒絶反応<br/>あり?}
REJECTION_CHECK -->|あり| DB_REJECTION[(T_REJECTION_R_LIV<br/>拒絶反応記録)]
REJECTION_CHECK -->|なし| FOLLOW_3M
DB_REJECTION --> FOLLOW_3M{3ヶ月後<br/>フォロー}
FOLLOW_3M --> DB_LIVING_R_3M[(T_LIVING_R_LIV<br/>KIROKU_DATE: +3ヶ月)]
DB_LIVING_R_3M --> FOLLOW_6M{6ヶ月後<br/>フォロー}
FOLLOW_6M --> DB_LIVING_R_6M[(T_LIVING_R_LIV<br/>KIROKU_DATE: +6ヶ月)]
DB_LIVING_R_6M --> FOLLOW_1Y{1年後<br/>フォロー}
FOLLOW_1Y --> DB_LIVING_R_1Y[(T_LIVING_R_LIV<br/>KIROKU_DATE: +1年)]
DB_LIVING_R_1Y --> UPDATE_STATUS2[(T_NYURYOKUJOKYO_LIV<br/>Status: 2 → 3)]
UPDATE_STATUS2 --> FOLLOW_2Y{2年後}
FOLLOW_2Y --> DB_LIVING_R_2Y[(T_LIVING_R_LIV<br/>+2年)]
DB_LIVING_R_2Y --> FOLLOW_3Y{3年後}
FOLLOW_3Y --> DB_LIVING_R_3Y[(T_LIVING_R_LIV<br/>+3年)]
DB_LIVING_R_3Y --> FOLLOW_5Y{5年後}
FOLLOW_5Y --> DB_LIVING_R_5Y[(T_LIVING_R_LIV<br/>+5年)]
DB_LIVING_R_5Y --> UPDATE_STATUS_COMPLETE[(T_NYURYOKUJOKYO_LIV<br/>Status: 9 完了)]
UPDATE_STATUS_COMPLETE --> AMED_OUTPUT[AMED要約データ生成]
AMED_OUTPUT --> DB_AMED[(AMED_KIDNEY<br/>要約データ)]
DB_AMED --> END([完了])
style DB_KIHON_LIV fill:#e1f5ff
style DB_KIDNEY fill:#e1f5ff
style DB_DONOR_LIV fill:#ffe1e1
style DB_DONOR_KIDNEY fill:#ffe1e1
style DB_LAB_CR fill:#f3e5f5
style DB_LAB_PROTEIN fill:#f3e5f5
style UPDATE_STATUS1 fill:#ffebee
style UPDATE_STATUS2 fill:#ffebee
style UPDATE_STATUS_COMPLETE fill:#ffebee
style DB_AMED fill:#e0f2f1
心臓移植運用フロー(死体移植)
詳細フロー
flowchart TD
START([JOTからドナー情報受信]) --> DONOR_MATCH[ドナー・レシピエントマッチング]
DONOR_MATCH --> DB_DONOR[(T_DONOR<br/>JOT_ID<br/>ドナー基本情報)]
DB_DONOR --> INPUT_RECIPIENT[レシピエント情報入力]
INPUT_RECIPIENT --> DB_KIHON[(T_ISHOKU_KIHON<br/>SITAI_ISYOKU_ID生成<br/>JOT_ID紐付け)]
DB_KIHON --> INPUT_HEART[心臓移植詳細入力]
INPUT_HEART --> DB_HEART[(T_ISHOKU_KIHON_HEART<br/>心機能データ<br/>EF, LVEDD等)]
DB_HEART --> TRANSPLANT[移植手術実施]
TRANSPLANT --> UPDATE_STATUS1[(T_NYURYOKUJOKYO<br/>Status: 1 → 2)]
UPDATE_STATUS1 --> FOLLOW_1M{1ヶ月後}
FOLLOW_1M --> CARDIAC_FUNCTION[心機能検査]
CARDIAC_FUNCTION --> DB_LAB[(検査値記録<br/>EF, BNP等)]
DB_LAB --> REJECTION_CHECK{拒絶反応<br/>あり?}
REJECTION_CHECK -->|あり| BIOPSY[心筋生検実施]
REJECTION_CHECK -->|なし| FOLLOW_3M
BIOPSY --> DB_REJECTION[(拒絶反応記録)]
DB_REJECTION --> FOLLOW_3M{3ヶ月後}
FOLLOW_3M --> FOLLOW_6M{6ヶ月後}
FOLLOW_6M --> FOLLOW_1Y{1年後}
FOLLOW_1Y --> UPDATE_STATUS2[(Status: 2 → 3)]
UPDATE_STATUS2 --> FOLLOW_2Y{2年後}
FOLLOW_2Y --> FOLLOW_3Y{3年後}
FOLLOW_3Y --> FOLLOW_5Y{5年後}
FOLLOW_5Y --> UPDATE_STATUS_COMPLETE[(Status: 9 完了)]
UPDATE_STATUS_COMPLETE --> END([完了])
style DB_DONOR fill:#ffe1e1
style DB_KIHON fill:#e1f5ff
style DB_HEART fill:#e1f5ff
style UPDATE_STATUS1 fill:#ffebee
style UPDATE_STATUS2 fill:#ffebee
style UPDATE_STATUS_COMPLETE fill:#ffebee
肺移植運用フロー(生体移植)
詳細フロー
flowchart TD
START([開始]) --> INPUT_RECIPIENT[レシピエント基本情報入力]
INPUT_RECIPIENT --> DB_KIHON_LIV[(T_ISHOKU_KIHON_LIV)]
DB_KIHON_LIV --> INPUT_LUNG[肺移植詳細入力]
INPUT_LUNG --> RESPIRATORY_FUNCTION[呼吸機能検査<br/>FEV1, FVC等]
RESPIRATORY_FUNCTION --> DB_LUNG[(T_ISHOKU_KIHON_LUNG_LIV<br/>呼吸機能データ)]
DB_LUNG --> INPUT_DONOR1[ドナー1情報入力<br/>右肺提供]
INPUT_DONOR1 --> DB_DONOR1[(T_DONOR_LIV<br/>DONOR_A_ID=1)]
DB_DONOR1 --> INPUT_DONOR2[ドナー2情報入力<br/>左肺提供]
INPUT_DONOR2 --> DB_DONOR2[(T_DONOR_LIV<br/>DONOR_A_ID=2)]
DB_DONOR2 --> DB_DONOR_LUNG1[(T_DONOR_LUNG_LIV<br/>ドナー1詳細)]
DB_DONOR_LUNG1 --> DB_DONOR_LUNG2[(T_DONOR_LUNG_LIV<br/>ドナー2詳細)]
DB_DONOR_LUNG2 --> TRANSPLANT[移植手術実施]
TRANSPLANT --> UPDATE_STATUS1[(T_NYURYOKUJOKYO_LIV<br/>Status: 1 → 2)]
UPDATE_STATUS1 --> FOLLOW_1W{1週間後}
FOLLOW_1W --> XRAY_CT[胸部X線・CT検査]
XRAY_CT --> DB_IMAGE[(画像検査記録)]
DB_IMAGE --> RESPIRATORY_TEST[呼吸機能検査]
RESPIRATORY_TEST --> DB_LAB[(T_KENSA_R_LIV<br/>FEV1, SpO2等)]
DB_LAB --> REJECTION_CHECK{急性拒絶<br/>あり?}
REJECTION_CHECK -->|あり| BRONCHOSCOPY[気管支鏡検査]
REJECTION_CHECK -->|なし| FOLLOW_1M
BRONCHOSCOPY --> DB_REJECTION[(T_REJECTION_R_LIV)]
DB_REJECTION --> FOLLOW_1M{1ヶ月後}
FOLLOW_1M --> FOLLOW_3M{3ヶ月後}
FOLLOW_3M --> FOLLOW_6M{6ヶ月後}
FOLLOW_6M --> FOLLOW_1Y{1年後}
FOLLOW_1Y --> UPDATE_STATUS2[(Status: 2 → 3)]
UPDATE_STATUS2 --> CHRONIC_CHECK{慢性拒絶<br/>チェック}
CHRONIC_CHECK -->|BOS疑い| DB_BOS[(閉塞性細気管支炎<br/>記録)]
CHRONIC_CHECK -->|正常| FOLLOW_2Y
DB_BOS --> FOLLOW_2Y{2年後}
FOLLOW_2Y --> FOLLOW_3Y{3年後}
FOLLOW_3Y --> FOLLOW_5Y{5年後}
FOLLOW_5Y --> UPDATE_STATUS_COMPLETE[(Status: 9 完了)]
UPDATE_STATUS_COMPLETE --> END([完了])
style DB_KIHON_LIV fill:#e1f5ff
style DB_LUNG fill:#e1f5ff
style DB_DONOR1 fill:#ffe1e1
style DB_DONOR2 fill:#ffe1e1
style UPDATE_STATUS1 fill:#ffebee
style UPDATE_STATUS2 fill:#ffebee
style UPDATE_STATUS_COMPLETE fill:#ffebee
ステータス定義
入力状況ステータス(T_NYURYOKUJOKYO_LIV/T_NYURYOKUJOKYO)
| Status |
状態 |
説明 |
| 0 |
未入力 |
基本情報のみ登録 |
| 1 |
入力中 |
受者またはドナー情報入力中 |
| 2 |
入力完了 |
移植実施、経過観察開始 |
| 3 |
1年フォロー完了 |
1年後フォロー完了 |
| 4 |
2年フォロー完了 |
2年後フォロー完了 |
| 5 |
3年フォロー完了 |
3年後フォロー完了 |
| 9 |
完了 |
5年フォロー完了、データ確定 |
生着状態(SEIKA_STATUS)
| Code |
状態 |
説明 |
| 1 |
良好 |
グラフト機能正常 |
| 2 |
低下 |
グラフト機能低下 |
| 3 |
喪失 |
グラフト喪失 |
| 9 |
不明 |
追跡不能 |
生存状態(SURVIVAL_STATUS)
| Code |
状態 |
説明 |
| 1 |
生存 |
生存確認 |
| 2 |
死亡 |
死亡確認 |
| 9 |
不明 |
追跡不能 |
DB書き込みトリガー
自動書き込み
| タイミング |
テーブル |
カラム |
値 |
| レコード作成時 |
全テーブル |
CREATED_AT |
NOW() |
| レコード更新時 |
全テーブル |
UPDATED_AT |
NOW() |
| 新規移植登録 |
T_ISHOKU_KIHON_LIV |
SEITAI_ISYOKU_ID |
AUTO_INCREMENT |
| ドナー登録 |
T_DONOR_LIV |
DONOR_A_ID |
AUTO_INCREMENT |
手動書き込み(画面操作)
| タイミング |
テーブル |
操作 |
| 受者情報確認ボタン |
T_ISHOKU_KIHON_LIV, T_ISHOKU_KIHON_*_LIV |
INSERT/UPDATE |
| ドナー情報確認ボタン |
T_DONOR_LIV, T_DONOR_*_LIV |
INSERT/UPDATE |
| 経過観察データ保存 |
T_LIVING_R_LIV, T_LIVING_D_LIV |
INSERT/UPDATE |
| 検査値入力保存 |
T_KENSA_R_LIV, T_KENSA_D_LIV |
INSERT |
| 合併症登録 |
T_GAPPEI_R_LIV, T_GAPPEI_D_LIV |
INSERT |
バッチ処理
| タイミング |
テーブル |
処理内容 |
| 日次バッチ |
AMED_LIVER, AMED_KIDNEY |
要約データ生成 |
| 月次バッチ |
T_NYURYOKUJOKYO_LIV |
ステータス自動更新チェック |
関連ドキュメント