Azure ADをOPとして利用する
元のタイトルから外れますがAzure ADをOPとした場合に、Wepアプリケーション(CSP)とSPA+BFF形式のRPにどのような修正が必要かを調べました。
ある程度の差異は想定はしていましたが、思っていたより違うな、という印象を受けました。RP、リソースサーバ側でこれらの差異を吸収する必要がありました。
個人調べです。誤りがあるかもしれませんが、その際はご容赦ください。また、状況は刻々と変わる可能性があります。
InterSystems IRIS for Health™は、世界で最も重要なデータを管理する医療アプリケーションの迅速な開発を目的に特別に設計された世界初、かつ唯一のデータプラットフォームです。 トランザクションの処理と分析、拡張可能な医療データモデル、FHIRベースのソリューション開発、医療情報の相互運用性に関わる標準規格への対応など、すぐに使える強力な機能を搭載しています。 これらすべての機能により、開発者は価値を実現し、画期的なアプリケーションをすばやく構築することができます。 詳細はこちらをご覧ください
元のタイトルから外れますがAzure ADをOPとした場合に、Wepアプリケーション(CSP)とSPA+BFF形式のRPにどのような修正が必要かを調べました。
ある程度の差異は想定はしていましたが、思っていたより違うな、という印象を受けました。RP、リソースサーバ側でこれらの差異を吸収する必要がありました。
個人調べです。誤りがあるかもしれませんが、その際はご容赦ください。また、状況は刻々と変わる可能性があります。
インターシステムズは、InterSystems IRIS Data Platform、InterSystems IRIS for Health、HealthShare Health Connect、InterSystems IRIS Studio の 2023.1 リリースを一般提供開始(GA)したことを発表しました。
2023.1 は、拡張メンテナンス(EM)リリースです。2023.1では、多くのアップデートと機能拡張が追加されました。
また、Columnar Storageの本番対応、Bulk FHIR、MacOS 13 Venturaへの対応など、まったく新しい機能が追加されています。さらに、 Foreign Table を使用する機能を提供する新機能は「実験的」としてリリースされ、早期アクセスプログラム(EAP)を通じてアクセスできるようになる予定です。
InterSystems IRIS Data Platform 2023.1では、本番用に以下の新しいオペレーティングシステムをサポートします。
インターシステムズは、InterSystems IRIS、InterSystems IRIS for Health、HealthShare Health Connect 2022.1.3 のメンテナンスリリースを公開しましたのでお知らせします。このリリースでは、これまでの2022.1.xリリースに対して厳選された機能とバグフィックスが提供されます。
変更点についての追加情報は、これらのページでご覧いただけます
より良い製品にするため、開発者コミュニティにご意見をお寄せください。
ソフトウェアの入手方法
本ソフトウェアは、古典的なインストールパッケージとコンテナイメージの両方が利用可能です。 利用可能なインストーラとコンテナ・イメージの詳細なリストについては、「サポート対象プラットホーム」を参照してください。
InterSystems IRISとInterSystems IRIS for Healthのインストール・パッケージは、このWRCのInterSystems IRIS Data Platform Full Kits のページから入手できます。
インターシステムズは、まれに Enterprise Cache Protocol (ECP) クライアントが不安定になることがある不具合を修正しました。
この不具合は、以下の製品およびそれらをベースとしたインターシステムズの製品に存在します。
影響を受けるバージョン: 2022.1.x, 2022.2, 2022.3
InterSystems IRIS®
InterSystems IRIS for Health™
HealthShare® Health Connect
影響を受けるバージョン: 2022.2 (ECPを導入しているお客様のみ)
InterSystems HealthShare®
この問題は、ECPクライアントシステムでのみ発生する可能性があります。この問題が発生すると、プロセスで <SYSTEM> または <DATABASE> エラーが発生することがあります。エラー後、ECPクライアントが不安定になり、場合によってはインスタンスがハングアップすることがあります。データへの影響はなく、ECP データサーバーも影響を受けません。
不安定な状態を解消するには、ECP クライアントインスタンスを再起動する必要があります
IRIS、IRIS for Health、またはHealth Connectのインスタンスに影響がある場合、近日中にリリースされるバージョン2023.1または2022.1.
インターシステムズは、SQL クエリによって不正な結果が返される可能性がある不具合を修正しました。
この不具合は、以下の製品およびそれらをベースとしたインターシステムズの提供する製品に存在します。
影響を受けるバージョン: 2021.2, 2022.1.x, 2022.2, 2022.3
InterSystems IRIS®
InterSystems IRIS for Health™
HealthShare® Health Connect
影響を受けるバージョン: 2022.2
InterSystems HealthShare®
この問題は、SQL Runtime Plan Choice (RTPC) が有効(デフォルト設定)で、クエリに「真理値」である WHERE ? = ? が含まれている場合、発生することがあります。この問題が発生すると、一部の述語が正しく評価されない可能性があり、これが不正なクエリ結果につながります。
注意: SQL を確認することで、クエリの脆弱性を完全に評価することは不可能です。これは、InterSystems SQL のクエリ最適化により、クエリの内部表現に真理値が追加されるためです。
これは InterSystems FAQ サイトの記事です。
以下の状態の時、ReadOnlyでマウントされます。
これは InterSystems FAQ サイトの記事です。
Question:
TIMESTAMP型の項目に対して、TO_CHAR() や TO_DATE() を用いた SELECT を実行すると以下のエラーになります。
実行SQL:
select
TO_CHAR(xxxDateTime,'YYYY-MM-DD')
from
Testエラー:
[SQLCODE: <-400>:<深刻なエラーが発生しました>]
[%msg: <Unexpected error occurred: <ZCHAR>IllegalValuePassedToTOCHAR^%qarfunc>]
エラーの原因を教えてください。
Answer:
こちらは、IRIS2022.1以降のバージョンで CREATE TABLE (DDL) の TIMESTAMP 型が IRIS側クラスで %Library.PosixTime にマッピングするように変更されているためです。
(アップグレードした環境の場合は、従来のままの %Library.TimeStamp にマッピングされています)
%TimeStamp は、データを人が読める文字列(yyyy-mm-dd hh:mm:ss.ffff)として保存します。
これは、InterSystems FAQサイトの記事です。
管理ポータルの監査メニューを使用する場合、ユーザに監査データベースの閲覧のみを許可するということはできません。
管理ポータルから監査データベースを閲覧する場合は、そのユーザに、
・%Admin_Secure:U(監査以外にもセキュリティ関連の操作が可能となる)
・%DB_IRISAUDIT:RW(監査データベースへの読み込み/書き込み権限)
等のリソースへの権限が必要になりますが、これを与えることにより、監査データベースの閲覧以外の操作も可能となってしまいます。
監査データベースの閲覧のみを許可したい場合には、管理ポータルの監査メニューは使用せず、外部ツール等からSQLで監査テーブルを参照するようにします。
このとき、ユーザに必要な権限は以下の通りです。※他の権限は与えないようにします。
・IRISAUDITデータベースへのRW権限 ⇒ %DB_IRISAUDITロールの付与
・%SYS.AuditテーブルへのSelect権限
1.新規ロールの作成
必要な2つの権限のみを含むロールを作成します。
これは、InterSystems FAQサイトの記事です。
%Library.GlobalクラスのExport()メソッドを使用してエクスポートする際に、エクスポート形式(第4引数:OutputFormat)を 7 の「ブロックフォーマット/Cachéブロックフォーマット(%GOF)」にした場合、マッピングされたグローバルはエクスポートできない仕様となっています(対象はネームスペースのデフォルトグローバルデータベースのグローバルのみ)。
マッピングされたグローバルを「ブロックフォーマット/Cachéブロックフォーマット(%GOF)」でエクスポートする為には、%Library.Global.Export()の第1パラメータにマッピング先のデータベースディレクトリを指定します。
実行例は以下の通りです。
これは、InterSystems FAQサイトの記事です。
HL7の仕様では、日本語データを送受信する場合はJISを文字コードとして利用し、メッセージヘッダ(MSH)の18番目の2項目に iso-ir87 を指定します。
HL7用プロダクションでは、情報の入力はビジネスサービス、情報の出力はビジネスオペレーションを利用します。
日本語を含むHL7を送受信する場合は、入力/出力の対象となる全てのコンポーネントの設定で [追加の設定] の「キャラクターセット(Charset)」に iso-ir87 を指定することで正しく日本語データを取り扱うことができます。

これは、InterSystems FAQサイトの記事です。
データの登録/更新/削除を実行中でも、インデックスを再構築することは可能です。
ただし、再構築中は更新途中の状態で参照されますので、専用ユーティリティを使用することをお勧めします。
手順は以下の通りです。
実行例は以下の通りです。
Sample.Person の Home_State(連絡先住所の州情報)カラムに対して標準インデックス HomeStateIdx を定義する目的での例で記載します。
1、追加予定のインデックス名を Caché のクエリオプティマイザから隠します。
2、インデックス定義を追加した後、再構築を実施します。
定義例)Index HomeStateIdx On Home.State;
これは、InterSystems FAQサイトの記事です。
管理ポータル:システムエクスプローラの使用には、%DevelopmentリソースのUse特権が必要です。
システムエクスプローラでの参照のみ利用可能とする権限をユーザに付与したい場合は、%DevelopmentリソースのUse特権(※1)と、該当のデータベースリソース(※2)への参照特権(R)を付与したロールを作成し、これをユーザに与えます。
※1.「%Development:U」を付与している場合はターミナルやスタジオも参照のみで使用可能となります。
※2.参照したいデータベースに割り当てられているリソースが%DB_DEFAULTリソースになっており、このデータベースのみに参照権限を設定したい場合は、事前に、このデータベース用の独自リソース(%DB_<データベース名>)を作成し、該当データベースに割り当てるようにします。
【例】:testAユーザに、TESTデータベースへの参照のみを許可する。
0.独自リソースの作成
管理ポータル:[システム管理]>[構成]>[システム構成]>[ローカルデータベース]>(該当データベースを選択)
1.新規ロール作成
2.ロール編集(リソースへの権限の追加)
3.上記で作成したロールをユーザに付与。
テクノロジー分野で 19 年間働いてきた中、様々な分野でいくつかのプロジェクトに参加することができましたが、健康分野は私が一番惹かれている分野の 1 つです。
健康に焦点があてられたものを作成するチャンスを得るたびに、FHIR プロトコルを使用することにワクワクしています。
とは言え、テック系の 3 人の IT 男子で構成されるチームでは、本当に利用価値のあるものを作り出すのは困難であるため、女性の健康のように重要なトピックにおいては、この主題を非常によく理解している人をチームに招きました。
これは InterSystems FAQ サイトの記事です。
バージョン2017.2以降から、CREATE TABLE文で作成したテーブル定義のデータを格納するグローバル変数の命名ルールが変わり ^EPgS.D8T6.1 のようなハッシュ化したグローバル変数名が設定されます。(この変更はパフォーマンス向上のために追加されました。)
※ バージョン2017.1以前については、永続クラス定義のルールと同一です。詳細は関連記事「永続クラス定義のデータが格納されるグローバル変数名について」をご参照ください。
以下のテーブル定義を作成すると、同名の永続クラス定義が作成されます。
CREATE TABLE Test.Product(
ProductID VARCHAR(10) PRIMARY KEY,
ProductName VARCHAR(50),
Price INTEGER
)永続クラス:Test.Productの定義は以下の通りです。(パラメータ:USEEXTENTSETに1が設定されます)
「IRISだけでoAuth2/OpenID ConnectのSSO/SLO環境を実現する/サーバ編」 のクライアントアプリケーション編です。サーバ編の構成が既に稼働していることを前提にしています。
既にサーバ編でgit clone実行された方(ありがとうございます)、若干の変更がありますのでgit pullと./build.shの実行をお願いします。
oAuth2クライアントアプリケーション(OICD用語ではRP。以下RPと称します)の形態として、5種類用意しています。
| 形態 | ライブラリ | 登録クライアントタイプ | SSO | SLO |
|---|---|---|---|---|
| Webアプリケーション | IRIS/CSP | Confidential | 実装あり | 実装あり |
| SPA | Angular | Public | 実装あり | 実装なし |
| SPA+BFF | Angular,IRIS/REST | Confidential | 実装あり | 実装あり |
| Python | oauthlib | Confidential | N/A | N/A |
| curl | N/A | Confidential | N/A | N/A |
PythonやcurlがConfidential(client_secretの秘匿性を十分に保てる)か、というと微妙ですが、あくまで利用者は開発者のみ、という位置づけです。
開発者の皆様、こんにちは。
医療ソリューション・サービスプロバイダー様向けにシリーズでお送りしているセミナーの第三弾のお知らせを致します。
是非ご参加くださいますようご案内致します。
開発者の皆さん、こんにちは!
この記事では、Developer Hub にあるチュートリアルの4番目のご紹介となる REST + Augular App チュートリアル についてご紹介します。
チュートリアルでは、IRISを利用してRESTサービスで使用するテーブル、データ、RESTサーバの機能をサンプルコードをコピーしながら作成していきます。
チュートリアルの中で作成するWebアプリはとてもシンプルな内容で、データベースにブックマークとして登録したいURLを保存し、参照するだけのページとしています。
データの登録も、IRISの管理ポータルのSQLメニューでINSERT文を実行する形式で進めていきます。
最終的には、以下の図にあるように「Add a new bookmark」以下のテキストボックスで新しいブックマークを登録できるように、Web画面とRESTサーバ用コードを追加していきます。
.png)
アカウント作成やログインも不要で
ボタンをクリックするだけで始められます👍
ぜひ、お試しください!
開発者の皆さん、こんにちは。
Python Native APIを利用すると、IRISにあるグローバル変数の参照/更新をPythonから行えたり、メソッドやルーチンをPythonから実行することができます。
この記事では「AWS Lambda の IRIS Python Native API IRIS」の記事を参考に、NativeAPIを利用してPythonからIRISに接続するAWS Lambda関数を作成する流れで必要となる、レイヤー作成と関数用コードの作成例をご紹介します。
※ 事前にAWSのEC2インスタンス(Ubuntu 20.04を選択)にIRISをインストールした環境を用意した状態からの例でご紹介します。
- 「AWS Lambda の IRIS Python Native API IRIS」の記事では、レイヤーとコードをまとめたZipを用意してLambda関数を作成していますがこの記事ではレイヤーとコード用Zipをそれぞれ用意して作成する流れでご紹介します。
- NativeAPIについて詳しくは、「【はじめての InterSystems IRIS】セルフラーニングビデオ:アクセス編:Python の NativeAPI に挑戦」をご参照ください。
本記事は、あくまで執筆者の見解であり、インターシステムズの公式なドキュメントではありません。
IRISのoAuth2機能関連の情報発信は既に多数ありますが、本稿では
ということを主眼においています。
コミュニティ版で動作しますので、「とりあえず動かす」の手順に従って、どなたでもお試しいただけます。
現状、使用IRISバージョンはIRIS 2023.1のプレビュー版になっていますが、ソースコードは適宜変更します。
手順に沿ってコンテナを起動すると下記の環境が用意されます。この環境を使用して動作を確認します。

ユーザエージェント(ブラウザ)やPython/curlからのアクセスは、全てApache (https://webgw.localdomain/) 経由になります。青枠の中のirisclient等の文字はコンテナ名(ホスト名)です。
例えば、irisclientホストの/csp/user/MyApp.Login.clsにアクセスする場合、URLとして
https://webgw.localdomain/irisclient/csp/user/MyApp.Login.cls
と指定します。
つまり、各エンドポイントは同一のorigin (https://webgw.localdomain) を持ちます。そのため、クロスサイト固有の課題は存在しません(カバーされません)が、仮に各サーバが別のドメインに存在しても基本的には動作するはずです。
oAuth2/OIDC(OpenID Connect)の利用シーンは多種多様です。
本例は、認証・認可サーバ,クライアントアプリケーション,リソースサーバの全てがIRISで実行されるクローズドな環境(社内や組織内での使用)を想定して、認可コードフロー(Authorization Code Flow)を実現します。分かりやすい解説が、ネットにたくさんありますので、コードフロー自身の説明は本稿では行いません。
認証・認可サーバの候補はIRIS, WindowsAD, Azure AD, AWS Cognito, Google Workspace, keycloak, OpenAMなどがあり得ます。個別に動作検証が必要です。
クライアントアプリケーション(RP)は、昨今はSPAが第一候補となると思いますが、利用環境によっては、SPA固有のセキュリティ課題に直面します。
IRISには、Confidential Clientである、従来型のWebアプリケーション(フォームをSubmitして、画面を都度再描画するタイプのWebアプリケーション)用のoAuth2関連のAPI群が用意されています。
そこで、Webアプリケーション(CSP)を選択することも考えられますが、クライアント編では、よりセキュアとされるSPA+BFF(Backend For Frontend)の構成を実現するにあたり、Webアプリケーション用APIをそのまま活用する方法をご紹介する予定です。
以下、サーバ編の動作確認には、CSPアプリケーションを使用しています。これは、新規開発にCSP(サーバページ)を使用しましょう、という事ではなく、BFF実現のために必要となる機能を理解するためです。BFFについては、クライアント編で触れます。BFFについては、こちらの説明がわかりやすかったです。
リソースサーバの役割はデータプラットフォームであるIRISは最適な選択肢です。医療系用のサーバ機能ですがFHIRリポジトリはその良い例です。本例では、至極簡単な情報を返すAPIを使用しています。
少しの努力でFHIRリポジトリを組み込むことも可能です。
サーバ編とクライアント編に分けて記載します。今回はサーバ編です。
とはいえ、クライアントとサーバが協調動作する仕組みですので、境界は少しあいまいです
開発者の皆さん、こんにちは。
前の記事では「機械学習を試せるチュートリアル:IntegratedML」で試せる内容をご紹介しましたが、この記事では Interoperability(相互運用性)チュートリアル の内容を少しご紹介します。
Interoperability(相互運用性)チュートリアルでは、Redditに新しく投稿された記事=(https://www.reddit.com/new/)を一定間隔で取得し、全投稿の中から「猫(cat)」🐈について記載されている情報のみを抽出し、対象記事をファイル出力する流れをご体験いただけます。
これは InterSystems FAQ サイトの記事です。
テーブル名/カラム名/インデックス名を変更したい場合、以下のケース別に変更方法をご案内します。
-------------------------------------------------------------------------
A. テーブル名・カラム名の変更する方法
-------------------------------------------------------------------------
テーブル(クラス)名とカラム(プロパティ)名は基本的には変えないようにしてください。
もし「SQLアクセス時の名前だけ変更したい」場合は、以下のように新しい名前を SqlTableName(テーブル名)、SqlFieldName(カラム名) として指定することができます。
Class User.test Extends %Persistent [ SqlTableName = test2 ] {
Property p1 As %Integer [ SqlFieldName = xx ];
....開発者の皆さん、こんにちは。
AWSのEC2インスタンス(Ubuntu 20.04を選択)にIRISをインストールした環境を事前に用意した状態からの流れですが、AWS Lambda 関数からPyODBC経由でIRISに接続するまでの流れを試してみました。
- Native APIを利用する流れについては、「AWS Lambda の IRIS Python Native API IRIS」をご参照ください。
- 参考にしたAWSドキュメント:https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-python.html
以下の流れでご紹介します。
例で使用しているコード一式はこちらにあります👉https://github.com/Intersystems-jp/iris-pyodbc-lambda
Visual Studio Code 用のエクステンション(拡張機能)には、その動作を構成するための多くの設定が用意されています。
設定可能な項目一覧は、こちらの VS Codeドキュメント でご紹介しています(英語のみ)。
今回は、これらの設定の中で「コンパイルフラグを変更したい場合」の例で、設定の変更方法をご案内します。
※コンパイルフラグの詳細については こちらの記事 をご覧ください。
① メニューから File(ファイル) > Preferences(ユーザ設定) > Settings(設定) (macOS では Code > Preferences > Settings) を選択し、設定エディタを開きます。
.png)
② 検索欄に、objectscript と入力して設定を絞り込み、今回は検索欄の下にある [Workspace(ワークスペース)] (※)を選択します。
※ユーザー:PCのユーザーごとに設定したい場合や、ワークスペースを作っていない時に利用する設定
ワークスペース:ワークスペースを作成して作業するときに、ワークスペース全体に適用して利用する設定
.png)
③ 表示されている設定項目の中から変更したい項目を見つけます。
今回は、コンパイルフラグを変更したいので「objectscript.compileFlags」になります。
この度、InterSystems IRIS, InterSystems IRIS for Health, HealthShare Health Connect の追加メンテナンスリリース2021.1.3 を公開しました。
このリリースではこれまでの2021.1.xのリリースよりいくつかの機能やバグフィックスを提供しています。
変更点についての詳細な情報はこれらのページでご覧いただけます。
より良い製品を一緒に作っていくために開発者コミュニティを通じてご意見をお聞かせください。
ソフトウェアの取得方法
このソフトウェアは、通常のインストールパッケージとコンテナイメージの両方が利用可能です。 利用可能なインストーラーとコンテナイメージの全リストについては、Supported Platforms webpage をご参照ください。
各製品のインストール・パッケージは、WRCのSoftware Distribution page より入手可能です。 コンテナ・イメージは、InterSystems Container Registry
から入手できます。
このリリースでは、Community Editionのキットやコンテナは利用できません。
これは2023.1の開発者プレビュープログラムの第3弾となります。2023.1では多くのアップデートや機能強化が追加されており、カラムナーストレージの本番環境サポートや、Bulk FHIRの使用、MacOS 13 Venturaのサポートといった新機能が予定されています。これらの機能または改善点の一部は、今回の開発者向けプレビューで利用できない場合があります。
今後のプレビューリリースは隔週で更新される予定であり、準備が整い次第、機能を追加していく予定です。より良い製品を一緒に作り上げていくために、開発者コミュニティを通じてフィードバックをお願いします。
ドキュメントは、以下のリンクからご覧になれます。これらは、発売が正式に発表される(General Availability - GA)までの間、数週間にわたって更新される予定です。
さらに、このリリースに関連するアップグレード情報については、このリンクを参照してください。
通常、エクステンド・メンテナンス(EM)リリースには、サポートされるすべてのプラットフォーム用のクラシック・インストール・パッケージと、Dockerコンテナ形式のコンテナ・イメージが付属しています。
Windowsクライアント環境に、スタンドアロンの IRIS ODBC ドライバをインストールする際、
Error 1918. Error installing ODBC driver InterSystems
IRIS ODBC.35, ODBC error 13: システム エラーコード
126: 指定されたモジュールが見つかりません。
のエラーとなりインストールに失敗する場合の対処法をご案内します。
※インストール時に以下のようなエラーが出る場合です。
.png)
***
こちらのエラーは、Windowsクライアント環境に必要なバージョンの Microsoft VC++ ランタイム ライブラリがインストールされていない場合に出力されます。
この場合、ODBCドライバをインストールする前に、必要なバージョンの「Visual C++ 再頒布可能パッケージ」をインストールする必要があります。
以下のマイクロソフト社のページより、VC++ 再頒布可能パッケージ をダウンロードしてインストールしてください。
https://docs.microsoft.com/ja-jp/cpp/windows/latest-supported-vc-redist?view=msvc-170
> Visual Studio 2015、2017、2019、および 2022
なお、IRIS 2022.
開発者の皆さん、こんにちは!
前の記事では、開発者向け情報を集めた「Developer Hub」をご紹介しましたが、この記事では Developer Hub のチュートリアルの中から「機械学習」をテーマとしたチュートリアル:IntegratedML についてご紹介します
InterSystems IRISには、機械学習を行うために必要なプロセスのいくつかを自動化するAutoMLの機能が組み込まれていて、機能名として「IntegratedML」と呼んでいます。機能概要については、末尾のビデオをご参照さい。
チュートリアルを始めるための準備は不要で、
ボタンをクリックするだけでチュートリアルを開始できます。
これは InterSystems FAQ サイトの記事です。
^%GCMP ユーティリティにて2つのグローバルの内容を比較することができます。
例としてUSERとSAMPLESネームスペースにある、^testと^testを比較する場合は以下のようになります。
※以下の例では、2つのネームスペースに全く同じグローバルを700個作り、その中の一つの中身を変えて検出対象としています。
開発者の皆さん、こんにちは!
IRISのRESTディスパッチクラスのデバッグがVSCodeで簡単にできるようになりましたので、利用手順についてご紹介します。

これは InterSystems FAQ サイトの記事です。
コミュニティ版は1インスタンスでの利用を想定しているため、2インスタンス以上で設定する構成は利用できません。
製品版と異なる点は以下の通りです。
最新情報は InterSystems IRIS Community Edition Limitations をご確認ください。
※上記制限事項はバージョン2022.2~の情報です。バージョン2022.1以前の制限事項は日本語ドキュメント「InterSystems IRIS Community Edition の制限」をご参照ください。