コンテンツにスキップ

ER図(Entity Relationship Diagram)

概要

DDDSシステムのデータベース構造を可視化したER図です。死体移植と生体移植でテーブルが分離されています。

全体構造

erDiagram
    accountTbl ||--o{ T_ISHOKU_KIHON : "creates"
    accountTbl ||--o{ T_ISHOKU_KIHON_LIV : "creates"
    accountTbl {
        int accountId PK
        string userCd
        string institutionCd FK
        int account_type_mst_id
        int admin_flg
        datetime created_at
        datetime updated_at
    }

    institutionMst ||--o{ accountTbl : "belongs_to"
    institutionMst ||--o{ T_ISHOKU_KIHON : "performs"
    institutionMst ||--o{ T_ISHOKU_KIHON_LIV : "performs"
    institutionMst {
        string SISETU_CD PK
        string institution_name
        int institution_kubun
        string BLOCK_CD FK
        string PREF_CD FK
    }

    blockMst ||--o{ institutionMst : "contains"
    blockMst {
        string BLOCK_CD PK
        string BLOCK_NAME
    }

    prefMst ||--o{ institutionMst : "located_in"
    prefMst {
        string PREF_CD PK
        string PREF_NAME
        string BLOCK_CD FK
    }

生体移植テーブル構造

基本情報とドナー情報

erDiagram
    T_ISHOKU_KIHON_LIV ||--|| T_ISHOKU_KIHON_LIVER_LIV : "has_liver_detail"
    T_ISHOKU_KIHON_LIV ||--|| T_ISHOKU_KIHON_KIDNEY_LIV : "has_kidney_detail"
    T_ISHOKU_KIHON_LIV ||--|| T_ISHOKU_KIHON_LUNG_LIV : "has_lung_detail"
    T_ISHOKU_KIHON_LIV ||--o{ T_DONOR_LIV : "has_donors"
    T_ISHOKU_KIHON_LIV ||--|| T_NYURYOKUJOKYO_LIV : "has_status"
    T_ISHOKU_KIHON_LIV ||--o| T_TRACER_IKO : "migrated_from"

    T_ISHOKU_KIHON_LIV {
        int SEITAI_ISYOKU_ID PK "生体移植ID"
        string TRACER_ID "TRACER連携ID"
        string RECIPIENT_ID "レシピエントID"
        string SISETU_CD FK "施設コード"
        string ZOKI_CODE "臓器コード"
        int ISYOKU_CNT "移植回数"
        date ISYOKU_DATE "移植日"
        datetime CREATED_AT
        datetime UPDATED_AT
    }

    T_DONOR_LIV ||--|| T_DONOR_LIVER_LIV : "liver_details"
    T_DONOR_LIV ||--|| T_DONOR_KIDNEY_LIV : "kidney_details"
    T_DONOR_LIV {
        int DONOR_A_ID PK "ドナーID"
        int SEITAI_ISYOKU_ID FK "生体移植ID"
        string DONOR_ID "ドナー識別子"
        date BIRTHDAY "生年月日"
        int SEX "性別"
        string BLOOD_TYPE "血液型"
        datetime CREATED_AT
        datetime UPDATED_AT
    }

    T_ISHOKU_KIHON_LIVER_LIV {
        int SEITAI_ISHOKU_LIVER_ID PK
        int SEITAI_ISYOKU_ID FK "生体移植ID"
        decimal HEIGHT "身長"
        decimal WEIGHT "体重"
        decimal BMI
        int MELD_SCORE "MELDスコア"
        int PELD_SCORE "PELDスコア"
        int CTP_SCORE "CTPスコア"
        datetime CREATED_AT
        datetime UPDATED_AT
    }

    T_ISHOKU_KIHON_KIDNEY_LIV {
        int SEITAI_ISHOKU_KIDNEY_ID PK
        int SEITAI_ISYOKU_ID FK "生体移植ID"
        int TOSEKI_KIKAN "透析期間(月)"
        decimal DONOR_CR "ドナークレアチニン"
        decimal DONOR_EGFR "ドナーeGFR"
        datetime CREATED_AT
        datetime UPDATED_AT
    }

    T_NYURYOKUJOKYO_LIV {
        int NYURYOKUJOKYO_ID PK
        int SEITAI_ISYOKU_ID FK
        int INPUT_STATUS_RECIPENT "受者入力状況"
        int INPUT_STATUS_DONOR "ドナー入力状況"
        datetime UPDATED_AT
    }

    T_TRACER_IKO {
        int ID PK
        string TRACER_ID "旧TRACER_ID"
        string ZOKI_CODE "臓器コード"
        int SEITAI_ISYOKU_ID FK "新ID"
        string ISHOKU_TOROKU_ID "旧登録ID"
        int RECNO "旧レコード番号"
    }

受者追跡情報

erDiagram
    T_ISHOKU_KIHON_LIV ||--o{ T_LIVING_R_LIV : "has_follow_up"
    T_ISHOKU_KIHON_LIV ||--o{ T_REJECTION_R_LIV : "has_rejection"
    T_ISHOKU_KIHON_LIV ||--o{ T_GAPPEI_R_LIV : "has_complications"
    T_ISHOKU_KIHON_LIV ||--o{ T_IJI_MENEKI_YOKUSEI_R_LIV : "has_immunosuppression"
    T_ISHOKU_KIHON_LIV ||--o{ T_KANSEN_R_LIV : "has_infection"
    T_ISHOKU_KIHON_LIV ||--o{ T_KENSA_R_LIV : "has_lab_tests"

    T_LIVING_R_LIV {
        int RECIPIENT_LIVING_ID PK
        int SEITAI_ISYOKU_ID FK
        date KIROKU_DATE "記録日"
        int SEIKA_STATUS "生着状態"
        int SURVIVAL_STATUS "生存状態"
        datetime CREATED_AT
    }

    T_REJECTION_R_LIV {
        int RECIPIENT_REJECTION_ID PK
        int SEITAI_ISYOKU_ID FK
        date HASSEI_DATE "発生日"
        int KYOZETSU_TYPE "拒絶反応タイプ"
        datetime CREATED_AT
    }

    T_GAPPEI_R_LIV {
        int RECIPIENT_GAPPEI_ID PK
        int SEITAI_ISYOKU_ID FK
        date HASSEI_DATE "発生日"
        string GAPPEI_NAME "合併症名"
        datetime CREATED_AT
    }

    T_IJI_MENEKI_YOKUSEI_R_LIV {
        int RECIPIENT_MENEKI_ID PK
        int SEITAI_ISYOKU_ID FK
        date KIROKU_DATE "記録日"
        string YAKUZAI_NAME "薬剤名"
        decimal DOSE "用量"
        datetime CREATED_AT
    }

    T_KANSEN_R_LIV {
        int RECIPIENT_KANSEN_ID PK
        int SEITAI_ISYOKU_ID FK
        date HASSEI_DATE "発生日"
        string KANSEN_NAME "感染症名"
        datetime CREATED_AT
    }

    T_KENSA_R_LIV {
        int RECIPIENT_KENSA_ID PK
        int SEITAI_ISYOKU_ID FK
        date KENSA_DATE "検査日"
        string KENSA_NAME "検査名"
        decimal KENSA_VALUE "検査値"
        datetime CREATED_AT
    }

ドナー追跡情報

erDiagram
    T_DONOR_LIV ||--o{ T_LIVING_D_LIV : "has_follow_up"
    T_DONOR_LIV ||--o{ T_GAPPEI_D_LIV : "has_complications"
    T_DONOR_LIV ||--o{ T_KENSA_D_LIV : "has_lab_tests"

    T_DONOR_LIVER_LIV {
        int DONOR_LIVER_ID PK
        int DONOR_A_ID FK
        decimal DONOR_HEIGHT "身長"
        decimal DONOR_WEIGHT "体重"
        decimal DONOR_BMI
        datetime CREATED_AT
    }

    T_DONOR_KIDNEY_LIV {
        int DONOR_KIDNEY_ID PK
        int DONOR_A_ID FK
        decimal DONOR_CR "クレアチニン"
        decimal DONOR_EGFR "eGFR"
        string DONOR_SIDE "摘出側(R/L)"
        datetime CREATED_AT
    }

    T_LIVING_D_LIV {
        int DONOR_LIVING_ID PK
        int DONOR_A_ID FK
        date KIROKU_DATE "記録日"
        int SURVIVAL_STATUS "生存状態"
        datetime CREATED_AT
    }

    T_GAPPEI_D_LIV {
        int DONOR_GAPPEI_ID PK
        int DONOR_A_ID FK
        date HASSEI_DATE "発生日"
        string GAPPEI_NAME "合併症名"
        datetime CREATED_AT
    }

    T_KENSA_D_LIV {
        int DONOR_KENSA_ID PK
        int DONOR_A_ID FK
        date KENSA_DATE "検査日"
        string KENSA_NAME "検査名"
        decimal KENSA_VALUE "検査値"
        datetime CREATED_AT
    }

死体移植テーブル構造

基本情報とドナー情報

erDiagram
    T_ISHOKU_KIHON ||--|| T_ISHOKU_KIHON_LIVER : "has_liver_detail"
    T_ISHOKU_KIHON ||--|| T_ISHOKU_KIHON_KIDNEY : "has_kidney_detail"
    T_ISHOKU_KIHON ||--|| T_ISHOKU_KIHON_HEART : "has_heart_detail"
    T_ISHOKU_KIHON ||--|| T_ISHOKU_KIHON_LUNG : "has_lung_detail"
    T_ISHOKU_KIHON ||--|| T_ISHOKU_KIHON_PANCREAS : "has_pancreas_detail"
    T_ISHOKU_KIHON ||--|| T_ISHOKU_KIHON_SMALL_INTESTINE : "has_intestine_detail"
    T_ISHOKU_KIHON ||--o| T_DONOR : "from_donor"
    T_ISHOKU_KIHON ||--|| T_NYURYOKUJOKYO : "has_status"

    T_ISHOKU_KIHON {
        int SITAI_ISYOKU_ID PK "死体移植ID"
        string SISETU_CD FK "施設コード"
        string ZOKI_CODE "臓器コード"
        int ISYOKU_CNT "移植回数"
        date ISYOKU_DATE "移植日"
        string JOT_ID "JOT_ID"
        datetime CREATED_AT
        datetime UPDATED_AT
    }

    T_DONOR {
        int DONOR_ID PK "ドナーID"
        string JOT_ID "JOT_ID"
        date BIRTHDAY "生年月日"
        int SEX "性別"
        string BLOOD_TYPE "血液型"
        datetime CREATED_AT
    }

    T_NYURYOKUJOKYO {
        int NYURYOKUJOKYO_ID PK
        int SITAI_ISYOKU_ID FK
        int INPUT_STATUS "入力状況"
        datetime UPDATED_AT
    }

AMED出力テーブル

erDiagram
    T_ISHOKU_KIHON_LIVER_LIV ||--o| AMED_LIVER : "aggregated_to"
    T_ISHOKU_KIHON_KIDNEY_LIV ||--o| AMED_KIDNEY : "aggregated_to"

    AMED_LIVER {
        int ID PK
        string RECIPIENT_ID FK "レシピエントID"
        int SEITAI_ISYOKU_ID FK "生体移植ID"
        date ISYOKU_DATE "移植日"
        string SISETU_NAME "施設名"
        int MELD_SCORE "MELDスコア"
        int GRAFT_TYPE "グラフトタイプ"
        datetime CREATED_AT
    }

    AMED_KIDNEY {
        int ID PK
        string RECIPIENT_ID FK "レシピエントID"
        int SEITAI_ISYOKU_ID FK "生体移植ID"
        date ISYOKU_DATE "移植日"
        string SISETU_NAME "施設名"
        int TOSEKI_KIKAN "透析期間"
        datetime CREATED_AT
    }

マスタテーブル

erDiagram
    mcd_mst {
        int MCD_ID PK
        string CODE_TYPE "コードタイプ"
        string CODE "コード"
        string VALUE "値"
        string VALUE2 "値2"
        int DISPLAY_ORDER "表示順"
    }

    statusMst {
        int STATUS_ID PK
        string STATUS_NAME "ステータス名"
        int DISPLAY_ORDER
    }

    workMst {
        int WORK_ID PK
        string WORK_NAME "作業名"
        int DISPLAY_ORDER
    }

    accountTypeMst {
        int ACCOUNT_TYPE_ID PK
        string ACCOUNT_TYPE_NAME "アカウント種別"
    }

ログテーブル

erDiagram
    accessLogTbl {
        int LOG_ID PK
        int accountId FK
        string REQUEST_URI "リクエストURI"
        string IP_ADDRESS "IPアドレス"
        datetime ACCESS_TIME "アクセス時刻"
    }

    sessionTbl {
        string id PK "セッションID"
        string ip_address "IPアドレス"
        int timestamp "タイムスタンプ"
        text data "セッションデータ"
    }

    fileDownLoadLogTbl {
        int LOG_ID PK
        int accountId FK
        string FILE_NAME "ファイル名"
        datetime DOWNLOAD_TIME "ダウンロード時刻"
    }

テーブル命名規則

プレフィックス 用途
T_ トランザクションテーブル T_ISHOKU_KIHON
_LIV 生体移植専用テーブル(サフィックス) T_ISHOKU_KIHON_LIV
_R_LIV 受者追跡情報(生体) T_LIVING_R_LIV
_D_LIV ドナー追跡情報(生体) T_LIVING_D_LIV
AMED_ AMED出力用要約テーブル AMED_LIVER
Mst マスタテーブル(サフィックス) statusMst
Tbl 管理系テーブル(サフィックス) accountTbl

キー項目

主要キー

キー項目 説明 使用テーブル
SEITAI_ISYOKU_ID 生体移植ID(PK) T_ISHOKU_KIHON_LIV系
SITAI_ISYOKU_ID 死体移植ID(PK) T_ISHOKU_KIHON系
DONOR_A_ID ドナーID(生体) T_DONOR_LIV系
DONOR_ID ドナーID(死体) T_DONOR系
TRACER_ID TRACER連携ID T_TRACER_IKO, T_ISHOKU_KIHON_LIV
RECIPIENT_ID レシピエントID T_ISHOKU_KIHON_LIV
JOT_ID JOT識別ID T_ISHOKU_KIHON, T_DONOR
SISETU_CD 施設コード(FK) 全移植テーブル

外部キー制約

生体移植

-- 基本情報 → 臓器別詳細
ALTER TABLE T_ISHOKU_KIHON_LIVER_LIV
  ADD CONSTRAINT FK_LIVER_LIV_KIHON
  FOREIGN KEY (SEITAI_ISYOKU_ID)
  REFERENCES T_ISHOKU_KIHON_LIV(SEITAI_ISYOKU_ID)
  ON DELETE CASCADE;

-- 基本情報 → ドナー情報
ALTER TABLE T_DONOR_LIV
  ADD CONSTRAINT FK_DONOR_LIV_KIHON
  FOREIGN KEY (SEITAI_ISYOKU_ID)
  REFERENCES T_ISHOKU_KIHON_LIV(SEITAI_ISYOKU_ID)
  ON DELETE CASCADE;

-- ドナー基本 → ドナー詳細
ALTER TABLE T_DONOR_LIVER_LIV
  ADD CONSTRAINT FK_DONOR_LIVER_LIV_DONOR
  FOREIGN KEY (DONOR_A_ID)
  REFERENCES T_DONOR_LIV(DONOR_A_ID)
  ON DELETE CASCADE;

死体移植

-- 基本情報 → 臓器別詳細
ALTER TABLE T_ISHOKU_KIHON_LIVER
  ADD CONSTRAINT FK_LIVER_KIHON
  FOREIGN KEY (SITAI_ISYOKU_ID)
  REFERENCES T_ISHOKU_KIHON(SITAI_ISYOKU_ID)
  ON DELETE CASCADE;

インデックス

検索性能最適化

-- 施設コード + 移植日でのソート
CREATE INDEX IDX_KIHON_LIV_SISETU_DATE
  ON T_ISHOKU_KIHON_LIV(SISETU_CD, ISYOKU_DATE);

-- TRACER_IDでの検索
CREATE INDEX IDX_KIHON_LIV_TRACER
  ON T_ISHOKU_KIHON_LIV(TRACER_ID);

-- レシピエントIDでの検索
CREATE INDEX IDX_KIHON_LIV_RECIPIENT
  ON T_ISHOKU_KIHON_LIV(RECIPIENT_ID);

関連ドキュメント