スキップしてメイン コンテンツに移動

投稿

9月, 2020の投稿を表示しています

閉域網の電子カルテに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日追記: Windows10のHyper-V仮想サーバでの実装はこちらへ(FQDNではなくIPのみでの稼働)       JITSI.ORG Jitsi.org – develop and deploy full-featured video conferencing Free open-source video conferencing for web & mobil

閉域網の電子カルテに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日追記: Windows10のHyper-V仮想サーバでの実装はこちらへ(FQDNではなくIPのみでの稼働)       JITSI.ORG Jitsi.org – develop and deploy full-featured video conferencing Free open-source video conferencing for web & mobil

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,C15

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,C1

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を持ち歩くので、ポータルバージョンを使っています。 Node.js & MongoDB portable 持ち歩くポータブルバージョン for windows まず、BIコネクターに下記のコマンドで schem

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を持ち歩くので、ポータルバージョンを使っています。 Node.js & MongoDB portable 持ち歩くポータブルバージョン for windows まず、BIコネクターに下記のコマンドで schem

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

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$

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(.*")  から 

雑談:ITのルーツ

  私のITのルーツは、パソコンゲームからでした。IBM PC/XT、PC/ATのごろだったと思います。当時はメモリーのあるところをロックすれば、キャラのHPは殴られても減らなく無敵になったのです。  初めて買ってもらったパソコンはACERで当時は5万台湾ドルもする高価のものでした。確かにIBMのパソコンは10万台湾ドル以上、当時大卒の初任給は2万台湾ドル弱でした。  いまでもはっきり覚えましたが、パソコン屋さんが送ってきたあと、「ちょっと起動してみませんか?」と聞かれたら、「起動でなんですか?」と聞き返しました。5.25インチの フロッピー ディスクをドライブにいれて、電源をオンにすると、黒い画面に白い文字ができてき、最後 A:> が出た記憶です。  当時は大学1年生、もちろんインターネットもなくパソコンのコースはあるかどうかもはっきり覚えていません。頼りになるのは、自分にとってものすごく理解しにくい雑誌と自分の独学の根性でした。  その後、大学のコンピューター関係のサークルに入って、みんなであるパソコン屋のお姉さんにdBase III plusを教えてもらいました。半年後、初めてのITアルバイトとしてこの dBase III plusを使って 団子の町工場のための受注帳票ツールを作って8千台湾ドルをもらいました。すごくうれしい体験でしたね。

雑談:ITのルーツ

  私のITのルーツは、パソコンゲームからでした。IBM PC/XT、PC/ATのごろだったと思います。当時はメモリーのあるところをロックすれば、キャラのHPは殴られても減らなく無敵になったのです。  初めて買ってもらったパソコンはACERで当時は5万台湾ドルもする高価のものでした。確かにIBMのパソコンは10万台湾ドル以上、当時大卒の初任給は2万台湾ドル弱でした。  いまでもはっきり覚えましたが、パソコン屋さんが送ってきたあと、「ちょっと起動してみませんか?」と聞かれたら、「起動でなんですか?」と聞き返しました。5.25インチの フロッピー ディスクをドライブにいれて、電源をオンにすると、黒い画面に白い文字ができてき、最後 A:> が出た記憶です。  当時は大学1年生、もちろんインターネットもなくパソコンのコースはあるかどうかもはっきり覚えていません。頼りになるのは、自分にとってものすごく理解しにくい雑誌と自分の独学の根性でした。  その後、大学のコンピューター関係のサークルに入って、みんなであるパソコン屋のお姉さんにdBase III plusを教えてもらいました。半年後、初めてのITアルバイトとしてこの dBase III plusを使って 団子の町工場のための受注帳票ツールを作って8千台湾ドルをもらいました。すごくうれしい体験でしたね。

処理中のファイルを二重処理しないように

 ラズベリーパイやLinux、Macのターミナル、WindowsのUbutuなど、大きな動画ファイルを変換するとき、特にブラウザから処理するプログラムが二重起動されてしまうことを防ぐ。 #!/bin/bash echo $1 check=`lsof ~/mypath/* 2>&1|awk '{gsub(" ","\\ ",$0); print $0}'|grep -c $1` if [ $check -lt 1 ] then MP4Box -fps 30 -quiet -add "$1" "$1.mp4" mv "$1" ~/mypath/finished/ rm "$1" chmod a+w "$1.mp4" else  echo "$1 using..." fi なお、ファイル名にスペースが入っている場合は、awkのところを修正する必要があるかもしれない。

処理中のファイルを二重処理しないように

 ラズベリーパイやLinux、Macのターミナル、WindowsのUbutuなど、大きな動画ファイルを変換するとき、特にブラウザから処理するプログラムが二重起動されてしまうことを防ぐ。 #!/bin/bash echo $1 check=`lsof ~/mypath/* 2>&1|awk '{gsub(" ","\\ ",$0); print $0}'|grep -c $1` if [ $check -lt 1 ] then MP4Box -fps 30 -quiet -add "$1" "$1.mp4" mv "$1" ~/mypath/finished/ rm "$1" chmod a+w "$1.mp4" else  echo "$1 using..." fi なお、ファイル名にスペースが入っている場合は、awkのところを修正する必要があるかもしれない。