MedNight Tokyo #2 〜Web技術でレガシーな医療業界に革命を!エンジニア開発裏話 - connpass
捕捉次第、随時更新します。
- クラウド電子カルテを支える魂の技術 // Speaker Deck
- 非定型なレポート依頼とPythonで戦う
- CLINICS技術構成と開発体制 // Speaker Deck
- CLINICSの変化に耐えるMithril // Speaker Deck
@jooohn1234 / M3
- 電子カルテ
- クラウドで作ればいいじゃん
- 簡単ではない
- 診察 => 会計
- クラウドで作ればいいじゃん
- 会計
- レセコン
- 保険請求のためのレセプト作成
- 窓口会計の計算
- ほぼ必須
- 10万クリニック
- レセコン 9マンクリニック
- 電子カルテ 3万クリニック
- 謎のルールがいっぱいある
- 世の中の電子カルテ
- レセコン機能も備えた一体型
- レセコンと連携することもできる
- OSS版のオルカというのがある ... オンプレ型
- 作りました ... 2番
- 1年ぐらいで100クリニックに導入された
- システム構成
- App ... RoR
- PostgreSQL
- 基本的なサーバサイドの処理
- 初日に動かない
- 遅い
- フロントエンド
- Angular1 => ReactJS
- RxJS
- iOSアプリ
- 手書きカルテ
- 写真
- Swift: 2 => 3対応
- クライアント証明書対応
- Engine (サーバ)
- Scala on Skinny Framework
- Elasticsearch使ったが向いてなかった
- バスケット分析していた
- イマイチ => やめた
- Agent
- Javaのクライアントアプリ
- 院内システムの連携ハブとして院内ネットワーク内に常駐
- socket.ioで常時接続
- サーバからのリクエストを院内機器に転送
- ...
- App ... RoR
- メドレー / 田中清
- CLINICS ... 遠隔診療サービス
- 技術構成
- 患者向け
- 医療機関向け
- オペレータ向け
- サーバ ... RoR
- フロントエンド ... Mithril.js
- ストレージ ... MongoDB, Redis, Elasticsearch
- システム全体構成
- RoR on Heroku
- 非同期で Kinesis にログを投げる
- AWS
- Kinesis
- Lambda 経由で BigQueryへ
- CF - S3 ... 画像とか
- SNS
- クライアントにpush通知飛ばす
- Cognito
- Kinesis
- Firebase使ってる
- RoR on Heroku
- 体制
- Product Manager - 1
- Director - 1
- Designer - 1
- Engineer - 5
- 必要に応じて全員が全レイヤ担当
- 開発の進め方
- 3ヶ月を1単位として企画、開発、振り返りを実施
- KPT
- FAQ
- 他職種からの機能要望
- Slack
- GitHub Issues / Project
- 医者とのコミュニケーション
- M3 / @yuba
- 医師免許持ってる
- M3の紹介
- 2015年に約60名のエンジニア
- 背景
- MR
- 薬剤情報提供をより効果的にするには? => 成果のフィードバック
- BIツールの導入?
- 集計ロジックが特殊
- ビジネス職の人にとって敷居が高い
- レポート作成ツールを作ろう
- 作ったもの
- 表形式データを作成するツール
- Patissier ... 内製ツール
- プラグインでレポート増やせる
- pythonクラスとして記述
- 出力: tsv, csv, xls
- YAMLでクエリを書く
- 表形式データを作成するツール
- ライブラリをOSS化するかも
- SQLのIN句にリストを安全に渡せるようにするやつ(仮称)
- scp用のツール
- RoRみたいにdatabase.ymlに接続設定を外部化するやつ
- フロントエンド構成
- Mighril.js
- babel-plugin-mjsx
- Babelify => Babel
- Mighril.js
- ビルドシステム
- Browserify + Gulp => Webpack + Gulp
- Node.js
- npm => yarn
- なぜMithrilにしたか
- ローンチまで時間がなかった
- Angularは重すぎ
- VueやReactはView以外で色々考えなきゃいけない
- VDOMがやはり良いので、Backboneなどもつらい
- 新規事業なので変化が激しいと予想
- 受難に対応できそうなものがいい
- 半年経過
- コードは多くなった
- コンポーネントの粒度が細かくなってくる
- Model以外でm.prop()使わなくなってくる
- 現在のCLINICS
- 大本の処理は各画面のindex.jsに集約
- 気づいたらReduxっぽくなってる
- Mithril.jsのいいところ
- APIがシンプル
- ES2017と親和性が高い
- 変更に強い
- 悪いところ
- APIがシンプルなので設計ちゃんと考えないと破綻する
- いまはReduxっぽくなった
- エコシステムが整ってない
- 1.0に上げにくい
- マイグレーションガイドがあるが、多くてつらい
- APIがシンプルなので設計ちゃんと考えないと破綻する