これは、InterSystems FAQサイトの記事です。
システムをアップグレードした後、管理ポータルを開こうとすると、下記のエラーが表示される場合があります。
このエラーは、ブラウザのキャシュに古い情報が残っているために発生しています。
ブラウザのキャッシュをクリアすることでエラーを解消することができます。
InterSystems IRIS for Health™は、世界で最も重要なデータを管理する医療アプリケーションの迅速な開発を目的に特別に設計された世界初、かつ唯一のデータプラットフォームです。 トランザクションの処理と分析、拡張可能な医療データモデル、FHIRベースのソリューション開発、医療情報の相互運用性に関わる標準規格への対応など、すぐに使える強力な機能を搭載しています。 これらすべての機能により、開発者は価値を実現し、画期的なアプリケーションをすばやく構築することができます。 詳細はこちらをご覧ください
これは、InterSystems FAQサイトの記事です。
システムをアップグレードした後、管理ポータルを開こうとすると、下記のエラーが表示される場合があります。
このエラーは、ブラウザのキャシュに古い情報が残っているために発生しています。
ブラウザのキャッシュをクリアすることでエラーを解消することができます。
これはInterSystems FAQ サイトの記事です。
2つのシステムをつなぐだけだったら、わざわざInterSystems IRIS Data Platform(以下IRISと表記)のようなものを仲介させるのは無駄に思えるかもしれません。
ですが、システムの接続は複数システム間に跨るのが一般的です。
そしてシステムの数が増えるにつれ、その接続は複雑になっていき、接続のタイミング、接続プロジェクトの進行管理などが重荷になっていきます。
また各接続は時が経つにつれ変化するのが一般的で、そういうことが起こると双方のシステムにその都度修正が必要になります。
相互依存性が高まるわけです。
また時が経つにつれ各システムが本来持っている機能と接続に関わる処理が混在するケースが多く、変更の影響範囲が多岐に渡ってしまい、 ちょっとした修正でも影響範囲の特定が困難となり、修正作業が膨大になるケースがあります。
IRISを使ってシステム接続を中継させることにより、接続に関する様々な雑用をIRISが担うようになれば、やがて接続の標準化が促進され、各システムには全く変更を加えることなく接続が可能になり、何か変更があった場合にも影響範囲が限定され、その変更作業に必要な工数を最小化できます。
ObjectScriptで複雑な問題を解決している場合、おそらく%Status値を使用したコードがたくさんあることでしょう。 オブジェクトの観点(%Save、%OpenIdなど)から永続クラスを操作したことがある場合は、ほぼ確実にその状況に遭遇したことがあるでしょう。 %StatusはInterSystemsのプラットフォームでローカライズ可能なエラーメッセージのラッパーを提供します。 OKステータス($$$OK)は1に等しいだけであるのに対し、不良ステータス($$$ERROR(errorcode,arguments...))は0、スペース、エラーに関する構造化情報を含む$ListBuildリストとして表されます。 $System.Status(クラスリファレンスを参照)は、%Status値を操作するための便利なAPIをいくつか提供しています。クラスリファレンスを役立てられるので、ここでは繰り返しません。 このトピックに関する有用な記事/質問もほかにいくつかあります(最後のリンクをご覧ください)。 この記事では、コーディングのベストプラクティスではなく、いくつかのデバッグのコツや手法に焦点を当てています(ベストプラクティスについては、最後のリンクをご覧ください)。
この記事の中でご紹介している、FHIRオペレーションのデモを含め、FHIR PathやFHIRプロファイル対応などの2021.1のFHIR関連新機能をご紹介するウェビナーが、2021年10月21日 12:30~13:00 に開催されます!!ご興味ある方はこちらからご登録ください!!
開発者の皆さん、こんにちは。 今日は前回のFHIRリポジトリをカスタマイズしよう!パート1の記事に続き、パート2として、カスタムオペレーションの実装方法をご紹介したいと思います。この記事で紹介している内容のFHIRリポジトリカスタムオペレーションに関するドキュメントマニュアルはこちらになります。 この記事はIRIS for Health 2021.1 をベースに記載しています。バージョンによって実装方法が異なるケースも考えられますので、該当のバージョンのドキュメントをご参照ください。場合によっては新しいバージョンへアップグレードもご検討ください。
まず、FHIRのOperationについて、簡単にご紹介したいと思います。 HL7 FHIR公式ページのOperationのページ
開発者の皆さん、こんにちは!
今週から、InterSystems Interoperability コンテスト 2021の投票が始まりました!InterSystems IRIS を使い開発されたベストソリューションにぜひ、投票をお願いします!
🔥 投票はこちらから! 🔥
投票方法については、以下ご参照ください。
これはInterSystems FAQ サイトの記事です。
命名規約については、それぞれ下記のドキュメントページをご確認ください。
テーブル名(クラス名)について
カラム名(プロパティ名)について
こちらに記載しておりますように、カラム名(プロパティ名)には英数文字およびASCII 128 よりUnicodeコードポイントの大きな文字のみ使用可能です。
また、「リリース2012.2以降〜」の部分にありますように、
Property "My Property" As %String;
のように " で囲むことで、使用できない記号等も使用できるようになります。
これとは別に、プロパティ名は英数字のみを使用して、SQLフィールド名のみ、別途指定することもできます。
Property iscname As %String [ SqlFieldName = isc_name ];
これはInterSystems FAQ サイトの記事です。
文字コードの変換に利用できる変換テーブル名は、以下のシステム関数で取得できます。
Write $$GetIONames^%SYS.NLS()現在のロケールにおいて各デバイス(ファイル、ターミナル等)のデフォルトの変換テーブル名を取得するには、%SYS.NLS.Table クラスを使用します。
確認方法は以下の通りです。
(1) システムデフォルト設定を取得するため、%SYS.NLS.Table のインスタンスを生成します。(引数に、"System" を指定します。)
set obj=##class(%SYS.NLS.Table).%New("System")(2) GetIOTable() メソッドを使用して、確認したいデバイスの現在の変換テーブル名を取得します。
メソッドの引数には、デバイス名に対応した番号を指定します。(詳細はクラスリファレンスをご参照ください。)
【ご参考】クラスリファレンスは、ドキュメントトップ > クラスリファレンス または、スタジオ→表示→クラスドキュメント から参照できます。
// ファイル入出力に使用する変換テーブル名を取得
write obj.GetIOTable(3)【ご参考】
以下のドキュメントもご参照ください。
これはInterSystems FAQ サイトの記事です。
コンソールログファイル (※1) に、以下のメッセージが表示されることがあります。
05/14/19-09:32:14:056 (6888) 0 System routine buffer (64 KB) shortage is detected, 430 routine buffers configured, adjusted per process cached rtn to 71
(※1)
コンソールログファイルは、[管理ポータル] > [システムオペレーション] > [システムログ] > [コンソール・ログ] から参照できます。
または、以下ファイルを直接参照することもできます。
<インストールディレクトリ>\mgr\cconsole.log
上記メッセージでは、ルーチンバッファサイズのうちの 64KB バッファの不足が検出されています。
弊社製品インストール時点のルーチンキャッシュ用メモリのデフォルト値は 35MB に設定されていて、各バッファ(4KB/16KB/64KB)にそれぞれに 430 バッファを割り当てた合計値で設定されています(※補足)。
「adjusted per process cached rtn to 71」については、1プロセスあたりに参照できるルーチン個数が 71個に調整されています。
これはInterSystems FAQ サイトの記事です。
^BACKUP ユーティリティを使用して、DBリストアする方法をご紹介します。
添付のドキュメントでは、オンラインバックアップ と レガシー並行外部バックアップ の2種類のバックアップからのリストア処理の方法を紹介しています。
リストア処理の詳細は、下記ドキュメントページを参照してください。
オンライン・バックアップ・リストア・ユーティリティ【IRIS】
Caché オンライン・バックアップ・リストア・ユーティリティについて
これはInterSystems FAQ サイトの記事です。
ファイルサイズを取得する専用メソッドはありませんが、%Net.FtpSession クラスの sendCommand() メソッドを通してFTPのSIZEコマンドを呼び出し、サイズを取得できます。
簡単な利用例をご紹介します。
まず、以下の様なクラスを定義します。
Class MyNet.FtpSession Extends %Net.FtpSession
{ Method getSize(fname As %String, ByRef size As %Integer)
{
set type=..Type // 現Typeを保存しておく
do ..Binary()
set st=..sendCommand("SIZE "_fname) //SIZE <file name>
set size=..ReturnMessage
if type="Ascii" {
do ..Ascii()
}
quit
} }上記で作成したクラスを使用したサンプルコードです。
set ftp=##class(MyNet.FtpSession).%New()
write ftp.Connect(ftpsrv,user,pass) // FTPサイトへ接続ができると1が返ります。
do開発者の皆さん、こんにちは。
いつも使用しているユーザでアプリケーションや InterSystems 製品(IRIS/Caché/Ensemble/HealthShare) にアクセスしたとき、セキュリティ設定変更などの影響で急にアクセスできなくなった!という場合に、調査に便利な監査ログの参照方法をご紹介します。
ここでは、%Allロールを持つシステム管理ユーザ( _system や SuperUser )で管理ポータルにアクセスできる状態での確認方法をご紹介します。
監査ログですが、まずはシステムで監査が取られる設定になっているかご確認ください(通常無効化されている場合は、調査の時だけ有効に変更してください)。
管理ポータル > システム管理 > セキュリティ > 監査 > 監査を有効に
.png)
次に、アクセスできなくなった原因を探るため、以下のシステムイベントの監査を取得できるように変更します。
管理ポータル > システム管理 > セキュリティ > 監査 > システムイベントを構成
以下のイベントの「状態変更」をクリックし、 Enabled に はい と表示されるようにします。
開発者の皆さん、こんにちは。 IRIS for Health 2021.1がリリースされてからしばらくたちますが、多くのユーザさんにFHIRリポジトリ機能をお使いいただいています。 今日はFHIRリポジトリのサーバ側の処理をカスタマイズする機能をご紹介したいと思います。
この記事で紹介している内容のFHIRリポジトリカスタマイズに関するドキュメントマニュアルはこちらになります。
この記事はIRIS for Health 2021.1 をベースに記載しています。バージョンによってはカスタマイズに必要なクラスが異なることがあります(例えば2020.1では後述のRepoManagerクラスはまだありません。)
FHIRサーバ機能をカスタマイズするには2つのアプローチがあり、1つはこの記事でご紹介する、Interactionクラス群をカスタマイズしてFHIRリポジトリを拡張する方法、もう一つは、相互運用プロダクションでロジックを実装してサーバとしての動作を変更する方法です。
後者は厳密にはFHIRリポジトリとしての実装はそのままで、リポジトリに受け渡される前、あるいはリポジトリから応答を受けた後に、そのデータを参照、変更してカスタマイズを実装する流れになります。
これはInterSystems FAQ サイトの記事です。
ネットワーク共有フォルダ/ネットワークプリンタにアクセスしたい場合、以下の2つの方法があります。
A. net use コマンドを使用する方法
B. IRISの起動ユーザを変更する方法
詳細は以下をご覧ください。
------------------------------------------------------------------------------------------
【方法A】net use コマンドを使用する方法
------------------------------------------------------------------------------------------
1) IRIS からネットワーク共有フォルダへのアクセスを許可する場合、以下のコマンドを実行するように SYSTEM^%ZSTART に記述します。
※^%ZSTART または従来の ^ZSTU は、ユーザのスタートルーチンです。
詳細は以下のページをご参照下さい。
これは InterSystems FAQ サイトの記事です。
ターミナルでルーチンを実行し、プログラム上でエラーが発生した時に、エラートラップを適切に設定していない場合、以下のようなデバッグモードになります。
この状態から、ルーチン起動の前の状態に戻るにはQuitコマンドを入力します。
またエラーが発生したルーチン内でトランザクション処理を行なっている場合には、以下のような表示のプロンプトになります。
このようにプロンプトの先頭にTL+数字が表示されている場合には完了していないトランザクションがあることを示しています。
この状態ではQuitコマンドを入力しても元のプロンプトには戻りません。
最初にTrollbackコマンドを入力し、その後でQuitコマンドを実行することで元のプロンプトに戻ります。
これは InterSystems FAQ サイトの記事です。
ジャーナルレコードの「時間」には、ジャーナルバッファを初期化したときの時間が登録されています。
ジャーナルレコードの時間は、ジャーナルバッファ毎に記録されているため、同じジャーナルバッファ内のジャーナルレコードはすべて同じ時間になります。
なお、ジャーナルバッファは、64KBのサイズで255個存在していて、1つのジャーナルバッファが満杯になった場合、次のジャーナルバッファへレコードを追加するように順番に使用されます。
ジャーナルレコードの時間は、次のバッファへレコードを追加する前に行われる初期化の時間が記録される仕組みになっています。
これは InterSystems FAQ サイトの記事です。
Web/CSPゲートウェイ管理ページは、通常クライアントマシンからアクセスできないように構成されています。
クライアントからその管理ページにアクセスすると、以下の様なメッセージが返ってきます。
システム管理 このシステムを使用する権限がありません。
Not authorized to use this facility.
You are not authorized to use this facility.
任意のクライアントからアクセスするためには以下の操作を行います。
Web/CSPゲートウェイ管理ページにアクセス可能なシステムからブラウザを起動し、管理ポータルにアクセスします。
管理ポータル>システム管理>構成>の所でCSPゲートウェイ管理をクリックします。
表示されるページの左ペインに表示されるデフォルトパラメータをクリックします。
システム管理マシンの所に*.*.*.*と入力し、設定を保存ボタンを押下げます。
しかしながら任意のクライアントから管理ページにアクセスできるようにするのはセキュリティの観点からはあまりお勧めできません。
アクセスできるクライアントはなるべく限定することをお勧めします。
クライアントアドレスの指定方法としては、以下のような指定形式があります。
これは InterSystems FAQ サイトの記事です。
IRIS.DAT/CACHE.DATのタイムスタンプ更新は、データベースの内容の更新後のディスマウント時 (明示的なディスマウント処理または停止処理の際、 または、 データベースファイルのサイズ拡張時に発生します。
これは InterSystems FAQ サイトの記事です。
こちらでは、タスクスケジュールを登録・参照するサンプルコードをご紹介します。
①タスクスケジュール登録のサンプル
※毎日 am1:00に do ^TEST を実行するタスクを作成します。
set task=##class(%SYS.Task).%New()
set task.Name="MyTask1"
set taskDescription="毎日夜中1:00に^xxx実行" // 任意
set task.NameSpace="USER"
set task.TimePeriod=0
set task.DailyFrequency=0
set task.DailyFrequencyTime=""
set task.DailyIncrement=""
set task.DailyStartTime=$ZTimeh("01:00:00")
set task.DailyEndTime=""
set task.TaskClass="%SYS.Task.RunLegacyTask"
set task.Settings=$LB("ExecuteCode","do ^TEST") // RunLegacyTask の場合は ExecuteCode を設定
write task.
これは InterSystems FAQ サイトの記事です。
インターシステムズは、特定のオペレーティングシステムのバージョンの特定リリースに対して、製品の検証は実施しておりません。
特定リリースとは、例えば、Windows Server 2003 R2やWindows Server 2008 R2などを指します。
これらの保証については、オペレーティングシステムベンダーが互換性を保証する限りにおいて、提供されます。
特別な状況の詳細は、下記弊社ホームページのサポート情報に明記しています。
明記されていない場合には、オペレーティングシステムベンダーが互換性を保証する限りにおいて、特定リリースもサポート対象となります。
以下の関連トピックもあわせてご覧ください。
これは InterSystems FAQ サイトの記事です。
リストコレクション(Property XXX As list of %String;)で定義したプロパティは、SQL関数: $LISTBUILD() 、$LISTFROMSTRING() を使用して操作できます。
各SQL関数については、下記ドキュメントページをご参照ください。
InterSystems SQL リファレンス - $LISTBUILD() 【IRIS】
IRIS SQL リファレンス - $LISTFROMSTRING() 【IRIS】
Caché SQL リファレンス - $LISTBUILD()
Caché SQL リファレンス - $LISTFROMSTRING()
SQL文実行例は以下の通りです。
これは InterSystems FAQ サイトの記事です。
システムユーティリティクラスを利用したプログラムを作成することで出力できます。
【注意1】出力データの区切り文字がカンマではなくタブで出力されます点、ご注意ください。
【注意2】エクセルでタブ区切りのファイルを開くため、エクセルの開くメニューから出力したファイルを開いてください。
処理概要は以下の通りです。
1) %SYSTEM.SQL クラス(※)の Execute() メソッドを使用します。
第1引数:SQL文を指定します。
第2引数:内部日付が格納されている場合 yyyy-mm-dd で出力されるように表示モードを切り替えます。(1:odbcモード)
詳細は下記ドキュメントページおよびクラスリファレンスをご参照ください。
ドキュメント - $SYSTEM.SQL.Execute()【IRIS】
クラスリファレンス - $SYSTEM.SQLクラス - Execute()メソッド【IRIS】
ドキュメント - $SYSTEM.SQL.Execute()
クラスリファレンス - $SYSTEM.SQLクラス - Execute()メソッド
※ %SYSTEMパッケージ以下クラスは $system 特殊変数を利用してメソッドを実行できます。
set rset=$system.SQL.これは InterSystems FAQ サイトの記事です。
レコード・マップは、区切り文字付きのレコードや固定幅のレコードを含むファイルをInteroperability機能で使用するメッセージクラスへマッピングしたり、Interoperability機能のメッセージクラスからテキストファイルへマッピングする作業を効率的に行うための機能です。
レコードマップのマッピング定義は管理ポータルで作成でき、CSVファイルを読み込ませながら定義するCSVレコードウィザードも提供しています。
プロダクションでレコードマップを利用する場合は、レコードマップ用ビジネス・サービス、またはビジネス・オペレーションを追加し、作成したレコードマップ定義クラスを指定すれば完成です。
使用例は、以下から取得できます。
レコードマップの詳細な説明は、以下のドキュメントをご参照ください。
これは InterSystems FAQ サイトの記事です。
タスクスケジュールを別環境にコピー(エクスポート/インポート)するには、以下の2つの方法があります。
1.個別にエクスポート/インポートする場合 管理ポータルから行うことが可能です。
個別のスケジュールを開くと、エクスポートボタンがあるので、そちらからエクスポートしてください。
インポートも同じく管理ポータルから行えます。
2.複数のタスクスケジュールをエクスポート/インポートする場合 タスクスケジュールのエクスポートには、%SYS.TaskSuper クラスの ExportTasks() メソッドをお使いいただけます。
実行例は以下のようになります。
エクスポートするタスクID を $LB形式で指定します。複数指定する場合は、$lb(1,2,3,4,5) のようにカンマ区切りで指定します。
これは InterSystems FAQ サイトの記事です。
%IndexBuilder クラスを使用して、複数プロセスを利用してインデックス再構築を行うことができます。
Sample.Person の Home_State(連絡先住所の州情報)カラムに対して標準インデックス HomeStateIdx を定義する目的での例で記載します。
手順は以下の通りです。
1、追加/再構築予定のインデックス名をクエリオプティマイザから隠します。
2、新インデックスを定義するクラス定義のスーパークラスに %IndexBuilder を一番右端に追加します。
3、クラス定義の INDEXBUILDERFILTER パラメータに再構築予定のインデックス名を登録します。
これは InterSystems FAQ サイトの記事です。
Windowsのグループセキュリティポリシーに停止コマンドを記述したバッチファイルを登録する事により可能です。
手順は以下のとおりです。
1.Windowsのローカルコンピュータ・ポリシーのシャットダウンスクリプトに停止コマンドを登録します。
停止コマンドを含んだbatファイルを作成します。
CacheStop.bat ※InterSystems Caché の場合
c:\intersystems\cache\bin\ccontrol stop CACHEIRISStop.bat ※InterSystems IRIS の場合
c:\intersystems\IRIS\bin\iris stop IRIS
2.[ファイル名を指定して実行(R) ]で mmc と入力し、管理コンソールを起動します。
3.管理コンソールから[スナップインの追加と削除]を選択します。
4.スナップインの追加と削除で「グループ ポリシー オブジェクト エディタ」を選択し、追加します。
.png)
5.グループ ポリシー オブジェクトの選択画面で完了ボタンを押します。
.png)
6.OKをクリックして完了します。
.png)
7.シャットダウンスクリプトを登録します。
これは InterSystems FAQ サイトの記事です。
Excelのマクロ機能を使ってVBAからREST/JSON経由でアクセスすることが可能です。
REST/JSONを使用したInterSystems製品との連携の簡単なサンプルを以下のGitHubサイトから入手できます。
マクロサンプルは Solution/activityreport.xlsm をご覧ください。
サンプルは、コンテナを利用しています。READMEに記載の方法でコンテナを開始し、Solution/activityreport.xlsm の「データ取得」ボタンをクリックすると以下の結果が得られます。
.png)
マクロの中では、以下のGET要求を実行しています。
以下の図例は、RESTクライアントでGET要求を行った結果です( Basic 認証でアクセスしています)。
.png)
上記GET要求により、ベースURL(/pm)の指定で、RESTディスパッチクラス(PM.Broker)が起動し、要求されたパス(例では /getactivities)から、PM.REST クラスの GetActivities() メソッドを実行しています。
Class PM.Broker Extends %CSP.これは InterSystems FAQ サイトの記事です。
※ IRIS Data Platformのサーバーライセンス(プロセッサーコア単位の課金)では以下の内容は適用されませんので、ご注意お願いします。
2012.1以降のバージョンより、ライセンス管理が厳格化されたために、管理ポータルでもライセンスを消費するようになりました。
デフォルトでは、管理ポータルは独立したID(CSPセッション)単位でライセンスを消費するために同一ユーザが複数ライセンスを消費するようになります。
スタジオ、ターミナル、管理ポータル全ての消費ライセンスをに同一ユーザにまとめる方法は以下になります。
これは InterSystems FAQ サイトの記事です。
答え:必要ありません。
InterSystems 製品では、クライアント機能用に特別なライセンスを設けておりません。
通常のサーバーライセンス(サブスクリプションを含む)を保有していれば、そのサーバーライセンスで許容しているキャパシティに応じて、複数のクライアントシステムにクライアント機能をインストールして利用することができます。
InterSystemsは最近、HL7バージョン2の相互運用性に焦点を当てた、IRIS for Health 2020.1のパフォーマンスとスケーラビリティのベンチマークを完了しました。 この記事では、さまざまなワークロードで観察されたスループットを説明し、IRIS for HealthをHL7v2メッセージングの相互運用性エンジンとして使用しているシステムの一般的な構成とサイジングのガイドラインを提供します。
これは InterSystems FAQ サイトの記事です。
管理ポータルの SQL 画面(管理ポータル > システムエクスプローラ > SQL)で、任意の SQL を実行した後、結果の行数などが表示されいる行の右端にある「印刷」のリンクから、CSVファイル出力を選択できます。

「クエリ印刷」画面で「ファイルにエクスポート」をチェックすると「ファイル形式」の欄が表示されます。
形式に「CSV」を指定し、出力ファイル名を指定したあと「エクスポート」ボタンをクリックすると出力できます。
注意:古いバージョンでは正しくCSV出力が行えない場合もあります。新しいバージョンをぜひご利用ください。
プログラムでCSV出力を行いたい場合は、関連記事をご参照ください。