これは、InterSystems FAQサイトの記事です。
SQLクエリーの文字列を監査ログに残すことができます。
詳細は、以下のドキュメントをご参照下さい。
※%SQLで始まるイベントをご覧ください。
※監査関連ページをご覧ください。
InterSystems IRIS for Health™は、世界で最も重要なデータを管理する医療アプリケーションの迅速な開発を目的に特別に設計された世界初、かつ唯一のデータプラットフォームです。 トランザクションの処理と分析、拡張可能な医療データモデル、FHIRベースのソリューション開発、医療情報の相互運用性に関わる標準規格への対応など、すぐに使える強力な機能を搭載しています。 これらすべての機能により、開発者は価値を実現し、画期的なアプリケーションをすばやく構築することができます。 詳細はこちらをご覧ください
これは、InterSystems FAQサイトの記事です。
SQLクエリーの文字列を監査ログに残すことができます。
詳細は、以下のドキュメントをご参照下さい。
※%SQLで始まるイベントをご覧ください。
※監査関連ページをご覧ください。
これは、InterSystems FAQサイトの記事です。
iris.exeを使用し、以下のようにして確認できます。
※up:起動中、dn:停止中
インターシステムズは InterSystems IRIS および IRIS for Health バージョン2020.4 をリリースしました。本バージョンは、継続的デリバリ(CD) リリースのため、Docker コンテナ として知られる OCI (Open Container Initiative)形式 (for Linux x86-64 および Linux ARM64) のみ入手いただけます。
コンテナイメージは OCI に準拠した Linux x86-64 および Linux ARM64 対応のランタイムエンジンで動作可能です。
あわせて IRIS Studio 2020.4 もリリースしました。
リリースのビルド番号は 2020.4.0.547.0 です。
【新機能のご紹介】
InterSystems IRIS Data Platform 2020.4 には、以下の新機能が含まれます。
これは InterSystems FAQ サイトの記事です。
INFORMATION_SCHEMA スキーマを使用して取得できます。
INFORMATION_SCHEMA はシステム用スキーマのため、デフォルトでは管理ポータルのSQLメニューに表示されません。
表示させる方法は以下の通りです。
.png)
指定のテーブル(ISJ.Class1)に対するID、フィールド名(COLUMN_NAME)、データタイプ(DATA_TYPE)、説明(DESCRIPTION)を取得するSQLは以下の通りです。
SELECT ID,COLUMN_NAME,DATA_TYPE,DESCRIPTION
FROM INFORMATION_SCHEMA.COLUMNS
where TABLE_SCHEMA='ISJ' AND TABLE_NAME='Class1'これは InterSystems FAQ サイトの記事です。
グローバル変数毎のデータベースキャッシュ使用量を確認するツール(^GLOBUFFユーティリティ)が用意されています。
%SYSネームスペースにて、ユーティリティを直接実行する方法と、プログラムで実行する方法があります。
ユーティリティを直接実行する方法は以下のようになります。
これは InterSystems FAQ サイトの記事です。
引数名の後ろに ... をつけることで可変の引数を渡すことができます。
ObjectScript では、配列を使って任意の数の引数を渡すことができます。
例文は以下の通りです。
例文では、メソッド実行後に確認しやすいように、グローバル変数(=データベースに格納される変数)に引数の情報を設定しています。
Class TEST.ARGTEST1 Extends %RegisteredObject
{
ClassMethod NewMethod1(Arg... As %String) As %Boolean
{
kill ^a
merge ^a = Arg
}
}ターミナルで実行した結果は以下の通りです。
USER>DO ##class(TEST.ARGTEST1).NewMethod1(1,2,3,4,5)
USER>ZWRITE ^a
^a=5
^a(1)=1
^a(2)=2
^a(3)=3
^a(4)=4
^a(5)=5これは InterSystems FAQ サイトの記事です。
ファイル入出力処理を行うには、ライブラリクラスを利用する方法が便利です。
ライブラリクラスを使用する以外には、Open/Use/Close コマンドを使用する方法もあります。<※1>
ファイル入出力処理には、%Library.Fileクラス、%Stream.FileCharacter/%Stream.FileBinary を使用します。
簡易例やプロパティ/メソッド詳細は、以下ドキュメントをご参照ください<※2>。
クラスリファレンス【IRIS】
クラスリファレンス
【補足】
%Libraryパッケージは、クラス定義構築基盤として利用するクラスが多いためパッケージ名を省略することができます。
(%Library.File は %File として利用できます)
【A】%Fileクラスを利用する方法
%Fileクラスには、ファイル入出力操作の他に、ディレクトリ作成(CreateDirectory()など)/存在チェック(Exists())/OS非依存でファイルパス取得(NormalizeFilename()など)が行える様々な便利メソッドを用意しています。
ファイル出力処理手順は以下の通りです。
(1) ファイル用オブジェクトを作成
ファイル名をフルパスで指定しながらファイル用オブジェクトを作成します。
set file=##class(%File).*この動画は、2021年2月に開催された「InterSystems Japan Virtual Summit 2021」のアーカイブです。
既に運用されている電子カルテ・処方のデータや蓄積されているデータを、FHIR に変換して活用したいというニーズは、FHIR アプリケーションを構築するにあたり最も多いご要望の一つです。
この動画では、InterSystems IRIS for Health を使用して、HL7/SS-MIX2 やCSV など他形式のデータから FHIR データへ変換する方法について、デモをまじえてご紹介いたします。
この開発者コミュニティでは他にも IRIS の FHIR 機能に関連した多くの記事を公開しています。
FHIR にご興味ある方はぜひご覧ください。
これは InterSystems FAQ サイトの記事です。
MM/DD-hh:mm:ss:938 ( 0) 1 Failed to allocate xxxMB shared memory using large pages. Switching to small pages.
MM/DD-hh:mm:ss:938 ( 0) 0 Allocated xxxMB shared memory: yyyMB global buffers, zzzMB routine buffers
コンソールログ(cconsole.log/messages.log)に上記のようなメッセージがある場合は、Large Page でのメモリ確保に失敗して、Small Page でメモリを確保したことを示しています。
Allocated xxxMB が設定サイズと同じ場合、Small Pageでメモリ確保ができていますので、設定サイズを減らす必要はありません。
このメッセージは、起動時に十分な空きメモリが連続領域で確保されていないために発生しています。
デフォルトの設定では、WindowsOS が管理するメモリ領域の中で Large Page という領域にメモリを連続的に確保します。
これは InterSystems FAQ サイトの記事です。
アプリケーション等がデータベースにアクセスしている最中に、データベースの最大サイズの変更や未使用領域の開放などのデータベース設定変更を行うことにより、データベース整合性等に悪影響を及ぼすことはありません。
しかし、未使用領域の開放などは、ディスクアクセスの増加やメモリの使用等でシステムに負荷をかける可能性があるため、その観点からシステム運用に影響が出ないよう注意が必要です。
*この動画は、2021年2月に開催された「InterSystems Japan Virtual Summit 2021」のアーカイブです。
この動画では、FHIR をご存じない方に向けて FHIR の概要を解説し、日本における FHIR 標準化活動の状況や国内外の事例を紹介しています。
後半の16分~くらいからは、InterSystems IRIS for Health が提供する FHIR リポジトリに代表される FHIR 関連機能と、今後の機能ロードマップを紹介しています。
この開発者コミュニティでは他にも IRIS の FHIR 機能に関連した多くの記事を公開しています。
FHIR にご興味ある方はぜひご覧ください。
インターシステムズは、以下のメンテナンスバージョンをリリースしました。
これらのメンテナンスリリースは幅広い分野の多くの修正を含みます。
各リリースの修正情報は、それぞれのバージョンのドキュメントに含まれるリリースノートをご確認ください。
ドキュメントにはリリースノートの他にアップグレードチェックリスト、リリース変更リスト、クラスリファレンスおよびガイド、リファレンス、チュートリアルやアーティクルの完全なセットを含みます。
リリースノートを含む英語ドキュメントは こちら から参照できます。
最新情報を除く 日本語ドキュメント もご参照ください。
これらのリリースでは新しくサポートするプラットフォームを追加しました。
特に、すべてのリリースで Ubuntu 20.04 LTS をサポートします。
2019.1.2 は IBM AIX 7.1, 7.
FHIR Terminology Serviceの仕様には、 CodeSystem、ValueSet、およびConceptMapリソースでの一連の演算子が記述されています。 これらの演算子の内、以下の4つの演算子が最も広く採用されているようです。
| CodeSystem | ValueSet |
|---|---|
| $lookup $validate-code |
$expand $validate-code |
IRIS for Health 2020.1で導入された新しいFHIRフレームワークを学ぶには、仕様の部分的な実装を開発するのが最も効果的と言えます。 実装には上記の4つの演算が含まれており、CodeSystemとValueSetリソースでreadとsearch操作がサポートされています。
実装には単純なObjectScript永続クラスがソース用語テーブルとして使用されていることに注意することが重要です。
開発者の皆さん、こんにちは!
第11回 IRIS プログラミングコンテスト - 開発者ツール編 の 続報 📣 の「テクノロジーボーナス」についてご紹介します。
今回のコンテストも、チームで開発した作品もご応募いただけます!ぜひコンテスト詳細ページもご確認ください!
アプリケーションがコンテナ版 IRIS を使用している場合「Docker container」ボーナスを獲得できます!
シンプルな開発環境テンプレートをご用意しています。ぜひご利用ください。
フルスタックアプリケーション用の ZPM(ObjectScript Package Manager) パッケージをビルドして公開し、それを使用してデプロイできるようにすると2ポイント獲得できます。
以下のコマンド実行例は、 IRIS に ZPM クライアントをインストールしパッケージをインストールしている例です。
zpm "install your-multi-model-solution"
これは InterSystems FAQ サイトの記事です。
Linux で シェルスクリプト(shell script) からルーチンやメソッドを実行し戻り値を取得するには、iris コマンドを使用します。
詳細はドキュメント「インスタンスの接続について」 をご参照ください。
コマンド記述例は以下の通りです。
iris session インスタンス名 -U ネームスペース名 "実行ルーチン・メソッド"
シェルスクリプトへの戻り値の指定は、ルーチンやメソッド終了時に指定する QUIT や RETURN コマンドに引数を指定する方法ではなく、プロセス処理終了時に %SYSTEM.Process クラスの Terminate() メソッドを使用して 特殊変数 $? に値を返す方法を利用します。
値は、0~255 を指定できます。 ルーチンでの利用例は以下の通りです。
// ルーチン名をTestとします
start1() public {
hang 5 // 5秒待つ
//第2引数に指定した数値がシェルスクリプトに戻ります
set st=$system.Process.Terminate($JOB,11)
}
実行例は以下の通りです。
# iris session iris -U USER "start1^Test()"
# echo $?これは InterSystems FAQ サイトの記事です。
管理ポータルを使用して確認する場合は、以下の手順で参照できます。
管理ポータル > [システムエクスプローラ] > [グローバル] の画面で、ネームスペースではなく データベース を指定し、IRISTEMP / CACHETEMP データベースを選択すると参照できます。
ターミナル上で確認する場合は、znspace(省略形:zn)コマンドのパラメータとしてネームスペース名ではなく、データベースディレクトリ名を指定することで該当データベースのみに存在するグローバルを参照できます。
IRISTEMP データベース上のグローバルを参照する場合、以下例のように移動します。
USER>zn "^^../IRISTEMP"
..iris\mgr\iristemp\>これは InterSystems FAQ サイトの記事です。
^%GSIZE ユーティリティでは、グローバルのサイズを算出することができます。
このユーティリティで出力される各項目の意味について説明します。
例えば、USERネームスペースのグローバルについて do ^%GSIZE を実行し、以下のように出力結果を得られたとします。
これは InterSystems FAQ サイト の記事です。
以下のサンプルでは、画像ファイルをクラスプロパティにBase64文字列にエンコードして保存し、再びそれをBase64でデコードし、別のファイルに復元しています。
【使用クラス】
Class User.test Extends %Persistent
{
Property pics As %GlobalBinaryStream;
}
【取込み時】
set x=##class(User.test).%New() // ここに保存
// 画像準備
set file=##class(%File).%New("c:\temp\Mii.png")
do file.Open("RUK\BIN\")
for {
if file.AtEnd=1 quit
// 画像を1024 byteずつ Base64形式に変換(エンコード)
set cnt=file.Read(1024)
set b64=$system.Encryption.Base64Encode(cnt) // b64: 1402byte
do x.pics.Write(b64)
}
do x.%Save()
do file.対象バージョン:
Caché/Ensemble、InterSystems IRIS および IRIS for Health のすべてのバージョン、上記のデータプラットフォームバージョンに基づくすべての HealthShare 製品
対象プラットフォーム: すべて
InterSystemsは、非常にまれな状況でプライマリミラーメンバー以外のミラーメンバーでデータの不整合を引き起こす可能性がある問題を修正しました。
この問題は、上記の InterSystems 製品のバージョンで発生する可能性があります。
[発生する問題]
ミラーリングを使用しているシステムでデータの不整合性が発生します。
[問題の詳細]
この問題は、ミラーリングされたシステムでの通常の操作中にエラーなく発生します。
この問題によりミラーメンバーで一部のジャーナルレコードのデジャーナル処理が失敗し、ミラーメンバー間でデータの不整合が発生します。
これは、フェイルオーバーメンバーと非同期メンバーの両方で発生する可能性があります。
この問題が発生する可能性はほとんどありませんが、InterSystems はミラーリングを使用するすべてのお客様が修正を取得し、ミラーリングされたデータベースの整合性を DataCheck で検証することをお勧めします。
これは InterSystems FAQ サイトの記事です。
各タイムアウト値の意味は以下の通りです。
(1) [サーバ応答タイムアウト]
この設定時間内に、IRIS/Caché での処理(ルーチンやクエリの実行)が終わらない場合は、ブラウザ側にエラーを返します。
例) この値が60秒の時に、ルーチン/メソッド/クエリ実行に 90秒 かかる場合にはエラーになります。
(2) [キューイングされたリクエストのタイムアウト]
CSP/REST で設定する IRIS/Caché サーバごとに、CSP/REST を同時実行できるプロセス数を制限できます。
たとえば、サーバ接続最大数=3の場合、表示に数十秒かかるページを複数同時に要求した場合、4つ目以降のリクエストは、Web/CSP ゲートウェイ上で「キュー」に入り待ち状態になります。
このキューで待つ最大時間が (2) のタイムアウトになります。
(3) [非活動タイムアウト]
CSP/REST では、IRIS/Caché サーバ上に待ち受けプロセスが複数でき、「サーバ接続最大数」まで待ち受けプロセスが出来る可能性があります。
各プロセスが、次の要求が来るまで待機する時間がこのタイムアウト値になります。
タイムアウト後、プロセスは自動的に消滅します(これらのプロセスはライセンスを消費しません)。
詳細は下記ドキュメントページをご参照ください。
これは InterSystems FAQ サイトの記事です。
複数の SQL 文を実行する GUI はありませんが、複数の SQL 文を含むファイルを作成しファイルをインポートしながら SQL を実行する方法で対応できます。
ご利用バージョンによって使用するユーティリティメソッドが異なります。
2020.3以降をご利用の場合は %SYSTEM.SQL.Schema クラスの ImportDDL() メソッドを使用します。
2020.2以前をご利用の場合は %SYSTEM.SQL クラスの DDLImport() メソッドを使用します。
1)バージョン 2020.3 以降での方法:%SYSTEM.SQL.Schema クラスの ImportDDL() メソッドの利用
インポート用ファイルに記述するSQL文が複数行ある場合は、記述する SQL の後ろに GO 文を記述する必要があります。
インポートファイル例は以下の通りです。
INSERT INTO Test2.Person (Name) values('test1')
go
INSERT INTO Test2.Person (Name) values('test2')
go
INSERT INTO Test2.Person (Name) values('test3')
go
開発者の皆さん、こんにちは!
世界中の開発者からの熱いご要望により、新たなコンテストの開催が決定しました!
🏆 InterSystems IRIS プログラミングコンテスト: 開発者ツール 🏆
応募期間は 2021年3月29日~4月18日 です!
💰 賞金総額: $8,500 💰
(投票期間は 2021年4月19日~25日、勝者発表は 4月26日を予定しています)
InterSystems IRIS を使用して、開発の迅速化、より質の高いコードの提供、テスト、デプロイ、サポート、またはソリューションの監視を支援するアプリケーションやツールを開発し、ご応募ください!
優勝特典
1、審査員から多く票を集めたアプリケーションには、以下の賞金が贈られます。
🥇 1位 - $4,000
🥈 2位 - $2,000
🥉 3位 - $1,000
2、開発者コミュニティで多く票を集めたソリューションには、以下の賞金が贈られます。
🥇 1位 - $750
🥈 2位 - $500
🥉 3位 - $250
複数の参加者が同数の票を獲得した場合、全参加者が勝者となり賞金は勝者間で分配されます。
参加資格
どなたでもご参加いただけます!(InterSystems 開発者コミュニティのアカウントを作成するだけでご応募いただけます)
👥 開発者がチームを組んで共同でアプリケーションを作成し、応募することもできます!
これは InterSystems FAQ サイトの記事です。
REST アプリケーションはステートレスであることが想定されています。
しかし、複数の REST 呼び出し間でデータを保持したい場合などの理由で、Webセッションを使用したい場合は、UseSession パラメータを使用することができます。
以下のように、Web アプリケーションのディスパッチクラスとして定義された %CSP.REST のサブクラスでUseSession パラメータを指定することで、CSPと同じようにWebセッションを使用することが可能となります。
Class REST.MyServices Extends %CSP.REST
{
Parameter UseSession As Integer = 1;
詳細は以下のドキュメントをご覧ください。
以下は、UseSession パラメータを使用した簡単なサンプルになります。最初に、2つのクラスを作成してください。
*
Class REST.SessionTest Extends %CSP.これは InterSystems FAQ サイトの記事です。
ダイナミックオブジェクトから JSON 文字列を生成するときに使用する %ToJSON() の引数にストリームオブジェクトを指定することでエラーを回避できます。
コード例は以下の通りです。
USER>set temp=##class(%Stream.TmpCharacter).%New()
USER>set jsonobj={}
USER>set jsonobj.pro1=["a","b","c","d"]
USER>set jsonobj.pro2=["あ","い","う","え"]
USER>do jsonobj.%ToJSON(temp)
USER>write temp.Size
51
USER>write temp.Read()
{"pro1":["a","b","c","d"],"pro2":["あ","い","う","え"]}詳細はドキュメントもご参照下さい。
開発者の皆さんこんにちは!
第10回 InterSystems グランプリ・プログラミングコンテスト への応募、投票が全て終了しました。コンテストへのご参加、またご興味をお持ちいただきありがとうございました。
今回のお知らせでは、見事受賞されたアプリケーションと開発者の方々を発表します!

🏆 Experts Nomination - 特別に選ばれた審査員から最も多くの票を獲得したアプリケーションに贈られます。
🥇 1位 - $6,000 は vscode-intersystems-iris を開発された @Dmitriy Maslennikov さんに贈られました!
🥈 2位 - $3,000 は iris-rad-studio を開発された @Henrique Dias Diasさんに贈られました!
🥉 3位 - $2,000 は HealthInfoQueryLayer を開発された @Botai Zhang さんに贈られました!
🏆 Community Nomination - 最も多くの票を獲得したアプリケーションに贈られます。
🥇 1位 - $3,000 は HealthInfoQueryLayer を開発された @Botai Zhang さんに贈られました!
これは InterSystems FAQ サイトの記事です。
INFORMATION_SCHEMA スキーマを使用して取得できます。
INFORMATION_SCHEMA はシステム用スキーマのため、デフォルトでは管理ポータルの SQL メニューに表示されません。
表示させる方法は以下の通りです。
.png)
指定のテーブル(Test.Person)に対するID、フィールド名(COLUMN_NAME)、データタイプ(DATA_TYPE)、説明(DESCRIPTION)を取得するSQLは以下の通りです。
SELECT ID,COLUMN_NAME,DATA_TYPE,DESCRIPTION
FROM INFORMATION_SCHEMA.COLUMNS
where TABLE_SCHEMA='Test' AND TABLE_NAME='Person'関連するFAQトピックもご参照ください:「プログラムから、クラス定義に記述されたプロパティ定義を取得する方法はありますか?」
これは InterSystems FAQ サイトの記事です。
SYS.ApplicationError クラスの ErrorList クエリを使用します。
注意1:%SYS ネームスペースで実行します。
注意2:ストアド化していないユーティリティのため %SQL.Statement ではなく %ResultSet クラスを利用します。
コマンド実行例は以下の通りです。
USER>set $namespace="%SYS" //または zn "%SYS"
%SYS>set rset=##class(%ResultSet).%New()
%SYS>set rset.ClassName="SYS.ApplicationError"
%SYS>set rset.QueryName="ErrorList"
// クエリの第1引数はネームスペース名、第2引数は日付を指定します(形式:MM/DD/YYYY)
%SYS>do rset.Execute("USER","08/17/2020")
// 画面に結果を表示させる場合は %Display()メソッドを実行します。
%SYS>do rset.これは InterSystems FAQ サイトの記事です。
永続クラス(=テーブル)定義に提供される %BuildIndices() メソッドの引数に、インデックスを再構築したい ID の開始値と終了値を指定することにより、その範囲内のインデックスのみが再構築できます。
例えば、Sample.Person クラスにある NameIDX インデックスと ZipCode インデックスを ID=10~20 のみ再構築する場合は、以下のように実行します(ID の範囲は、第5引数、第6引数に指定してます)。
set status = ##class(Sample.Person).%BuildIndices($LB("NameIDX","ZipCode"),1,,1,10,20) $LB() は $ListBuild() 関数で、%BuildIndices() メソッドでは、インデックス名を指定するために使用しています。
インデックスの再構築方法については、ドキュメントもご参照ください。
2018.1 以下はこちらのドキュメントをご参照ください。
これは InterSystems FAQ サイトの記事です。
※ ここで説明するバックアップ方法は、外部バックアップ(##class(Backup.General).ExternalFreeze()を使用する方法)ではご利用いただけません。
その1(差分)
毎週日曜日1時にフルバックアップ、月曜日~土曜日の1時に差分バックアップを取得しているとします。
差分バックアップは、前日の1時に取得したバックアップからの更新ブロックが含まれるバックアップです。
.png)
その2(累積)
毎週日曜日1時にフルバックアップ、月~火曜日の1時に差分バックアップ、水曜日1時に累積バックアップ、木~土曜日の1時に差分バックアップを取得するとします。
累積バックアップは、前回のフルバックアップからの更新ブロックが含まれるバックアップで、水曜日に累積バックアップを取得した場合、月曜日と火曜日の差分バックアップは水曜日に累積バックアップに含まれるため、累積バックアップ成功後、月曜日と火曜日に差分バックアップは破棄できます。
.png)
オンラインバックアップ詳細については「データベースのバックアップ方法について」や、下記ドキュメントをご参照ください。
<Ubuntu-Docker>
https://qiita.com/tkyonezu/items/0f6da57eb2d823d2611d 手順を参照
手順2.1-2.5までを実行→Docker環境ができる
<Docker-IRIS>
1. 端末などでディレクトリ /home/usr/docker/iris2020.3 を作成(ディレクトリ名は任意)
2. 上記ディレクトリに、インターシステムズから送られるDLサイトからダウンロードしたirishealth_ml-2020.3.0.304.0-docker.tar.gz を置く
2.1 上記ディレクトリに、データベース・設定を保存するディレクトリを作成(/home/usr/docker/iris2020.3/mgr とする)
3. 上記ディレクトリに、ライセンスされたキーであるiris.keyを置き、端末コマンドcdで上記ディレクトリに移動
4. コマンド実行(tar.gzのままimageのload)
sudo docker load -i /home/usr/docker/iris2020.3/irishealth_ml-2020.3.0.304.0-docker.tar.gz
5.