医療業務管理システム
訪問・院内・法人向けサービスの予約管理と、在庫・請求・費用管理を一つにまとめた医療業務管理システムを開発しました。
クライアントと直接要件を整理し、設計・新規開発からデプロイ、運用サポートまで一貫して担当しました。
- 役割
- Webアプリケーションエンジニア
- プロジェクト区分
- クライアント案件
守秘義務に配慮し、クライアント名とWebサイトへのリンクは掲載していません。案件名は内容を表す名称に置き換えています。
担当したこと
クライアントと直接打ち合わせを行い、業務上の要件を整理してアプリケーションを設計しました。
Ruby on RailsとPostgreSQLを使い、予約・サービスの実施管理、在庫、請求、医師への報酬、レポート機能を開発しました。
AWS上でDockerとKamalを使ったデプロイを担当し、運用サポートと継続的な改善にも対応しました。
開発プロセス
- 技術調査・選定
- システム設計
- 開発
- テスト・最適化
主な機能
予約・サービスの実施管理
訪問・院内・法人向けの予約を管理し、複数の患者やサービス、フォローアップの予約にも対応します。
在庫・物流
パートナー、倉庫、薬局にまたがる在庫引当、手配依頼、配送伝票を管理します。
入金・原価管理
請求書発行サービスとの連携、手動での入金登録、医師への報酬(コミッション)、サービス原価、財務レポートに対応します。
権限・レポート
役割に応じたアクセス制御に加え、業務ダッシュボードとレポートの出力機能を備えています。
技術・設計
- 主要技術
- Ruby on Rails · PostgreSQL
- フロントエンド
- HTML · CSS · JavaScript · Hotwire · Tailwind CSS · Flowbite
- インフラ
- AWS · Docker
- デプロイ
- Kamal
AWSとDockerを使用し、Kamalでデプロイしています。運用サポートと継続的な改善も担当しています。
画面にはTailwind CSSとFlowbiteのコンポーネントを使用しています。TurboとStimulusでインタラクティブな更新を実装し、ViewComponentで再利用可能な画面部品を構成しています。
サービス実施と入金状況の分離
サービスの実施状況と入金状況を別々に管理しています。予約チケットの合計金額は、保存のたびではなく、関連データの変更時に再計算します。
在庫計算と引当処理の分離
必要な在庫の計算と引当処理を分離しています。サービスの種類に応じて在庫を引き当て、複数回の接種では残りの回数分をまとめて確保できます。
業務領域ごとのサービス層
予約チケット・在庫・請求の処理を、それぞれ専用のサービスオブジェクトに分けています。処理結果の形式を統一し、成否・データ・エラー情報を一貫して扱えるようにしています。
業務フローのテスト
入金、在庫、権限、レポートの業務フローをテストしています。一部の処理はバックグラウンドジョブで実行します。
構成図
この図はシステムの構成を説明するためのもので、実際のアプリケーション画面ではありません。