開業医のためのIT・開発・業務効率化 / 記事一覧
自作ツール事例

開業医が自作した
「電子カルテCSV自動集計ツール」の全貌

Googleスプレッドシートの限界をどう超えたか。
日次集計・検査原価・粗利・月次予測を自動化するまでの道のり。

2026年6月 Clinic Tech Lab 編集部 読了目安:8分

はじめに

「日次の売上・検査件数・原価・粗利を毎日把握したい」

開業医なら誰もが思うことですが、意外と難しい。電子カルテは患者管理には優れていても、経営分析の視点で数字を出す機能は多くのシステムで貧弱です。

今回紹介するクリニックでも長らくGoogleスプレッドシートで手動管理してきました。毎日CSVをダウンロードし、コピペして、数式を調整して……。これが想像以上に負担で、かつミスも出やすかった。

そこで今年、PHP(Laravel)を使って自前の集計・分析Webアプリを構築しました。この記事では、何が課題でどう解決したか、設計でこだわった点を共有します。

課題:スプレッドシート管理の限界

以下の業務をすべてスプレッドシートで管理していました。

スプレッドシートで運用する問題は大きく4つありました。

01

コピペ地獄からの解放

CSVをダウンロードして開いて、シートに貼り付けて、集計列を確認して……この繰り返しに毎日時間を奪われていました。

02

名称ゆれへの対応が辛い

「HbA1c」「HbA1c」「HbA1C」など表記ゆれを手作業で統一するか、複雑なIF式を積み重ねるしかない。

03

将来の拡張が難しい

「診療カレンダーと月次予測を連動させたい」「在庫管理も一元化したい」となったとき、すぐ限界を迎える。

04

日々のタスクが散在する

「レセコン締めた?」「売上確認した?」をGoogleのToDoリストで別管理。集計と業務チェックがバラバラで、抜け漏れの温床になっていた。

解決策:Laravel + SQLite の自作Webアプリ

技術選定の前提 「クリニック内のMacで単独動作すること」を最優先にしました。患者データを外部に出さない方針から、クラウドSaaSは使わず院内ローカル環境で完結させています。
要素選定理由
フレームワークLaravel(PHP)習熟しており、Webアプリとして構築しやすい
データベースSQLiteインストール不要、ローカルで完結
フロントエンドBlade + ViteSPAにするほど複雑ではないため

主な機能

設計でこだわった3つのポイント

データ層を4段階に分ける

CSV原本は必ず保持します。集計ロジックを変えたり、ミスを発見したりしたときに、いつでも再集計できる構造にしておくためです。

raw data(CSV原本)
↓
normalized data(名称統一・型変換済み)
↓
summary data(集計結果)
↓
master data(コスト・マッピング等)

ロジックはServiceクラスに集約

コントローラはHTTPリクエストの受け渡しだけ。集計・計算・判定はすべて DailySummaryService、CostCalculationService などのServiceクラスに書きます。これによりテストが書きやすく、業務ロジックが変わったときの修正箇所が明確になります。

未確定ルールは「TODO」で明示し、順次確定させる

開発初期は業務ルールが曖昧なものを仮実装+TODOコメントで残し、「とりあえず動く」状態にしながら確認が必要な箇所をコードベースで追跡しました。生化学丸め・血液検査分類・自由診療判定なども、実運用しながらルールを確定し、TODOを順次解消していきました。

ルール 01

価格はハードコードしない

必ずマスタから取得。試薬価格の変更にも即対応できます。

ルール 02

CSVを破壊しない

原本は常に保持。ロジック変更後に再集計できる設計。

ルール 03

名称ゆれはマッピング層で吸収

CSV文字列でif判定しない。マッピングテーブルで一元管理。

実際に使ってみて――現在は実運用中

現在このシステムはクリニックの日常業務に組み込まれ、毎日稼働しています。導入前と比べて変わったことを挙げると:

⏱

毎日のCSV貼り付け作業がゼロになった

✅

生化学丸めを含む検査集計のミスがなくなった

📊

月中に「このペースで大丈夫か」がすぐ判断できるようになった

🔗

MoneyForward連携が手入力ゼロになった

開発初期は「まず日次集計だけ動かす」という小さなスタートでした。実運用しながらフィードバックを得て、生化学の丸め処理・血液検査の詳細分類・経理連携といった業務ロジックを順次確定・実装していきました。完璧を目指して開発を止めるより、動くものを早く使い始めることが、結果的に精度の高いシステムへの近道でした。

まとめ

開業医がゼロから自作するのは大変ですが、「スプレッドシートで何を管理しているか」を整理するだけで、自動化できる部分が意外と見えてきます。

今回のツールで使ったのはPHP/Laravelですが、PythonやNode.jsでも同じ考え方で作れます。小さく始めて実運用しながら育てる、というアプローチが医療現場のシステム開発には特に合っていると感じています。

電子カルテのCSVに悩んでいる開業医の方の参考になれば幸いです。

— Clinic Tech Lab 編集部

この記事は自作ツールの事例紹介です。実装の詳細や同様のシステム構築に関するご相談はお気軽にどうぞ。