Skip to content

atsu4i/ReportChecker

Repository files navigation

ReportChecker - 症例要約セルフチェッカー

小児科専門医試験の 申請用症例要約テンプレート(公式ひな形) に対応したセルフチェックツール。 1ファイル=1症例 を前提に、記入した症例要約 .docx をブラウザにドラッグ&ドロップするだけで、 記載漏れ・形式・用語・必須セクション等を自動でチェックします。

兵庫県立尼崎総合医療センター小児科 教育研修部会の資料(『研修レポート・症例要約等の作成上の注意点』『小児科専門医試験 症例要約の書き方』)をもとにルール化しています。

⚡ 最短手順(macOS / Windows 共通)

  1. Python 3 をインストール(既に入っていればスキップ)
  2. このリポジトリを取得する(どちらか)
    • git clone https://github.com/atsu4i/ReportChecker.git
    • もしくは GitHub の CodeDownload ZIP から ZIP をダウンロードして展開
  3. macOS: start.command をダブルクリック Windows: start.bat をダブルクリック
  4. ブラウザが自動で開き、GUIが立ち上がる
  5. 記入した症例要約 .docx を画面にドラッグ&ドロップ → 症例情報と指摘事項が一画面で表示される

初回はライブラリのインストールに 1〜2 分かかります。2回目以降は数秒で起動します。 macOS で「開発元を確認できない」と表示される場合は、Finder で start.command を右クリック → 「開く」を選択してください。

📋 GUIでできること

  • ドラッグ&ドロップでチェック: 記入済み症例要約 .docx をブラウザに放り込むだけ
  • 症例情報カード: 診断名・症例番号・分野番号・入院/外来・転帰・受験者氏名・患者ID・年齢・性別を1画面で確認
  • 重大度別サマリ: ERROR / WARN / INFO の件数をメトリクス表示
  • 連携ビュー: Wordプレビュー上の番号付きハイライトと指摘カードをクリックで相互移動
  • 修正例の提示: 各指摘に修正例つき
  • レポートのダウンロード: Markdown 形式で保存可能
  • ローカルLLM評価(オプション): LM Studio を起動済みなら、症例本文に対する内容面のチェックも実行
┌─────────────────────────────────────────────────────┐
│ ⚙️ 設定             │ 📋 症例要約セルフチェッカー       │
│ ☐ ローカルLLM        │ [.docxをドロップ]                │
│   ▶ LLM接続設定      │ ┌─ 🏥 診断名 ─────────────────┐ │
│   [接続テスト]        │ │ 症例番号 分野 入院/外来 転帰   │ │
│                    │ │ 氏名   患者ID  年齢   性別    │ │
│                    │ └────────────────────────────┘ │
│                    │ 📊 サマリ                       │
│                    │ 📝 指摘事項 [すべて][構成][NG…] │
│                    │ 📥 レポート保存                  │
└─────────────────────────────────────────────────────┘

🛠 ローカルLLM(LM Studio)を使う場合

  1. LM Studio をインストール・起動
  2. 任意のモデルを読み込む(GUI 側で「auto」のままにすれば、ロード済みのものを自動採用します)
  3. DeveloperLocal Server を有効化(既定ポート: 1234
  4. GUI のサイドバーで「ローカルLLMによる内容評価を含める」にチェック
  5. 必要なら接続設定(Base URL / モデル名)を調整し、「接続テスト」で疎通確認
  6. 通常通りファイルをアップロードすると、症例要約本文に対してLLMが評価を行う

LM Studio が未起動でもルール部分は動作し、LLMチェック失敗は警告として記録されるだけです。

🧪 サンプルで試す

テンプレート(小児科専門医レポートひな形.docx など、プロジェクト直下に置いたファイル)を埋めたサンプル .docx を生成できます。

source .venv/bin/activate    # Windowsは .venv\Scripts\activate
python samples/make_sample.py

samples/sample_with_issues.docx(違反多数)と samples/sample_clean.docx(クリーンに修正済み)が生成されます。 GUI上でそれぞれをアップロードして挙動の違いを確認できます。

🖥 CLI から使う場合(GUI不要なとき)

# ルールベースのみ(最小依存)
python simple_checker.py samples/sample_with_issues.docx

# ルール+ローカルLLM
python advanced_checker.py samples/sample_with_issues.docx --use-llm \
    --llm-base-url http://localhost:1234/v1 \
    --llm-model auto \
    -o report.md

📂 ファイル構成

ファイル / ディレクトリ 役割
app.py GUI本体(Streamlit)。連携ビュー
simple_checker.py ルールベースの CLI。実装は checker/ パッケージへの薄いラッパ
advanced_checker.py ルール+ローカルLLM の CLI
checker/ チェック実装本体。rules/(ルール群)と llm/(LLM評価)に分割
tests/ pytest による回帰テスト(125ケース)
start.command / start.bat ダブルクリック起動用ランチャー(mac/win)
小児科専門医レポートひな形.docx 公式テンプレート(処理対象の基準)
samples/make_sample.py テンプレートを埋めたサンプル .docx 生成
requirements.txt / requirements-dev.txt 依存ライブラリ(実行用 / 開発用)

checker/ パッケージの構成

checker/
├── models.py         # Issue / CheckResult / Case / 重大度定数
├── parser.py         # .docx → Case 構造化
├── case_metadata.py  # 症例ヘッダの記載漏れチェック
├── format_check.py   # フォント・サイズ・下付き等の書式チェック
├── layout.py         # 30行 / 80%埋まり度の推定
├── helpers.py        # スニペット生成・文字幅判定ヘルパー
├── report.py         # Markdown レポート生成
├── runner.py         # run_checks のオーケストレータ
├── rules/            # 文字列ベースのルールチェック群
│   ├── ng_words.py       # NG表現・体言+あり・「も」・「より」
│   ├── kana.py           # かな表記すべき語
│   ├── spacing.py        # 数値と単位・%/℃前後のスペース
│   ├── abbrev.py         # 検査略号の大小文字統一
│   ├── pediatric_dose.py # 小児薬用量(体重あたり量)
│   ├── structure.py      # 必須セクション(鑑別・IC・退院後経過等)
│   ├── symbols.py        # カンマ・全角μ・標準外括弧・句読点統一
│   ├── test_names.py     # CT/MRI/X線「検査」の後置
│   ├── age.py            # 年齢表記・年齢別呼称
│   ├── family_history.py # 家族歴の定型句のみ警告
│   ├── vital_order.py    # 現症の記載順
│   └── lab_order.py      # 検査の記載順
└── llm/              # ローカルLLM(LM Studio)評価
    ├── prompt.py         # LLMプロンプト
    ├── json_parser.py    # 出力JSON抽出(コードフェンス・末尾カンマ等を許容)
    ├── filters.py        # 経験的な誤検出フィルタ
    └── runner.py         # LLM評価の本体

テストの実行

source .venv/bin/activate
pip install -r requirements-dev.txt
pytest

チェック項目

記載漏れ(症例ヘッダ)

  • 症例番号 / 分野番号
  • 入院/外来 の選択
  • 転帰 の選択
  • 受験者氏名 / 患者ID
  • 受持期間 / 患者年齢 / 患者性別
  • 家族歴・妊娠分娩歴・既往歴
  • 診断名 / 症例要約本文

症例本文のルールベースチェック

  • 患者年齢: 日齢・月齢・年齢の推奨表記、2歳以降の月齢併記
  • 構成(必須セクション): 主訴・現病歴・入院時所見・検査所見・鑑別診断・入院経過・家族への説明・退院後経過
  • NG表現: 「にて」「より」(時の起点)「採血」「まずまず」「〜と思われる」「●●剤」「カ月」「体言+あり」「投与するも」など
  • かな表記: 一旦/および/全て/但し/出来る/又は などの漢字使用
  • スペース: 数値と単位の間(5.2kg5.2 kg)、%・℃・° の前のスペース
  • 略号: CRECreTBILT-Bil などの大文字/小文字統一

書式チェック(ファイル全体)

  • 明朝体か(日本語フォント)
  • ポイント数(10.5 or 11)
  • SpO2 等の下付き表記の確認

ローカルLLM(オプション)

文脈判断が必要な項目をLLMが評価:

  • 診断名と本文の整合、構成(POMR形式・プロブレムリスト)
  • 鑑別診断、インフォームドコンセント、退院後/外来経過の具体性
  • 所見・数値の具体性、薬剤名、略号初出、検査表記の統一、遺伝子・病原体名、動植物名、人名疾患、小児薬用量、体言止め、主述の一致、敬語、客観性、簡潔さ

入力チェック

  • 1ファイルに複数症例が記入されている場合は警告
  • 記入済みの症例が0件のときはエラー

制限事項

  • 体裁・用語の機械的なチェックが中心です。臨床判断や論理性の最終確認は 必ず指導医のレビュー を受けてください。
  • LLMの判定はモデルや状況で揺れます。あくまで参考としてご利用ください。
  • イタリック化すべき語(ヒト遺伝子・学名)の辞書チェックは未実装です。
  • チェックボックスは「■」や「✓」など一般的なマーカーを検出します。Wordの「フォームコントロール」を使っている場合は検出できないことがあります(その場合は記載漏れとして扱われます)。
  • 公式ひな形 .docx は 小児科専門医レポートひな形.docx または sen_6_6pro.docx のいずれかの名前でプロジェクト直下に配置してください。

免責事項

本ツールは医療現場での意思決定を補助する目的では設計されておらず、症例要約の体裁・形式チェックを目的とした補助ツールです。本ツールの出力結果は最終的な提出物の品質を保証するものではありません。実際の専門医試験提出資料については、必ず指導医のレビューを受けてください。

ライセンス

MIT License

About

小児科専門医レポートの体裁チェック用のプログラムです。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages