#InterSystems IRIS for Health

0 フォロワー · 923 投稿

InterSystems IRIS for Health™は、世界で最も重要なデータを管理する医療アプリケーションの迅速な開発を目的に特別に設計された世界初、かつ唯一のデータプラットフォームです。 トランザクションの処理と分析、拡張可能な医療データモデル、FHIRベースのソリューション開発、医療情報の相互運用性に関わる標準規格への対応など、すぐに使える強力な機能を搭載しています。 これらすべての機能により、開発者は価値を実現し、画期的なアプリケーションをすばやく構築することができます。 詳細はこちらをご覧ください

InterSystems公式 Toshihiko Minamoto · 2月 9, 2022

インターシステムズは、2018年からInterSystems IRISで2ストリームのリリースサイクルを採用しています(開始時のお知らせをご覧ください)。  

  • Continuous delivery (CD) リリース —このリリースは、新機能を迅速に提供し、継続的に更新され、新機能を直ちに利用するアプリケーションの開発、およびデプロイに最適です。
  • Extended maintenance (EM) リリース — このリリースは、CDリリースよりも頻度は低いですが、メンテナンス・リリースの安定性を提供します。新機能をいち早く利用することよりも、メンテナンスリリースでの修正が容易であることが重要な大規模エンタープライズアプリケーションに最適です。

このアプローチについては非常に好意的なフィードバックをいただいており、人々は「鈍行列車(slow train)」と「快速列車(fast train)」という言葉を使うようになりました。 EMリリースは、大規模なオンプレミスの顧客基盤をs持つお客様やパートナーに好まれる「鈍行列車」です。 CDリリースは、最新かつ最高の機能を求めるお客様やパートナーに好まれる「快速列車」です。

0
0 297
InterSystems公式 Maki Hashizawa · 2月 7, 2022

開発者のみなさん、こんにちは。

インターシステムズジャパンは、3/8(火)~ 3/9日(水)に、オンラインカンファレンス「InterSystems Japan Virtual Summit 2022」を開催致します。

"Innovation in Data - データによるデジタル変革の推進" をテーマに、DX推進に不可欠な健全なデータの提供とデータプラットフォームの最新情報をお届け致します。ご参加をお待ちしております!

⚡️ 現在、事前登録受付中 ⚡️

   

【InterSystems Japan Virtual Summit 2022 開催概要】

■テーマ:Innovation in Data - データによるデジタル変革の推進

■開催日時:2022年3月8日(火)・9日(水)13:30 - 15:45 (予定)

■開催形式:オンラインライブ配信

■参加:無料(事前登録制)

お申込み・詳細はこちらから

《ゲストスピーカー講演》

  「物流業界における真の課題を解決― 運ばない物流を支えるロジスティクス変革システム「Jobs」のご紹介」

   株式会社 ビーイングホールディングス 事業開発本部 部長 北川 徹也 様

  「情報連携基盤を活用した医療情報二次利用の経験」

  岩手医科大学 総合情報センター センター長 田中 良一 様

《技術セッション》

0
0 257
記事 Mihoko Iijima · 2月 4, 2022 7m read

開発者の皆さん、Python好きの皆さん、こんにちは!

ドキュメントをみながら IRIS 2021.2 に追加された Embedded Python を試してみました!

IRIS にログインしてるのに Pythonシェルに切り替えできて Python のコードが書けたり、Python で import iris するだけで SQL を実行できたりグローバルを操作できるので、おぉ!✨という感じです。

ぜひ、みなさんも体感してみてください!

では早速。

まず、IRISにログインします。Windows ならターミナルを開きます。Windows 以外は以下実行します。

IRIS のインストール方法を確認されたい方は、【はじめての InterSystems IRIS】セルフラーニングビデオ:基本その1:InterSystems IRIS Community Edition をインストールしてみよう!をチェックしてみてください!

iris session iris
0
1 858
記事 Minoru Horita · 2月 2, 2022 6m read

開発者の皆さん、こんにちは!

最近リリースされた InterSystems IRIS 2021.2 の目玉機能のひとつが Embedded Pythonです。Embedded Pythonは、PythonのランタイムをIRISに組み込むことによって、IRISのメソッドをPythonで記述したり、PythonのコードからIRISのクラスにアクセスしたりなどなど、IRISのObjectScriptとPythonとで相互に呼び出しを行なえる機能です。

しかも、Pythonのランタイムを埋め込んでいるため、ネットワークのオーバーヘッドがなく、パフォーマンスへの影響は最小限です。

IRISのプログラマの方には、Pythonの豊富なライブラリをストレスなく利用して頂けます。

Pythonのプログラマの方には、ObjectScriptを学ぶことなく、IRISの高速なデータベースやインターオペラビリティ機能などをストレスなく活用して頂けます。

今回の記事では、Embedded Pythonの機能をほんの一部だけ紹介します。

メソッドをPythonで書く

次のコードは、日付を表す文字列を2つ渡して、2つの日付の間の日数を返すメソッドです。

0
0 1317
InterSystems公式 Yoichi Miyashita · 1月 31, 2022

インターシステムズは、InterSystems IRIS data platform、InterSystems IRIS for Health、HealthShare Health Connect の バージョン 2021.2 をリリースしました。

【新機能のご紹介】
InterSystems IRIS data platform 2021.2 には、以下の新機能が含まれます。

(1) アプリケーション および インターフェース開発者向け機能
・Embedded Python
・Python を利用した Interoperability プロダクション
・Visual Studio Code の ObjectScript 拡張機能
・必要最小限のコードで SQL 実行を可能にする、新しいビジネス・サービスおよび ビジネス・オペレーション

(2) 分析 および AI 機能
・CSV や JDBC 経由のデータを効率よくロードする新しい SQL LOAD コマンド
・Adaptive Analytics の機能強化

(3) クラウド および システム運用者向け機能
・InterSystems IRIS アプリケーションからクラウド・サービスへのより簡単な接続や利用を容易にする、新しいクラウド・コネクタ
・IKO による Kubernetes リソース管理機能の向上

0
0 421
記事 Megumi Kakechi · 1月 30, 2022 1m read

これは、InterSystems FAQサイトの記事です。

TRY-CATCHで行うことが可能です。
以下のように行ってください。

 #dim ex As %Exception.AbstractException
 TRY {
    "<何かエラーを発生させる処理>"
  }
  CATCH ex {
     do ex.Log()
  }


^%ETNを使用する場合は、^%ETNを呼び出す際にBACKエントリ(BACK^%ETN)から呼び出してください。


あわせて、以下の関連記事も是非ご覧ください。

アプリケーションエラー(^ERRORS)をコマンドで取得する方法
【FAQ】アプリケーションから明示的にエラー詳細情報をログ出力する方法を教えてください。

0
1 372
記事 Megumi Kakechi · 1月 12, 2022 5m read

これは、InterSystems FAQサイトの記事です。
ミラージャーナルファイルの削除(パージ)のタイミングは以下のようになります。

・プライマリ・フェイルオーバー・メンバ

 以下の期限のうち長い方に該当するもの
 -ローカルジャーナルファイルの削除条件が満たされたとき ("ジャーナル設定の構成" を参照)  
 -バックアップメンバとすべての非同期メンバに受信されたとき
  ただし、非同期メンバが14日間(既定値)を経過してもジャーナルファイルを受信しない場合は、そのジャーナルファイルは削除対象になります。
  「既定の14日間」は、以下のコマンドで設定が可能になります。
  この保持期間を過ぎると、ジャーナルが削除されてしまいその非同期メンバでは同期が取れなくなるのでご注意ください。

%SYS>write ##class(SYS.Mirror).JrnPurgeDefaultWait(10)       // 引数で保持期間を渡す


・バックアップ・フェイルオーバー・メンバ およびすべての災害復旧 (DR) 非同期メンバ

0
0 314
記事 Hiroshi Sato · 12月 28, 2021 2m read

これは InterSystems FAQ サイトの記事です。
 

コンパイル時のフラグや修飾子の記号と意味については、以下ドキュメントをご参照ください。


コンパイルフラグについて【IRIS】

コンパイルフラグについて

なお、開発環境のスタジオやVisual Studio Codeでは、開発環境の設定画面でフラグを変更できます。

  • スタジオは、[ツール] > [オプション] > [コンパイラ] > [フラグと最適化]

     

     

  • VSCodeは、[View] > [Command Palette...] 

 


ターミナルでコンパイルを実行するときは $system.OBJ.CompileAll() などのシステムユーティリティが利用できます。
コンパイルフラグを引数に指定しない場合、デフォルトのコンパイルフラグが利用されます。デフォルトのフラグは $system.OBJ.ShowFlags() で確認できます。

0
0 878
記事 Hiroshi Sato · 12月 28, 2021 1m read

これは、InterSystems FAQサイトの記事です。
 

データ項目の値が”#Deleted"と表示される場合、MS Accessの設定でこの問題を回避することができます(MS Access2016以降)。

MS Accessのオプションより、「大きい数値(BigInt)データ型をサポート」にチェックを入れます。

   

設定後、リンクテーブルを一度閉じて、リンクの更新を行います。

0
0 9702
記事 Tomoko Furuzono · 12月 26, 2021 1m read

これは、InterSystems FAQサイトの記事です。

MM/DD/YY-hh:mm:ss:fff ( ) 0 [Utility.Event] Purging old application errors

 
こちらのメッセージは、エラーではなく、アプリケーションのエラーログを記録した古い ^ERRORSグローバルのパージ処理が実行された際に出力されるメッセージになります。ログを削除した旨のみを伝えるメッセージであり、出力されていても特に問題はありません。
また、このログは、^ERRORSグローバルのパージ処理がタスク実行される毎日01:00 に出力されます。
 

実際にアプリケーションエラーがある場合は、管理ポータルの [システムオペレーション] > [システムログ] > [アプリケーションエラーログ] にて、詳細を確認できます。
※このエラーログの内容は、各ネームスペースの ^ERRORS グローバルに格納されているものです。

   

0
0 283
記事 Tomoko Furuzono · 12月 26, 2021 1m read

これは、InterSystems FAQサイトの記事です。
$ZTIMESTAMPはUTC形式で日付時刻を返すため、ローカルのタイムゾーンに変更するためには以下システムオブジェクトを利用します。 

 $SYSTEM.Util.UTCtoLocalWithZTIMEZONE($ZTIMESTAMP)


上記出力結果は ddddd,sssss.fff の形式で出力されます。

    ddddd:$HOROLOGの日付と同じ形式
 sssss:現在の日付の午前 0 時からの経過秒数を示す整数
 fff :秒の小数部を示す可変桁数

※ $HOROLOGに似ていますが、$HOROLOGには秒の小数部分は含まれません。 

SAMPLES>write $SYSTEM.Util.UTCtoLocalWithZTIMEZONE($ZTIMESTAMP)," - ", $horolog,!
63895,64252.66 - 63895,64252
SAMPLES>write $ZDATETIME($SYSTEM.Util.UTCtoLocalWithZTIMEZONE($ZTIMESTAMP),8)
20151209 17:45:56
SAMPLES>write $ZDATETIME($ZTIMESTAMP,8)
20151209 08:46:05
SAMPLES>
0
0 322
記事 Hiroshi Sato · 12月 21, 2021 1m read

これは、InterSystems FAQサイトの記事です。
 

監査ログをプログラミングで出力するために、監査ログの一覧を取得する%SYS.Audit クラスのListクエリを利用することができます。


サンプルコードは以下のようになります。

 Set statement=##class(%SQL.Statement).%New()  
 Set status=statement.%PrepareClassQuery("%SYS.Audit","List")
 Set rs=statement.%Execute()  
 Set tab = $char(9)
 While rs.%Next() {    
   Write rs.%Get("TimeStamp")_tab_rs.%Get("Event")_tab_rs.%Get("Username"),!      
}
0
0 267
記事 Hiroshi Sato · 12月 20, 2021 1m read

これは、InterSystems FAQサイトの記事です。
 

CSPアプリケーションでは、リクエスト処理時間がサーバー応答タイムアウト値(CSPゲートウェイ管理ページで設定、既定値60 sec)を経過すると、CSPゲートウェイからクライアントブラウザにタイムアウトを通知し、処理を続けているデータプラットフォームサーバプロセスにエラーを発生させます。

エラーが発生している処理を確認して頂き、処理遅延の改善、例えばタイムアウトが発生しないように処理内容を見直して応答時間を短くすることや必要に応じてサーバ応答タイムアウト値を大きくすることで対処可能です。

0
0 503
InterSystems公式 Toshihiko Minamoto · 12月 14, 2021

2021年12月13日 - 勧告: Apache Log4j2ライブラリの脆弱性がインターシステムズ製品に与える影響

インターシステムズは現在、Apache Log4j2に関するセキュリティ脆弱性の影響を調査しています。

この脆弱性は少なくともApache Log4j2 (バージョン2.0から2.14.1)に影響を与えるもので、最近Apacheから発表され、米国国家脆弱性データベース (NVD) ではCVE-2021-44228 として報告されており、深刻度は最も高い10.0となっています。

脆弱性に関する詳細ならびにインターシステムズ製品に影響を与えるかどうかの最新情報は こちら をご参照ください。

1
0 212
記事 Tomoko Furuzono · 12月 13, 2021 1m read

これは、InterSystems FAQサイトの記事です。
 

グローバル単位でジャーナルのON/OFF設定を行いたい場合は、グローバルマッピング設定で、
 ・ジャーナルしたいグローバル ⇒ ジャーナルON(「はい」)のデータベースにマッピング
 ・ジャーナルしたくないグローバル ⇒ ジャーナルOFF(「いいえ」)のデータベースにマッピング
と、分けることで可能です。 但し、通常のデータベースは、ジャーナルOFF設定であっても、トランザクション中の更新についてはジャーナルファイルに記録されます。

一時グローバルを保存するIRISTEMP/CACHETEMPデータベースは、トランザクション中でもジャーナルファイルに記録されませんので、トランザクションデータもジャーナル記録したくない場合にはこれをマッピング先にすることも可能です。
但し、IRISTEMP/CACHETEMPデータベースは一時データベースであるため、インスタンス再起動でグローバルデータは失われますので注意が必要です。
一時グローバルと IRISTEMP データベース

0
0 208
記事 Megumi Kakechi · 12月 9, 2021 3m read

これは、InterSystems FAQサイトの記事です。
 

【 管理ポータルへのパスワード認証設定方法 】

管理ポータルの、
 [ホーム] > [システム管理] > [セキュリティ] > [アプリケーション] > [ウェブ・アプリケーション]
で /csp/sys、および、/csp/sys/ 以下の各アプリケーション(/csp/sys/expなど) の編集画面を開き、“許可された認証方法” の、"認証なし" のチェックを外し、“パスワード” のみチェックをして保存します。

また、これと同様のことを、ターミナルから、^SECURITYルーチンを使用して実行することも可能です。
以下は/csp/sys/アプリケーションに対する実行例です。*実行は%SYSネームスペースで行って下さい。*

0
0 653
記事 Tomoko Furuzono · 12月 7, 2021 1m read

これは、InterSystems FAQサイトの記事です。

プライベートWebサーバを使用して、HTMLファイルをリクエストした際に、日本語が文字化けする場合があります。
その場合には、HTMLファイルをBOM(バイト・オーダー・マーク)付で保存してください。

※原則的に、プライベートWebサーバを使用してアプリケーションを稼働することは推奨しておりません。
 アプリケーション稼働には、必ず、IISやApache等の製品版のWebサーバを使用してください。  
 プライベートWebサーバについては、以下のドキュメントをご参照ください。
 プライベート Web サーバおよび管理ポータル【IRIS】
 プロダクション Web サーバおよび Caché 付属のプライベート Web サーバ

0
0 276
記事 Tomoko Furuzono · 12月 7, 2021 2m read

これは、InterSystems FAQサイトの記事です。
このメッセージが出力される要因は以下の2つになります。

  1. 同じデータに対して適切に排他を行わずに、別々のプロセスから更新が行われている
  2. ロールバックが発生している

詳細は以下の通りです。 メッセージログ/コンソールログに、以下のようなメッセージがある場合、これはロールバック処理にて出力されています。
※バージョンによってメッセージは多少異なります。

Skipping SET due to compare and swap failed on ...
Skipping KILL due to compare and swap failed on ...
---
Skipping Set global ^xxx during transaction rollback (transaction may not have been properly locked) in journal ...
Skipping KILL as node ^xxx exists in ...
---
Skipped rolling back x update(s) in ...
Total 1 update(s) were skipped during rollback of transaction beginning at address ...
0
0 151
記事 Toshihiko Minamoto · 12月 3, 2021 12m read

キーワード: ディープラーニング、Grad-CAM、X線、COVID-19、HealthShare、IRIS

目的

イースターウィークエンド中に、Covid-19に感染した胸部X線画像分類とCT検出デモを実行するを触ってみました。  デモの結果は上出来で、このトピックに関するその頃の学術研究出版物に一致しているようでした。 でも、本当に「上出来」と言えるのでしょうか。 

最近、「機械学習における説明可能性」に関するオンラインランチウェビナーを聴くことがあったのですが、たまたまその講演の最後でDonがこの分類結果について話していました。

上図は研究論文にも示されています。『“Why Should I Trust You?” Explaining the Predictions of Any Classifier』という論文です。   分類器は実際に、ペットの犬か野生の狼に分類するための主な入力として、雪といった自然環境などの背景ピクセルを取るようにトレーニングされていることがわかります。 

これを見て、私は以前から持っていた関心を思い出しました。このやり方に、確かに好奇心を掻き立てられます。

0
0 573
InterSystems公式 Yoichi Miyashita · 12月 1, 2021

InterSystems 製品のキットには Apache Web サーバが含まれています。
これにより、お客様が外部Webサーバをインストールせずに Caché/IRIS 管理ポータルを動作させる為の便利な方法を提供しています。
ただし、このWebサーバを実稼働インスタンスに使用しないでください。お客様は、システムに応じたニーズとセキュリティ/リスク要件に適合するWebサーバを別途インストールする必要があります。

最近のテストでは、現在含まれている Apache Web サーバにいくつかのセキュリティ問題があることがわかっていますが InterSystems が管理していないテクノロジである為、
InterSystems は、Apache または別のサードパーティから直接取得した Web サーババージョンをインストールし、付属の Apache Webサーバ を無効にすることをお勧めします。
InterSystems は、今後のリリースに Apache Web サーバの新しいバージョンを含める予定です。
現在のバージョンと同様に、そのバージョンも本番インスタンスには使用できません。
当社の製品の将来のリリースでは、InterSystems はWeb サーバを同梱またはインストールしません。
計画の詳細については、今後、更新情報を提供する予定です。 

0
0 186
記事 Tomoko Furuzono · 11月 28, 2021 5m read

これは、InterSystems FAQサイトの記事です。
InterSystems製品のデータ(テーブルの行データ、オブジェクトのインスタンスデータ)は、グローバル変数に格納されています。
各グローバルのデータサイズは、管理ポータル>システム>構成>ローカルデータベース>グローバルのページから参照したいグローバルのプロパティをクリックし、表示されるグローバル属性ページ上のサイズ計算ボタンをクリックすることで個別のグローバルのサイズを取得することができます。
ネームスペース上のグローバルのデータサイズをまとめて表示するには、ターミナル上で^%GSIZEユーティリティを起動することで取得することができます。
実行方法は以下の通りです。

0
0 486
記事 Hiroshi Sato · 11月 24, 2021 1m read

これは InterSystems FAQ サイトの記事です。
 

InterSystems製品開始時に、OSの実行ファイルやコマンド、InterSystems製品内に作成したプログラムを実行したい場合は SYSTEM^%ZSTART ルーチンに処理を記述します。

(%ZSTARTルーチンは%SYSネームスペースで作成します)

SYSTEM^%ZSTART に記述する処理は、事前にあらゆる条件下でうまく動作することを確認してください。

^%ZSTART ルーチンの記述ミスや、記述は正しくとも起動時にコマンドが応答を返さなかったり処理でエラーが起こった場合、InterSystems製品が起動できなくなることがあります。

詳しくは、以下ドキュメントをご参照ください。


%ZSTART、%ZSTOPルーチンの記述について【IRIS】
%ZSTART、%ZSTOPルーチンの記述について

0
1 291
記事 Toshihiko Minamoto · 11月 16, 2021 4m read

ODataとは?

OData(Open Data Protocol)は、RESTful APIの構築と消費に関する一連のベストプラクティスを定義するISO/IEC認定OASIS標準です。 ODataは、リクエストとレスポンスのヘッダー、ステータスコード、HTTPメソッド、URL変換、メディアタイプ、ペイロード形式、クエリオプションなどを定義するための多様なアプローチを気にせずに、RESTful APIを構築しながらビジネスロジックに専念するのに役立ちます。 また、ODataには変更の追跡、再利用可能なプロシージャの関数/アクションの定義、および非同期/バッチリクエストの送信に関するガイダンスも提供されています(出典: OData.org)。

ODataのユースケース

  • 開発作業なしで、相互運用可能な形式でデータをRESTサービスとしてデプロイする。
  • 開発作業なしで、RESTを使って、BI、データ視覚化、ERP、CRM、ESB、ワークフローツール、およびエンジンでデータを消費できるようにする。
  • API管理ツールで企業データを仮想化する。
  • 0
    0 202
    記事 Megumi Kakechi · 11月 15, 2021 1m read

    これは InterSystems FAQ サイトの記事です。

    SELinuxの機能が有効になっているとファイルアクセス時にセキュリティコンテキストのチェックで permission エラーになります。

    CSP のページについても同様に permission エラーになっているため、Apache にて 403 Forbidden エラーになります。  

    以下の設定でSELinuxの機能を無効にすることで回避できます。

    設定ファイル /etc/selinux/config の SELINUX=disableに設定し、OS の再起動を行います。

    例:

    0
    0 405
    記事 Hiroshi Sato · 11月 11, 2021 3m read

    これは InterSystems FAQ サイトの記事です。
     

    設定内容によって、方法が異なります。
     

    システム構成について
    管理ポータルの [システム管理] > [構成]

    以下の設定については(※1)、パラメータファイル(InterSystems IRISは iris.cpf、Caché/Ensemble/HealthShareは cache.cpf) に格納されます。 

    このファイルはテキストファイルとなっていますのでこのファイルの一部を他のシステムにコピーして反映させることが可能です。 
    ただし、ディレクトリ名など各システム固有の情報が多く含まれるため、そのままファイル全体をコピーしても設定内容を反映させることはできません。 
    (※1) 【Caché/Ensemble2010.2以前】 [システム管理ポータル] > [構成] (システム構成)  メニュー以下の設定が対象です。 
    パラメータ・ファイルの各項目については、以下ドキュメントをご参照ください。 
    InterSystems パラメータ・ファイル・リファレンスについて【IRIS】Caché パラメータ・ファイル・リファレンスについて      

    セキュリティについて
    ^SECURITY ユーティリティを使用してエクスポート/インポートすることが可能です。 
    ターミナルを起動し、%SYSネームスペースで以下のコマンドを実行してください。 

    0
    0 599
    記事 Hiroshi Sato · 11月 11, 2021 1m read

    これは InterSystems FAQ サイトの記事です。
     

    タイムアウトを無効にするためには、DSNの設定でクエリタイムアウト無効に設定します。

    Windowsコントロールパネル > [管理ツール] > [データソース(ODBC)] > [システムDSN]の構成


    で クエリタイムアウト無効 にチェックを入れますと、タイムアウトは無効になります。

    アプリケーション側で変更する場合は、ODBC APIレベルで設定することが可能です。


    ODBCのSQLSetStmtAttr関数をコールする際に、SQL_ATTR_QUERY_TIMEOUT属性を設定してから、データソースに接続してください。

    0
    0 11798
    記事 Hiroshi Sato · 11月 11, 2021 1m read

    これは InterSystems FAQ サイトの記事です。
     

    バックアップ先に、共有フォルダを指定することは可能ですが、推奨しません。

    バックアップの最終フェーズのDBアクセスを禁止する箇所で万一ネットワークエラー等で、バックアップがハングアップすることがあれば、システム全体に影響が及ぶリスクがあります。

    0
    0 168
    記事 Megumi Kakechi · 11月 10, 2021 4m read

    これは InterSystems FAQ サイトの記事です。


    InterSystems製品のプロセスが消費するメモリ領域は以下の6つの領域になります。

    プロセスのプライベートな領域

     1. プロセスパーティション(ローカル変数テーブル等、プロセスごとに使用するメモリ)
     2. 長い文字列(LongString)使用メモリ
     3. 文字列スタック...等

    プロセス間共有領域

     4. データベースキャッシュ
     5. ルーチンキャッシュ
     6. 一般ヒープメモリ(プロセステーブル、ロックテーブル等)


    プロセスが使用するメモリ領域は、「プライベート領域」と「共有領域」の大きく2種類に分かれます。
    プライベートな領域はそのプロセスのみが使用し、個々のプロセス毎にメモリを割り当てます。
    共有領域は、プロセス間で一つのメモリ領域を共有してアクセスしていますので実体はメモリ上に 1つです。
    以下それぞれの領域の値は、管理ポータルで指定します(設定可能な場合)。
    (1) プロセスパーティションのサイズ

     [システム管理] > [構成] > [システム構成] > [メモリと開始設定] > [プロセスあたりの最大メモリ(KB)]

    0
    0 612
    記事 Mihoko Iijima · 11月 4, 2021 6m read

    開発者の皆さん、こんにちは!

    この記事では、【GettingStarted with IRIS】シリーズの MQTT アダプタを簡単に試せるサンプルの利用方法についてご紹介します!

    (MQTTブローカーはインターネット上に公開されているテスト用ブローカーを利用しています)​​

    サンプルは、こちら👉https://github.com/Intersystems-jp/Samples-MQTT-EKG-Devices (コンテナで動作します)

    IRIS/IRIS for Health のバージョン2020.1から、IoT の世界でよく利用される MQTT プロトコルに対応できる MQTT アダプタが追加されました。

    MQTTインバウンドアダプタでは、メッセージの Subscribe が行え、MQTTアウトバンドアダプタでは、メッセージの Publish が行えます。

    サンプルでは、MQTT を使った遠隔モニタリングをテーマに、患者さんに装着した心電図から心拍数(BPM)をリアルタイムに近い状態で取得し、モニタ画面に患者さん毎の心拍数を表示します(IRIS の MQTT インバウンドアダプタを利用したメッセージの Subscribe をご体験いただけます)。

    Publish されるトピックについて

    サンプルでは、演習環境毎にユニークになるようにコンテナ開始時に以下の形式でトピックを作成しています(末尾の # はワイルドカードの指定です)。

    /Student_4629/acmeHospital/EKG/#

    実際に Publish されるトピックは患者さんに装着した心電図のデータになるので、# の部分は、Patient-1 や Patient-2 などのように患者さんを特定できる文字列が入ります。

    サンプルのシナリオは、1つの医療機関の患者情報を取得する流れにしています(本来であれば複数の医療機関の患者情報をモニタできるようにしたほうが良いのですがシンプルに試すため、1つの医療機関の患者情報を取得する流れにしています)。

    トピックの流れ

    サンプルには1つHTMLファイルが用意されています。このファイルをブラウザで開くと MQTT ブローカーに接続し、データ(心拍数)を1秒ごとにブローカーへ Publish します。

    IRIS は、MQTTブローカーから指定のトピックを Subscribe します。

    ​​​

    MQTT ブローカーを Subscribe する設定を行った IRIS のサービスは、ブローカーからトピックを取得します。

    実際の設定は以下の通りです。

    受信したトピックは IRIS の中では​​​メッセージ(EnsLib.MQTT.Message)として扱われ、次のコンポーネントであるプロセス(図では Process_MQTT_Request)に渡します。

    プロセスでは、受信した MQTT 用メッセージからモニタ表示に利用するデータ(Solution.HeartRate)に変換するため、データ変換を呼び出します。

    プロセスエディタの開き方と、中で行われているデータ変換の呼び出しの設定を確認する方法は以下の通りです。

     

    患者ごとの測定値を参照する流れ

    MQTT ブローカーから Subscribe した心拍数をリアルタイムに近い状態で画面表示するため、データ変換で作成された Solution.HeartRate から1秒ごとに患者ごとの心拍数を収集し、画面に表示しています。

    この表示を行うため、1秒間隔で Solution.HeartRate に対するSELECT文が実行されています。

    このクエリを実行しているのが、メトリックと呼ぶクラスです。プロダクションでは以下の場所に設定されています。

    メトリックでは、指定の呼び出し間隔で Solution.HeartRate から患者ごとの BPM を収集しています。詳細はソースコードをご参照ください。

    0
    0 397