aesthetic-emr

機能紹介

対面業務を全て、オンラインに拡張する。

美容医療クリニックの 1 日の業務 ── 予約・受付・診察・処方・決済・配送・フォロー ── を、一気通貫で 1 つのシステムに収めます。

① 予約管理 ② 患者管理 ③ カルテ・問診 ④ IC(同意書) ⑤ 処方・配送 ⑥ オンライン診察 ⑦ 決済・サブスク ⑧ 患者 LINE 連携 ⑨ KPI・売上レポート ⑩ 在庫管理 ⑪ 監査・セキュリティ ⑫ マルチテナント

01

予約管理

医師シフト・休診日と連動した、二重予約防止つきリアルタイムカレンダー。

  • Vue カレンダー(週次 / 日次)でドラッグ操作の高速 UI
  • ・医師ごとのシフト管理 + テンプレート展開で一括設定
  • 休診日の一括設定で年末年始・連休も即対応
  • 二重予約防止(PostgreSQL Advisory Lock)で同時操作でも整合性確保
  • ・予約状態は aasm で遷移管理(仮 → 確定 → 来院 → 完了)
  • ・LINE で患者にリマインドを自動送信

02

患者管理

個人情報の暗号化と本人確認を標準装備。

  • ・氏名・連絡先・住所・生年月日を全て暗号化(lockbox + blind_index)
  • 本人確認画像(運転免許証 / マイナンバーカード / パスポート / 在留カード)を CMEK 暗号化 GCS に 5 年保持
  • ・アップロード画像は自動マジックバイト検証 + EXIF(GPS 等)剥離
  • ・医師が承認・却下、却下時は該当 LINE JWT を全失効して端末紛失リスクをケア
  • ・5 年経過した本人確認は毎日 03:30 に自動で期限切れ扱いに
  • 監査ログに閲覧・編集すべて記録

03

カルテ・問診

SOAP 形式 + 改ざん検知 + 動的問診ビルダー。

  • SOAP エディタ(Subjective / Objective / Assessment / Plan)
  • ・確定後は上書き不可。訂正は訂正履歴として追記(3省2ガイドライン 真正性)
  • SHA-256 改ざんハッシュで内容変更を検知
  • ・診療録は自動 5 年保持(医師法 24 条)
  • 動的問診ビルダーで JSON Schema 形式の問診票を院ごとにカスタマイズ
  • ・画像・PDF 添付可能(GCS 暗号化 + 5 分署名 URL 配信)

04

IC(インフォームド・コンセント)

テンプレ + 電子署名 + オフラベル管理。

  • 同意書テンプレを院ごとに用意。施術カテゴリ別に管理
  • 電子署名(タブレット署名 or 画像アップロード)
  • オンライン同意には本人確認 + オンライン診療同意がプリチェック必須
  • オフラベル薬剤は薬機法に従い、IC で drug_id 単位で明示同意(表記揺れに強い設計)
  • ・aasm 状態遷移(draft → presented → consented)で運用ステップを強制
  • ・SHA-256 改ざんハッシュ + 監査ログで真正性担保

05

処方・配送

薬剤マスタ → 在庫減算 → ヤマト連携を自動化。

  • 薬剤マスタから選択して用法用量を入力
  • ・調剤時に在庫 SELECT FOR UPDATEで確実に減算(負在庫防止)
  • 処方箋 PDF 自動生成(日本語フォント IPAex Gothic 標準装備)
  • 要冷蔵自動判定: 該当薬剤を含む処方はクール便を強制
  • ヤマト B2 クラウド連携で送り状を自動発行
  • ・配送追跡番号を LINE で患者に自動通知
  • 麻薬・向精神薬は処方不可(DB CHECK 制約で多層防御)

06

オンライン診察

LiveKit 連携 + 録画同意 + 緊急時連絡先。

  • ・LiveKit のオープンな WebRTC 基盤を利用したビデオ診察
  • 短寿命 JWT(10 分有効)で接続。クライアント側でルーム一致を検証
  • ・診察終了時にサーバー側でルームを破棄し、既存セッションを強制切断
  • ・録画は事前同意取得時のみ、CMEK 暗号化 GCS に保存・5 分署名 URL 配信
  • ・オンライン診療指針に従い、本人確認・識別検証方法・緊急時連絡先を必須記録
  • ・医師の免許番号・専門・登録県をセッション時にスナップショット

07

決済・サブスクリプション

Stripe 完全連携で PCI DSS スコープ最小化。

  • Stripe Checkout / Customer Portal でカード入力。カード情報は弊社で保持しない(PCI DSS 範囲外)
  • 定期処方サブスク 対応。プラン変更・スキップ・期末解約も患者画面から実行可
  • Webhook 署名検証 + 冪等性(event_id UNIQUE で三重保護)
  • ・課金成功時に自動配送トリガ(毎月 5 日 9:00 JST)
  • ・領収書を Stripe から自動発行
  • ・テナント越境ガード: webhook metadata の clinic_id と DB の clinic_id を突合

08

患者 LINE 連携 (LIFF)

専用アプリ不要、LINE 内ですべて完結。

  • LIFF v2 で LINE 内に患者ダッシュボードを展開
  • ・会員登録 → 本人確認 → 予約 → ビデオ診察 → 処方確認 → 配送追跡まで LINE 内で完結
  • 短寿命 JWT(30 分)+ サーバー側 denylist で即時失効可能
  • ・端末紛失・なりすまし疑い時は該当患者の全 JWT を一斉失効
  • ・予約リマインド・発送通知などを LINE Flex Message で配信
  • ・患者へのプッシュは事前同意を取得した上で配信

09

KPI・売上レポート

経営指標を院ごとに毎日自動集計。

  • KPI ダッシュボード: MRR / チャーン率 / LTV / 新患数 / 来院数
  • 売上レポート(日次・月次)を CSV / PDF で出力
  • ・薬剤別の売上 / 施術別の単価分析
  • ・全集計はテナント分離されており、他院のデータが混ざることはない

10

在庫管理

発注閾値アラート + 棚卸し対応。

  • 発注閾値を薬剤ごとに設定、下回ったらアラート表示
  • ・在庫の変動履歴は全て記録(処方減算 / 棚卸し / 廃棄)
  • 棚卸しは CSV エクスポート → 紙運用 → 結果入力で照合
  • ・複数医師が同時に処方しても、SELECT FOR UPDATE で在庫の整合性を保つ

11

監査・セキュリティ

医療法・個人情報保護法・3省2ガイドラインに準拠。

  • 全操作を監査ログに記録(誰が・いつ・何を・どこから)
  • ・監査ログは追記専用(DB ロール権限で UPDATE/DELETE を剥奪)
  • ・5 年自動保持(医療法)+ 期限切れの自動検知と消去運用
  • Cloud Armor WAF(OWASP Top 10 マネージドルール)+ API レートリミット
  • 2 段階認証(医療スタッフ)+ ログイン 5 回失敗で 30 分自動ロック
  • ・パスワード再設定で全端末から自動ログアウト
  • Workload Identity Federation で CI/CD は鍵レス認証
  • ・GCP CMEK で全暗号化キーを自社管理

12

マルチテナント分離

1 院運用と同等の独立性を SaaS で実現。

  • ・全テーブルに clinic_id を持ち、acts_as_tenant でスコープ自動付与
  • ・他院のデータはアプリ層 + Pundit + 監査の3 重防御でアクセス遮断
  • ・サブドメインまたは /c/<clinic_slug>/ でクリニックを切替
  • ・CI 必須要件としてテナント越境テストを全モデルに用意
  • ・解約時のデータエクスポートは CSV / PDF で完全に取り出し可能

技術スタック

アプリケーション

Rails 8.1 / Ruby 3.4 / PostgreSQL 15 / Redis 7

Vue 3 + TypeScript + Vite / Tailwind CSS

外部連携

Stripe / LiveKit / LINE Messaging API + LIFF v2

ヤマト B2 クラウド / SendGrid / Sentry

インフラ

Google Cloud Run / Cloud SQL / Memorystore / GCS

Cloud Tasks / Cloud Scheduler / Cloud Armor / Secret Manager

運用

Terraform IaC / GitHub Actions / Workload Identity Federation

監査ログ → BigQuery 5 年保持 / Sentry エラー監視

導入のご相談

ご質問・デモご希望・お見積もりのご相談は、お問い合わせフォームよりお願いいたします。