大人ベンチャー

幸いなことに DICOMViewer/PACS HorliX が好評なこともあり、それに引きづられるように OpenOcean も再評価されてきている。

まだぱらぱらと、という感じではあるが、医療ソフト関連企業からお誘いがかかるようになってきた。

先日、そのうちの一つの会社 A 社にお邪魔させてもらった。

A 社はこれまでゲーム業界で実績をつみ、その余力で電子カルテを独自開発、最近リリースした。他分野からの新規参入ということになる。

 

都内某所にあるオフィス。

もう、エントランスからしてこれまでの小規模電カルメーカーなんかとは違う。

 

なんでしょう、このお洒落な感じは?

内部には社員用のリラクシングルームなどもあったりして普通の人が想像するような「イマドキの IT 企業」である。

こういうところが電子カルテを作るようになったんだ。

 

私たちも OpenOcean というれっきとした電子カルテを持っているため競合勢力とみなされてもおかしくはないが、新規参入組は必死だ。私たちと組みたいという。

具体的な案件や電子カルテと DICOMViewer/PACS との連携の仕方といった実務的な内容はもちろん、今後の業界の在り方などにも話は及んだ。

小一時間ほど話し込んだが、最終的には和やかな感じで協力の合意にたどり着いたと思う。

 

ところで、昔ながらのユーザー囲い込みではなく、顧客の要望に応じ該当組織が得意な分野を持ち寄ってシステムを組むみたいな在り方が出てきた。誰かが「大人のベンチャーはこうじゃなきゃいけない」というようなことを言った。

つまり、子供っぽく自らの(組織としての)エゴ・都合を一方的に主張するのではなく、あくまで顧客の要望を尊重し、その準備として「大人の余裕」で共有できるもの・協力しあえることはギブ&テイクしておきましょうということだ。

「大人ベンチャー」なかなか良い言葉ではないか。

 

にほんブログ村 病気ブログ 医者・医師へ

 

OpenOcean/OpenDolphin をカスタマイズするために知っておいた方がよいこと 2

1 に引き続いて、軽く解説的な内容を少々。今回は少しばかりプロジェクトに接近していきます。

 

jar と war … 通常のソースコード ***.java を javac コマンドでコンパイルするとできるのは ***.class です。実行するには、「java 環境でクラスを呼び出す」必要があるので、コマンドは

java ***

となります。「コンパイル済みのクラスを呼び出す」これが Java アプリ実行の原則です。

ところが、Ocean/Dolphin プロジェクトでは、クライアントは OpenOcean.jar 、サーバーは OpenOcean.war などという名称です。

これは、ある程度まとまった機能を提供するためには、クラスだけでは足りず、設定ファイルや画像などのリソースファイルが必要なため、それらをまとめたファイル形式が必要とされたからです。jar は、その一つで Java ARchive からきています。読み方は「ジャー」でいいと思います。

Java EE を用いる Web アプリの場合には Web application ARchive 通称 war (ウォー :戦争 war と同発音)となります。

 

 

git と github … github は先日マイクロソフトに買収され、それを日経新聞が「設計図共有サイト、8200 億で買収」と報じたため、そのネーミングセンスが話題になりました。

オープンソースのソースをインターネット上で公開しておくには、何らかの場所(リポジトリ)が必要で、その一つが、GitHub (ギットハブ)です。他には sourceforge などもありますが、ドルフィン一族は、その多くが GitHub でソースを公開しています。

公開されたソース(リモート)を自分のマシン(ローカル)にクローンすることもできます(というかしないとビルドできない)。

ローカルやリモートのリポジトリの橋渡しをしたり、改変を記録しておくためのシステムが Git (ギット)です。

windows にはデフォルトで git コマンドが入っていないため(ですよね?)、自前で git が使える環境を構築する必要があります。私は随分前に構築したっきりなのですが、それなりに面倒だった記憶があります。たぶん、ここらへんで多くの人が嫌気をさすのではないかと思います。

 

 

デザインパターン…迂闊なことをいうと本職の方々に怒られそうなので wiki から引用しておくと

 

ソフトウェア開発におけるデザインパターン(型紙(かたがみ)または設計パターン、英: design pattern)とは、過去のソフトウェア設計者が発見し編み出した設計ノウハウを蓄積し、名前をつけ、再利用しやすいように特定の規約に従ってカタログ化したものである。

 

だそうです。ソースと最終産物との間にある中間的な機能を設計する上での定型的なパターン、とでもいったらいいんでしょうか。プログラミングの初心者コースではまず教えないと思うので、それなりに経験積んだ人でも知らない人は知らないんではないでしょうか。Ocean/Dolphin ではシングルトンやメニューファクトリーといったパターンが使われている(はず)です。

これがある程度頭に入ってないと、ソースを追っていっても何やってるかわからなくなると思います。逆に C++ あたりで過去に一回でも経験しているとその類推で何とかなることも多いと思います。

 

 

実際に改変を試みようとするとここら辺から、難しくなってくるのかなと思います。

後は、主要なライブラリなどでしょうか。私もいまだに使い方がわかっていないライブラリは山ほどあります。

 

 

にほんブログ村 病気ブログ 医者・医師へ

PACS との連携機能など

HorliX の基本機能の整備もいいところにきた感じがあるので、次のフェイズ、例えば、Ocean との連携機能に関してそろそろ考えてみる。

お手本になりそうな情報を物色。

Panasonic: MedicomHR-3 と FujiFilm: C@RNAcore との連携の例

これはなかなか上手い連携の例だと思う。カスタマイズ料も高くつきそうだが。

オーダリング機能もちょっぴり入っているが、外来中心のクリニックならこういう構成の方が支持されるのかもしれない。

この手の連携機能は特定の機種間のみにした方が ー例えば HorliX と OpenOcean のみとかー 商売という面ではアドバンテージになるのかもしれないが、この時代にその手の「囲い込み」戦略は支持されない気がするので、組んで不都合のない相手とは組んでいきたいと思っている。

 

にほんブログ村 病気ブログ 医者・医師へ

保護中: 法的対応

このコンテンツはパスワードで保護されています。閲覧するには以下にパスワードを入力してください。

OpenOcean クライアントと Docker 版 OpenDolphin サーバをつなげる

Docker 版 OpenDolphin サーバは人気が高いようなので、OpenOcean クライアントとつないでみました。

クライアントのダウンロードページはこちら

 

「機能追加や細部の改変はしてもデータ構造や通信様態は本家を尊重する」という方針なので、当初、「そんなに難しくない、何もしなくてもつながる」くらいに思っていたんですが、初試行では見事につながりませんでした。

ログイン情報が違ってます

の嫌なアラートが….。

しばらく、頭上に?浮かばせてましたが、Docker の Dolphin (WildFly)が吐き出してくれるログに手掛かりがありました。(Docker 版でも設定でログを表示させることができます)

 

hibernate が走ったあとに

web context '/dolphin'

という見慣れぬ表記が。これ通常だと openDolphin なんですよね。

なのでソースの該当箇所を修正。Docker 版と商用版ではここがちがっていたわけですね。通りでつながらないわけだ。

修正後は、無事つながりましたが、当方の通信環境はそれほどよくなく(たぶんルータの性能がいまいち)一台のPC(win10)上に

  • クライアント Ocean クライアント   windows10 (ホスト)
  • サーバ       Dolphin サーバ(Docker)  Ubuntu14 (VMWare の仮想マシン)
  • ORCAサーバ     ORCA Ver5                     Ubuntu16 (VMWare の仮想マシン)

が混在するという二度とやりたくないような構成になりました。なりゆき上。

ただ、データ構造さえ同一に保っていれば、出自が異なっていたとしても接続は問題なくできるわけで(少々、苦労はしますが)、互換性という点でもオープンソースはメリットがあるなと思います。

 

なお、ここらへんの機種間の API の差を埋める目的で HL7 (エイチエルセブン)という団体が FHIR という仕様を公開してます。

FHIR Ver3.0.1

一瞬、なるほど、と思ったのだが、これを採用しても、肝心かなめのデータの構造がやり取りする両者で同一でないと結局復号化できないまま終わってしまうような…。これは検討課題。

 

にほんブログ村 病気ブログ 医者・医師へ

OpenOcean クライアントを Mac で動かす

OpenOcean クライアントバイナリを試験的に公開。

自分の Mac にもインターネット経由で落として使ってみる。(今まで win 機でコーディングしていたので Mac での確認はしてなかった)

まず、起動。

ログイン画面描画は問題なし。

ログインも問題なかったが、なぜか受付情報を受け取れない……。

閉塞」という嫌な文字が ORCA に表示されている。

必殺の wi-fi 切断-再接続を試みる。

当方の環境だとなぜかこれでつながり始める。一昔前のブラウン管チョップと感覚は似ている。

カルテの参照なども問題なし。やはり Mac は表示が綺麗。

しかーし、

  • 処方せん打ち出し機能が選べない
  • ホームフォルダにできてるはずのフォルダができてない

などの不具合あり。

と言ってたんですが、処方せん打ち出しはできますね。

という画面が現れて、「PDF 作成」を押下すると

というそれはそれは美しい処方せんが出現する。

 

後者のバグは心当たりある。ディレクトリを作らせるとき、win でしかチェックしていなかったからだ。

Mac でも開発環境つくろうかな?

できた!

つか、以前に Dolphin ビルドしたときに Java 環境構築したの忘れてたわ。その時の流用。

これで HorliX との連携機能は組みやすくなるかな。

 

にほんブログ村 病気ブログ 医者・医師へ

このアプローチは…

OpenDolphin から OpenOcean に改名したので、今までの仕事をまとめておこうと思い、サイトを新調した。
その際に、ネット上で情報収集をおこなったのだが、けっこう興味深かったのが、

ゼミの飛翔』というブログのこの記事

医療情報系の大学研究室のゼミの公開ブログのようなのだけど、題材として OpenDolphin が取り上げられている。将来的には Dolphin と繋がるオリジナルのスマホアプリをつくりたいらしい。それで、データ構造を把握するためにクライアント-サーバ 間で流れる通信パケットを WireShark でキャプチャして解析したという予備研究。

これはこれで SSL 通信の重要性を示すものとしてまあまあ意味はあると思うけど、目的に対するアプローチの仕方としてはどうなんだろう?

 

というのは…

サーバを走らせた場合、キャプチャしなくても通信内容は同様のものが得られる

というのがその理由の一つ。上記記事を再現してみると「嘔吐・下痢の症状が見られる」という所見を SOA 欄に書き込み、サーバに送信。

ドッカーでは無理だが、普通にサーバを走らせていた場合、Java の(というか Java のライブラリの)ロガーは優秀なので、Win だろうが Mac だろうが Ubuntu だろうが、こんなログを吐き出してくれる(今回は Win10)。

所見の平文対応文字列「PD…(略)…4K」は(当たり前だが)まったくいっしょ。

だから、サーバを走らせれば、キャプチャする意味は(ほぼ)ないのだ。

 

また、トライアンドエラーでサーバの応答をある程度まで求め、それにあわせてクライアントをつくったとしても、

LSC がサーバの仕様を変えてしまえば、そのアプリは使えなくなる

のではないかと思う。

 

そして、これは研究全体の方向性に対することだが、

改変不能なドッカー版サーバを使っている限り、クライアントの仕様はサーバに規定され、クライアントの設計の自由度が落ちるのではないか

という疑問が湧く。

最終的にどういうスマホアプリを目指されているか私程度のものが知る由もないが、個人的には、われわれのように実務家的なちまちまとした工夫を重ねるのではなく、大学には、大学の研究らしくもっと自由で大胆な発想をしてほしいと思う。

 

まあ、私のおすすめは、自由にスマホアプリをつくりたければ、サーバ・クライアントともに Java ソース読んだ方がいいでしょう、ということです。

せっかくソースを公開してくれているのだから。

幸いなことに、Dolphin にしても Ocean にしても、スマホ向けのコードは未実装のところが多いですからね(とヒント出してみる)。

 

(追記)…beanbytes の処理に関しては、元町皮膚科の松村先生のブログ記事にわかりやすい解説があったので、追記しておく。

HealthInsuranceModel,StampModel,ModuleModel には beanBytes というフィールドがあり,bean object を xml 変換して,さらにbyte 配列に変換したものが入って永続化されている。今回,REST化で json を使ったため,object が xml に変換されてさらに byte 配列に変換された beanBytes が json 化でさらに Base64 の文字列に変換されて流されるという,何だかたいそう複雑なことになってしまっていた。

 

引用元『beanBytes の処理:Rest(付録)

 

にほんブログ村 病気ブログ 医者・医師へ

OpenOcean/OpenDolphin をカスタマイズするために知っておいた方がよいこと

OpenOcean/OpenDolphin は、ビルド・デプロイするだけでも出てくる役者が多いので、整理しておきましょう。

 

Java…Win, Mac, Unix などに仮想的なマシンを設定し、それを動かすための言語。したがって、Java で開発されたソフトは Win/Mac/Unix で動く(はず)。JRE は実行環境、SDK は開発用のキットです。ビルドには SDK が必要。

 

Java EE…Java Enterprise Edition の略。通常の Java をクライアント-サーバシステムを開発できるように拡張したもの、というような理解でいいと思います。機能が多彩すぎて私は全貌がまったくつかめてません。Oracle との絡みで先行きは不安のようです。

 

PostgreSQL…データベースソフト。いろんなところでお世話になってます。

 

NetBeans…Java でよく使われるIDE(統合開発環境)。Java 版 VisualStudio といった方がわかりやすいか。Java の IDE は、eclipse が有名ですが、ドルフィンプロジェクトではこちらを使っていたため、私もこちらの方に慣れちゃいました。ただ先行きは不安しかない。

 

Maven…「メイヴェン」と読むのが正しいようです。「マーベン」でも通じると思うけど(内輪だけ?)。Java 用プロジェクト管理ツール、と紹介されることが多い。実用的なソフトを構築する場合、自力で書いたソースの他にライブラリが必要になってくる。OpenDolphin/OpenOcean の pom.xml に

<dependency>
 <groupId>postgresql</groupId>
 <artifactId>postgresql</artifactId>
 <version>8.4-702.jdbc4</version>
</dependency>

などと書かれてあるのは、その指定のためです(この場合は、「postgresql を使いたいので jdbc ドライバをリポジトリから取ってきてね」という意味です。ver が 8.4 と最新ではないのは古い ORCA の postgres に対応するためだと思われます)。他にもビルドの際の細かいルールを指定できる。

 

WildFly…Java EE に準拠したアプリケーションサーバ。Java EE は仕様しか決められていないため、Web アプリ実運用のためにはサーバ実体が必要。このサーバ実体の一つがWildFly。 Redhat が開発し配布している。これの商用版が JBoss。Java EE 同様、機能が多彩すぎて、全体がつかみにくい。実稼働時には(アプリ名).war をWildFly 内に配置(デプロイ)する。

 

まずは、こんなところでしょうか。

 

にほんブログ村 病気ブログ 医者・医師へ