コンテンツにスキップ

アーキテクチャ概要

システム全体像

DDDSシステムは、臓器提供・移植データを管理する業務システムで、サブドメイン別に役割が分離された構成になっています。

graph TB
    subgraph "ユーザー"
        HQ[本部ユーザー]
        CO[コーディネータ]
        TP[移植施設ユーザー]
    end

    subgraph "DDDSシステム"
        HDQRS[hdqrs サブドメイン<br/>本部機能]
        BRNCH[brnch サブドメイン<br/>コーディネータ機能]
        DDDS[ddds サブドメイン<br/>移植施設機能]
        TRACER[tracer サブドメイン<br/>生体移植機能]
    end

    subgraph "外部システム"
        BOX[BOX API]
        EDC[EDCシステム]
    end

    subgraph "データストア"
        DB[(MySQL Database)]
        SESSION[(Session Store)]
    end

    HQ --> HDQRS
    CO --> BRNCH
    TP --> DDDS
    TP --> TRACER

    HDQRS --> DB
    BRNCH --> DB
    DDDS --> DB
    TRACER --> DB

    HDQRS -.-> SESSION
    BRNCH -.-> SESSION
    DDDS -.-> SESSION
    TRACER -.-> SESSION

    HDQRS <--> BOX
    HDQRS <--> EDC

アーキテクチャの特徴

1. マルチサブドメイン構成

各サブドメインが独立した機能を提供し、アクセス制御を実現しています。

サブドメイン ブランチ定数 主要機能 対象ユーザー
hdqrs APP_HEAD 本部管理、BOX連携、バッチ処理 本部管理者
brnch APP_CORDINATOR ドナー情報管理 コーディネータ
ddds APP_TRANSPLANT 死体移植・生体移植管理 移植施設ユーザー
tracer APP_TRANSLIVE 生体移植管理(2FA) 移植施設ユーザー(生体)

2. MVCパターン

CodeIgniter 3のMVCフレームワークを採用しています。

application/
├── controllers/     # ビジネスロジック、リクエストハンドリング
│   ├── common/      # 共通コントローラ
│   ├── headquarter/ # 本部専用コントローラ
│   ├── cordinator/  # コーディネータ専用コントローラ
│   └── transplant/  # 移植施設専用コントローラ
├── models/          # データアクセス層
├── views/           # プレゼンテーション層
│   ├── common/      # 共通ビュー
│   ├── headquarter/
│   ├── cordinator/
│   └── transplant/
└── hooks/           # フック処理(認証・ログ)

3. データベース構造

  • トランザクションテーブル: 死体移植と生体移植でテーブルを分離
  • 死体移植: T_ISHOKU_KIHONT_DONOR など
  • 生体移植: T_ISHOKU_KIHON_LIVT_DONOR_LIV など(サフィックス _LIV
  • マスタテーブル: 全機能で共通利用
  • accountTblinstitutionMstmcd_mst など

4. セキュリティ層

graph LR
    REQUEST[HTTPリクエスト] --> CSRF[CSRF検証]
    CSRF --> AUTH[認証チェック]
    AUTH --> ACL[権限チェック]
    ACL --> CONTROLLER[コントローラ]
    CONTROLLER --> LOG[アクセスログ]
  • CSRF保護: トークンベースの保護(一部エンドポイント除外)
  • セッション管理: DBベースのセッション、HTTPOnly Cookie
  • フック処理: hooks/配下で認証・認可・ログ記録を一元管理

5. レイヤー構造

graph TB
    subgraph "プレゼンテーション層"
        VIEW[Views<br/>HTML/JavaScript/CSS]
    end

    subgraph "アプリケーション層"
        CTRL[Controllers<br/>ビジネスロジック]
        HOOK[Hooks<br/>認証・認可・ログ]
    end

    subgraph "データアクセス層"
        MODEL[Models<br/>CRUD操作]
    end

    subgraph "データ層"
        DB[(Database<br/>MySQL)]
    end

    VIEW --> CTRL
    CTRL --> HOOK
    CTRL --> MODEL
    MODEL --> DB

技術的な設計方針

コード規約

  • 命名規則:
  • クラス: PascalCase(例: LivingDonorTransplant
  • メソッド: camelCase(例: searchJotId
  • テーブル: UPPER_SNAKE_CASE(例: T_ISHOKU_KIHON_LIV

依存関係管理

  • 外部ライブラリ: PDFLib(帳票生成)
  • フロントエンド: jQuery、Bootstrap、Font Awesome

エラーハンドリング

  • アプリケーションエラー: カスタムエラーページ(/errors/*
  • ログ管理: ファイルベース(application/logs/)+ DBアクセスログ

関連ドキュメント