2021年2月22日月曜日

閉域網の電子カルテにJitsiを稼働してみた!(続き)

 前回は、閉域網の電子カルテにJitsiを稼働してみた!を紹介しました。

サーバは古いMacminiですが、今回はインターネット環境のWindows 10のHyper-VでDebian 10を入れて、仮想サーバを電子カルテネットワーク内の、Windows server 2019とWindows server 2008のHyper-Vに移植する試みを紹介します。

Hyper-Vにすることで、新しい研究用仮想基盤や古いサーバ(旧国立大バックアップシステム等)の仮想基盤化で必要数に応じて簡単にJitsiサーバを増やすことが可能という利点があります。それから、故障した場合も簡単に他のHyper-V仮想基盤にすぐ再稼働することが可能なので耐障害になります。

今回利用したDebianのインストーラは、debian-10.7.0-amd64-netinst.isoです。

基本のDebianのインストールはインストーラの指示通りでできますので、こちらで割愛します。必要なサービスは、VNCやSSHあたりです。GUIが利用したい場合、お好みのデスクトップで構いません。

Jitsi Meetのインストールは、こちらのサイト(英文)を参考していますが、

こちらの環境では、下記のコマンドでやってみました。ドメイン名を使わず、IPアドレスのみでの設定なので、Hyper-Vのチェックポインの機能でIP変更のたびにJitsiをインストールします。


$ wget https://download.jitsi.org/jitsi-key.gpg.key
$ sudo apt-key add jitsi-key.gpg.key
$ sudo nano /etc/apt/sources.list.d/jitsi-stable.list
  #下記の一行を追記
  deb https://download.jitsi.org stable/

$ sudo apt update
$ sudo apt -d install jitsi-meet
  #電子カルテから簡単にインターネットからダウンロードできない環境を考えるととりあえず-dでダウンロードオンリーにします
  #ここでHyper-Vのチェックポインにします。

$ sudo apt install jitsi-meet
インストールの途中で下記の画面がでますので、設定したいIPをいれてください。

続いて、サーバ証明書は、Self-signedを選んでください。


ブラウザーからIPを入力すれば、警告はでますが、安全ではないが開く等をクリックすれば、会議を利用できます。







医療情報関連の研究会と学会主催の決定

 医療情報学会九州・沖縄支部会2020年度秋期研究会 は鹿児島で開催されました。

今年2021年度は、沖縄で10月30日(土)に開催する予定です。会場はいくつか候補がありますが、国際通り那覇市ぶんかテンプス館 を第一候補にする予定です。開催方法は、現地定員100名とウェブ参加を同時にハイブリッド方式の予定です。

医療情報学会の春季大会の直近3年の予定が下記の通りです。

第25回 日本医療情報学会春季学術大会 シンポジウム2021 in 米子

●第26回 日本医療情報学会春季学術大会(シンポジウム2022)
 会 期:2022年6月30日(木)~7月2日(土)
 会 場:岡山市(岡山コンベンションセンター)
 大会長:横井英人(香川大学医学部附属病院)

●第27回 日本医療情報学会春季学術大会(シンポジウム2023)
 会 期:2023年6月29日(木)~7月1日(土)
 会 場:宜野湾市(沖縄コンベンションセンター)
 大会長:平田哲生(琉球大学病院 診療情報管理センター)

2021年2月18日に沖縄コンベンションセンターを内見してきました。コンベンションセンターの管理体制が変わり、学会の企画まで対応してくれる株式会社コンベンションリンケージが指定管理者になったそうです。一応コロナの影響がいつまで伸びるかがよめないので、ハイブリッド方式の開催の予定です。懇親会も従来のない方式でものすごく開放感のある場所で開催する方向で検討しております。

ちなみに前回沖縄で開催した医療情報学会連合大会は下記の通りです。

●第35回 医療情報学連合大会(第16回日本医療情報学会学術大会)
 会 期:2015 年11月1日(日)~11月4日(水)
 会 場:宜野湾市(沖縄コンベンションセンター、カルチャーリゾートフェストーネ)
 大会長:山本隆一(東京大学/一般財団法人医療情報システム開発センター)
 副大会長:廣瀬康行(琉球大学)
 プログラム委員長:大佐賀敦(秋田大学)
 実行委員長:久島昌弘(沖縄県立中部病院)

2020年9月10日木曜日

閉域網の電子カルテにJitsiを稼働してみた!

 閉域網の電子カルテにZoom等をオンプレミスで入れるのは、ある程度予算がないとできないので、Jitsiのようなオープンソースのビデオ会議システムは非常に助かる。IE8しかない端末はネックでしたが、Chromeをいれるのは抵抗感があるので、ChromiumベースのMicrosoft Edge がリリースされるのは、丁度いいですね。

工夫すれば、インストールしなくてもインストール済みのWindows 7からコピーしてちょっとしたショットカット等の設定をすれば、ポータルバージョンのように電子カルテシステムへの影響も最小限にできる。しかもPure Debian をいれている古い2011 macmini(弁当箱みたいなパソコン)に稼働しているので新たな投資は0円で済む。三密を避ける少人数が3~4か所から音声と画面の共有でのカンファレンスなら全然余裕でしょうね。
残念なのは、CTやレントゲンの画像の画面共有はmacminiのCPU使用率が50%以下なのに貧弱のクライアントでは綺麗な共有画面が得られませんでした。高画質のカメラが2つオンした場合、macminiのCPUが80%以上上がってしまいました。

2021年2月22日追記:
 
Jitsi.org - develop and deploy full-featured video conferencing
 
 
JITSI.ORG
Jitsi.org – develop and deploy full-featured video conferencing
Free open-source video conferencing for web & mobil

2020年9月1日火曜日

Mongodb タイトルなしの汎用インポートコマンド

 なんだこれ!と思われそうですが、タイトルがないや使えないCSV、しかもカラムが256以下の汎用Mongodbインポートのコマンドとして紹介しようと思います。もっといい書き方あってもいい気がしますが。。。

C:\Users\user\Desktop>mongoimport /db:dpc /collection:mdc01ope256c  /type:csv /file:MDC01_OPE.csv /fields:C001,C002,C003,C004,C005,C006,C007,C008,C009,C010,C011,C012,C013,C014,C015,C016,C017,C018,C019,C020,C021,C022,C023,C024,C025,C026,C027,C028,C029,C030,C031,C032,C033,C034,C035,C036,C037,C038,C039,C040,C041,C042,C043,C044,C045,C046,C047,C048,C049,C050,C051,C052,C053,C054,C055,C056,C057,C058,C059,C060,C061,C062,C063,C064,C065,C066,C067,C068,C069,C070,C071,C072,C073,C074,C075,C076,C077,C078,C079,C080,C081,C082,C083,C084,C085,C086,C087,C088,C089,C090,C091,C092,C093,C094,C095,C096,C097,C098,C099,C100,C101,C102,C103,C104,C105,C106,C107,C108,C109,C110,C111,C112,C113,C114,C115,C116,C117,C118,C119,C120,C121,C122,C123,C124,C125,C126,C127,C128,C129,C130,C131,C132,C133,C134,C135,C136,C137,C138,C139,C140,C141,C142,C143,C144,C145,C146,C147,C148,C149,C150,C151,C152,C153,C154,C155,C156,C157,C158,C159,C160,C161,C162,C163,C164,C165,C166,C167,C168,C169,C170,C171,C172,C173,C174,C175,C176,C177,C178,C179,C180,C181,C182,C183,C184,C185,C186,C187,C188,C189,C190,C191,C192,C193,C194,C195,C196,C197,C198,C199,C200,C201,C202,C203,C204,C205,C206,C207,C208,C209,C210,C211,C212,C213,C214,C215,C216,C217,C218,C219,C220,C221,C222,C223,C224,C225,C226,C227,C228,C229,C230,C231,C232,C233,C234,C235,C236,C237,C238,C239,C240,C241,C242,C243,C244,C245,C246,C247,C248,C249,C250,C251,C252,C253,C254,C255,C256

2020-09-01T19:59:05.061+0900    connected to: localhost

2020-09-01T19:59:05.636+0900    [#####...................] dpc.mdc01ope256c     364KB/1.52MB (23.4%)

2020-09-01T19:59:08.610+0900    [#####...................] dpc.mdc01ope256c     364KB/1.52MB (23.4%)

2020-09-01T19:59:11.610+0900    [##########..............] dpc.mdc01ope256c     696KB/1.52MB (44.7%)

2020-09-01T19:59:14.610+0900    [###############.........] dpc.mdc01ope256c     1012KB/1.52MB (65.0%)

2020-09-01T19:59:17.611+0900    [####################....] dpc.mdc01ope256c     1.30MB/1.52MB (85.3%)

2020-09-01T19:59:20.610+0900    [#######################.] dpc.mdc01ope256c     1.52MB/1.52MB (100.0%)

2020-09-01T19:59:21.348+0900    [#######################.] dpc.mdc01ope256c     1.52MB/1.52MB (100.0%)

2020-09-01T19:59:21.349+0900    imported 4768 documents

Spotfire からMongoDBのデータを分析する(DPC公開データをサンプルに)

MongoDBはスキーマを定義しなくても下記のように簡単にコマンド一行でCSVをインポートできます。

C:\Users\user\Desktop>mongoimport /db:dpc /collection:facilities /type:csv /file:facilities.csv /headerline

2020-09-01T14:49:28.410+0900    connected to: localhost

2020-09-01T14:49:29.428+0900    [#####...................] dpc.facilities       144KB/659KB (21.9%)

2020-09-01T14:49:30.485+0900    [#######################.] dpc.facilities       659KB/659KB (100.0%)

2020-09-01T14:49:30.486+0900    imported 4764 documents

MongoDBシェルで二つのコレクションをJOINさせるのもいいのですが、データのJOINに強いBIツール、Spotfireを使えば、複雑なシェルやSqlを書く必要もなくなります。

MongoDBは普通のSqlを使うデータベースのようにBIツールから接続するには、有償のODBCドライバーもありますが、こちらは無償のBIコネクターを使います。

ただ、このコネクターは、MySQL ODBC Unicode Driverに依存しているのと、Mysqlのドライバーのインストールは、Visual Studio 2015、2017、および 2019 用 Microsoft Visual C++ 再頒布可能パッケージが必要なので、両方も用意しましょう。

MongoDBがインストールされている前提で話を進みたいので、インストールは下記のページを参考してください。個人的にTB単位の外付けSSDをMongoDBを持ち歩くので、ポータルバージョンを使っています。


まず、BIコネクターに下記のコマンドでschema.drdlを作ります。(コレクションが増えた場合、作り直す必要があるようです)

C:\Program Files\MongoDB\Connector for BI\2.14\bin>mongodrdl.exe --host localhost --db dpc --out schema.drdl

そして、下記のコマンドでlocalhost 3307

C:\Program Files\MongoDB\Connector for BI\2.14\bin>mongosqld.exe

うまくリスナーが待機状態になる場合は、下記のようにコマンドプロンプトに吐き出されます。

2020-09-01T17:42:24.887+0900 I CONTROL    [initandlisten] mongosqld starting: version=v2.14.0 pid=66988 host=DESKTOP-T5OEMLV
2020-09-01T17:42:25.168+0900 I CONTROL    [initandlisten] git version: 6fa82d07a176aeee28f685c3f8e8806832c769b0
2020-09-01T17:42:25.168+0900 I CONTROL    [initandlisten] OpenSSL version OpenSSL 1.0.2n-fips  7 Dec 2017 (built with OpenSSL 1.0.2s  28 May 2019)
2020-09-01T17:42:25.168+0900 I CONTROL    [initandlisten] options: {}
2020-09-01T17:42:25.168+0900 I CONTROL    [initandlisten] ** WARNING: Access control is not enabled for mongosqld.
2020-09-01T17:42:25.168+0900 I CONTROL    [initandlisten]
2020-09-01T17:42:25.172+0900 I NETWORK    [initandlisten] waiting for connections at 127.0.0.1:3307
2020-09-01T17:42:25.909+0900 I SCHEMA     [sampler] sampling MongoDB for schema...
2020-09-01T17:42:26.635+0900 I SCHEMA     [sampler] mapped schema for 4 namespaces: "node_memo_demo" (1): ["memos"]; "test" (1): ["test"]; "dpc" (2): ["facilities", "mdc01ope"]

そして、odbcを検索して、ODBCデータソース(64ビット)を起動してください。




システムDSNを追加し、MySQL ODBC Unicode Driverを選んでください。




データソース名、データベース名は自分の環境に合わせて変更してください。
問題がなければ、Testをクリックすれば、接続成功のような表示がされます。

MongoDBのCSVインポートは、下記の記事を参考してください。


Spotfireは画像の感じになります。

データを追加:その他>ODBC~



データソース:ODBC~>mongodb



OKをクリック、また下の窓のOKをクリックして、次のSQLステートメント画面に
select * from facilities を入力して、データソース名を指定してOKをクリックすれば、
施設概要が取り込まれます。




それから、MDC01手術のデータ(mdc01ope)も最初の+>その他>ODBC~の手順から上記と似た手順で取り込みましょう。

両方のデータが取り込まれたら、データキャンパスの画面からJIONさせます。(詳細手順は割愛します)



JOINしたデータは下記の画像のように、施設概要の情報がMDC01の件数や在院日数に結合している形になりました。


あとは、自由に結合した項目を軸にいろいろなビジュアライゼーションが作れます。





【関連するURL等】

MySQL ODBC Unicode Driver

https://dev.mysql.com/downloads/file/?id=497108

mysql-connector-odbc-8.0.21-winx64.msi

のダウンロード 

https://support.microsoft.com/ja-jp/help/2977003/the-latest-supported-visual-c-downloads

mongodb のインストールと関連コマンド

インストール:
Node.js & MongoDB portable 持ち歩くポータブルバージョン for windows

startMongoDB.bat(MongoDBポータルの起動) 
    REM set PATH=%PATH%;%~dp0\bin
    bin\mongod --quiet --bind_ip 127.0.0.1 --logpath %~dp0\log\MongoDB.log --logappend --dbpath %~dp0\data --directoryperdb --install
    net start "MongoDB"
    dir %~dp0

stopMongoDB.bat(MongoDBポータルの停止) 
     net stop "MongoDB" 
     bin\mongod --remove

Mysqlのようにポート3307にサービス
    mongodrdl.exe --host localhost --db dpc --out schema.drdl
    mongosqld.exe


DPC公開データを処理してみよう(テキストエディターの利活用)

 テキストエディターはいろいろありますが、個人的に使い慣れているのはEmEditorのフリーバージョンです。なければ、生きていけないほどではないが、かなり手間をかけてデータを処理しなければならないことは間違いありません。

一つの例として、厚労省DPC公開データの 施設概要表(Excel:533KB)にしてみましょう。これをCSVに吐き出して、MongoDBにいれてみたいと思いますが、タイトルの米印※と改行が邪魔ですね。分析としてはいけてないデータです。(https://www.mhlw.go.jp/stf/shingi2/0000196043_00003.html

なぜなら、CSVに保存しなおすと中身が下記の形になってしまいますから。。。

"告示番号
※1","通番
※2",市町村番号,"都道
府県",施設名,病院類型,"DPC算定病床数
※3","DPC算定病床の入院基本料
※4","DPC算定病床割合
※5",回復期リハビリテーション病棟入院料病床数,地域包括ケア病棟入院料病床数,"精神病床数
※6",療養病床数,結核病床数,"病床総数
※7","平成30年度
提出月数
※8"
10001,10001,01101,北海道,札幌医科大学附属病院,平成15年度DPC参加病院,832,特定機能7対1,94.5%,0,0,42,0,6,880,12
10002,10002,01102,北海道,北海道大学病院,平成15年度DPC参加病院,869,特定機能7対1,92.5%,0,0,70,0,0,939,12
10003,10003,01204,北海道,旭川医科大学病院,平成15年度DPC参加病院,571,特定機能7対1,94.9%,0,0,31,0,0,602,12

では、「正規表現」で置換しましょう。まずは、正規表現 \n※[1-9] を使います。これは改行米印数字を空っぽに置換することになります。


すると、下記の画像のように改行米印数字が消えました。

それから、今度は「正規表現」で置換の抽出方法です。正規表現」(".*)\n(.*") から $1$2 を抽出します。最初の括弧は$1の範囲でダブルクォーテーションと任意の文字.* があてはまることです。$2は二番目の括弧が範囲で任意の文字.*とダブルクォーテーションがあてはまることです。改行\nは括弧ないではないので抽出の対象外となります。



ダブルクォーテーション内、ひとつ以上の改行があれば、もう一回、「すべて置換」をクリックすれば、綺麗なタイトルが得られます。

これで綺麗なデータを下記のコマンドで簡単にMongodbにインポートできます。


C:\Users\user\Desktop>mongoimport /db:dpc /collection:facilities /type:csv /file:facilities.csv /headerline

2020-09-01T14:49:28.410+0900    connected to: localhost

2020-09-01T14:49:29.428+0900    [#####...................] dpc.facilities       144KB/659KB (21.9%)

2020-09-01T14:49:30.485+0900    [#######################.] dpc.facilities       659KB/659KB (100.0%)

2020-09-01T14:49:30.486+0900    imported 4764 documents