LinnoEdge

LinnoEdge
Works 一覧へ
Works — System Development

Salesforceという「借り物」で、
ずっと動いていた。
それを返す日がきた。

製薬企業の患者・医師管理システム フルスクラッチ刷新

医療・製薬 React.js Nest.js Salesforce移行 FAX API連携
5年分
Salesforceから
移行した患者データ
4機能
Salesforce依存を
脱却・自社実装
4ヶ月
要件定義から
リリースまで
Context

Salesforceに「合わせて」
動いていた業務がある

製薬・医療業界では、患者の登録・管理・照会をSalesforceで運用している企業が少なくない。Salesforceはカスタマイズ性の高さが売りだが、「医療の現場に合わせる」と言うより「Salesforceの制約に業務を合わせる」という逆転がいつの間にか起きている。

ライセンスコスト。UIのブランド統一不能。カスタマイズの上限。「現場の動線」と「システムの動線」がずれ続けたまま、運用を続けている。

さらに、医療の現場にはFAXがある。紙の文化がデジタルシステムと並走している。その「橋渡し」が手作業のままになっていることは、珍しくない。

Challenge

仕様書に書いていない機能が、
現場では動いていた

プロジェクトが始まり、要件を整理し始めてわかったのは、ひとつの不思議な事実だった。

「仕様書に書いていない機能が、現場では動いていた。」

既存システムが長年使ってきたSalesforceには、公式の要件定義書に記載されていない、FAX受領・確認フローが存在していた。ライブユーザー向けの運用の中で自然発生した機能だ。正式なドキュメントには一行も書かれていないのに、毎日誰かがそれを使って仕事をしている。

新しいシステムは、その「見えない機能」も動かさなければならなかった。

Craft

設計思想と、技術的判断の背景

方針はシンプルにした。「Salesforceの外に出る。外部クラウドにも頼らない。」

患者データはクライアント側のオンプレサーバーで完全管理する。フルスクラッチで、React.js + Nest.jsで、作り直す。

ただ、一番難しかったのは技術より前にあった。「仕様書に存在しない業務フローをどうシステムに落とし込むか」だ。

① フルスクラッチ vs Salesforce拡張の判断

Salesforceのカスタマイズを深掘りして対応する選択肢もあった。でも要件を整理したとき、そのアプローチはSalesforceの制約に縛られ続けることを意味していた。制約の外に出ることそのものが目的だったから、フルスクラッチを選んだ。

② AI開発支援でスピードを確保

画面数が多い案件だった。ChatGPTなどを使ってUI画面を生成し、生成したベースに手直しを加えるスタイルを採用した。さらに、今回のプロジェクトにはもうひとつのAI活用があった——コトリノの内田が過去の仕様書をAIで検索できるRAGツール(officebrain)を独自に開発し、チームに提供した。「仕様書を探す時間」が消えた。

③ FAX × API連携という難所

FAX送受信を外部APIサービスと接続し、受領確認フローをシステム内に組み込んだ。デジタルシステムに「FAXの文化」を丸ごと入れる実装は、医療業界固有の制約との格闘だった。正直、ここが一番時間がかかった。

患者登録担当者向け

「現場の動線」から
設計した入力画面

入力画面を全面刷新。Material UIで統一されたデザインシステムの上に、Salesforceの画面をなぞったのではなく、現場の動線から再設計した画面が乗っている。患者登録から担当医師の紐付け、連絡先管理まで、一続きのフローで完結する。

バックオフィス向け

手作業だったCSV連携が、
スケジュール自動実行に

マスターデータとのCSV連携をSFTP経由で自動化した。以前は手作業で行っていた送受信が、スケジュール実行に変わった。帳票出力もSalesforceのレポート機能から自社実装へ。様式のカスタマイズが、システム管理者の手で直接できるようになった。

FAX担当者向け

仕様書にも書かれていなかった業務が、
初めてシステムの中で見えた

FAXの送受信を外部APIと接続し、受領確認フローをシステムの中に入れた。「Salesforceの画面を開いて確認する」という行き来がなくなった。仕様書にも書かれていなかった業務が、初めてシステムの中で見える形になった。

Change

数字で見る、Before → After

BeforeAfter
患者データ管理Salesforce依存(ライセンスコスト・カスタマイズ制約あり)自社システムで完全管理
マスターデータ連携担当者が手動でCSV操作SFTP経由で自動送受信
FAX業務受領確認を別系統で手作業管理APIで自動化・システム内で完結
帳票出力Salesforceのレポート機能に依存自社実装・様式カスタマイズ可
UI統一性機能ごとに画面の作りが異なるMUIで全画面統一
「Salesforceがなくなったら現場が止まると思っていました。でも実際には逆で、Salesforceに合わせて動いていた部分が初めて見えてきた。特にFAXの受領確認が画面の中に入ったとき、こういうことが欲しかったんだと気づいた」——クライアント側IT担当者
Tech Stack

使用技術

React.js Nest.js Material UI (MUI) SFTP連携 FAX外部API オンプレサーバー AI開発支援(RAGツール・画面生成)

似た課題を、抱えていますか。

まず30分、話してみてください。

まだ相談する段階じゃない、という方へ。

オフショア開発 選定チェックリスト(無料DL) →