前回の記事でSMART On FHIRプロジェクトのアーキテクチャを紹介したので、いよいよ本題に入り、必要となる全ての要素の設定を始めましょう。
まずはAuth0から始めます。
Auth0の設定
登録が完了したら、左側のメニューから最初のアプリケーションを作成します

この例では、Angular 16で開発されたアプリケーションなので、Single Page Web Applicationタイプとなります。このオプションを選択し、Createをクリックします。

次の画面では以下のフィールドを定義する必要があります。
- 許可されるコールバックURL:https://localhost
- 許可されるログアウトURL:https://localhost
- 許可されるWebオリジン:https://localhost
- クロスオリジン認証を許可する:チェック済
- 許可されたオリジン(CORS):https://localhost
注意: URLはすべてHTTPSでなければなりません。これはOAuth2接続要件の1つです。
これはOAuth2接続の要件の1つです。これでAuth0が認証と認可プロセスの後にユーザーをリダイレクトするために必要なURLを設定しました。
これは、InterSystems FAQサイトの記事です。
管理ポータルのグローバル変数表示ページでは、サブスクリプトレベルの範囲を指定して表示することが可能です。
各サブスクリプトレベルで、 <開始値>:<終了値> のように指定します。
開始値を省略すると先頭から終了値まで、終了値を省略すると指定値から最後までのグローバル変数を表示します。
《例》
(グローバル全体)
(第2サブスクリプトが"b"のデータだけを表示)

(第3サブスクリプトが300以上のデータを表示)

(第3サブスクリプトが50以下のデータを表示)
下記ドキュメントページも併せてご確認ください。
【ドキュメント】グローバル・データの表示
これは、InterSystems FAQサイトの記事です。
区切り識別子は、区切り文字で囲まれた一意の識別子です。
InterSystems SQL は、その区切り文字として二重引用符 「"」 をサポートしています。
一方、リテラル値を区切る場合は、一重引用符「'」を使用します。
例えば、下記のSQLにおいて、
①は、Nameの値が「AAA」という文字列である、という検索条件と解釈されますが、
②は、Name列 = AAA列、という結合条件と解釈されます。※実際にAAA列が無ければエラーとなります。
①
select * from Samle.Person
whereName = 'AAA'
②
select * from Sample.Person
whereName = "AAA"
リテラル値(文字列、数値)を示す区切り文字として二重引用符「"」を使用したい場合は、
下記を実行し、この区切り識別子サポートするためのオプションを無効にします。
//現在の状態を確認する
USER> write$SYSTEM.SQL.Util.GetOption("DelimitedIdentifiers")
1//0=「無効」にセット
USER>do$SYSTEMSQL.Util.これは、InterSystems FAQサイトの記事です。
既定では、InterSystems製品で表すことのできる日時の最小値は、1840年12月31日 0時0分0秒 です。
USER>write$ZDATETIME("0,0")
12/31/184000:00:00 ですが、アプリ内での用途や、他DBからの登録などで、それよりも前の日付時刻を登録する必要がある場合があります。
その場合には、日付日時のプロパティに、MINVAL(最小値)を設定することでサポートできます。
下記は、%DateTime型、%TeimaStamp型のプロパティに、最小値:西暦1年1月1日0時0分0秒と設定したものです。
Property TestDateTime As %DateTime(MINVAL = "0001-01-01 00:00:00");Property TestTimeStamp As %TimeStamp(MINVAL = "0001-01-01 00:00:00");※2023.3および2024.1以降のバージョンでは、%DateTime型のMINVALの設定は必要なく、1840年12月31日 0時0分0秒より前の日時でも問題なく登録できます。%TimeStamp型の場合は、引き続き設定が必要です。
これは InterSystems FAQ サイトの記事です。
新しいインデックスを定義した後、インデックスの再構築が完了する前にクエリを実行するとデータが存在しているにもかかわらず「検索結果0件」や検索結果数が徐々に増えるような状況が発生します。
インデックスを永続クラス定義(またはテーブル定義)に追加しコンパイルすることで今まで使用していたクエリ実行経路が削除され、再度同じクエリを実行するタイミングで新しいインデックス定義を含めた実行経路が作成されるためです。(この時にインデックス再構築が完了していないとインデックスデータが存在しない、または不完全であるため0件や徐々に検索結果数が増えるような状況を起こします。)
これを起こさなために、新しいインデックスの再構築が終了するまでクエリオプティマイザにインデックスを使用させないように指定する方法が用意されています。
※ 2024/8/2: 2024.1以降から利用できる方法を追加しました。
2024.1以降
CREATE INDEXのDEFERオプションを使用します(オプションを付けないCREATE INDEX文では、作成時にインデックスの再構築も同時に行われます)。
インターシステムズは InterSystems IRIS Data Platform, InterSystems IRIS for Health, HealthShare Health Connect バージョン 2024.2 をリリースしました。
リリースハイライト
2024.2 は Continuous Delivery(CD)リリースです。
2024.2 には多くのアップデートや拡張機能が追加されています。
開発者向け機能の強化
- スタジオの削除 - 本リリース以降、Windows キットにはスタジオが含まれなくなります。つまり、このキットを使用した新規インストールではスタジオがインストールされません。既存のインスタンスをバージョン 2024.2以降にアップグレードした場合は、インスタンスの bin ディレクトリから スタジオが削除されます。スタジオをこれからも利用されたい方は、WRC 配布ページから 2024.1 スタジオの独立したコンポーネントをダウンロードできます。
- 外部テーブル の正式サポート - 2024.2 リリースでは、早期アクセスユーザからのフィードバックに対応しており、メタデータ管理の改善、述語プッシュダウンの改善、外部データをIRIS SQLテーブルに投影するのではなく取り込む LOAD DATA コマンドとのさらなる調整などが行われています。
こんにちは。
VSCodeでObjectScriptにコメントを挿入する拡張機能を作成してみましたので、共有させて頂きたいと思います。
使い方はとても簡単で、コンテキストメニューから「コメントの追加」を選択するだけです。
カーソル位置に合ったコメントが挿入されます。
挿入するコメントの定型文は設定で自由に指定できます。
クラスの説明文を挿入する
パラメーターやプロパティの説明文を挿入する
メソッドの説明文を挿入する
インターシステムズは、InterSystems IRIS、InterSystems IRIS for Health、HealthShare Health Connect のメンテナンスバージョン 2024.1.1 をリリースしました。2024.1.1 は 2024.1.0 に対するバグフィックスを提供しています。詳細な情報は、以下のページをご参照ください(すべて英語版です)
InterSystems IRIS
InterSystems IRIS for Health
HealthShare Health Connect
【キットのご案内】
本製品は、従来からのインストーラパッケージ形式と、コンテナイメージ形式をご用意しています。その一覧は、サポートプラットフォームページをご覧ください。
インストーラパッケージは WRC Direct から入手できます。InterSystems IRIS、IRIS for Health は IRIS ダウンロードページから、HealthShare Health Connect は HealthShare ダウンロードページから、それぞれ入手してください。
コンテナイメージは InterSystems Container Registry から入手できます。コンテナイメージには 2024.1 のタグが付けられています。
ご好評をいただいておりますインターシステムズ開発者向けオンラインセミナー、9月は以下のテーマで開催いたします。
テーマ「InterSystems IRIS® サーバーとデータの守り方入門」
日時:9月6日(金)13:30~14:00 (参加費無料・事前登録制)
[概要]
はじめはユートピアになると考えられていたサイバー空間にも多様な脅威が出現し、日々変化し続けています。
多くの分野で活用されている IRIS と IRIS for Health、より厳しいセキュリティ要件は避けられない未来とも言えるでしょう。
本セッションではIRISインスタンスと管理するデータを保護する方法について概要をご説明します。
[こんな方にお勧め]
IRISの管理機能に興味ある方
IRISを使用したソリューションを設計される方
ご多用中とは存じますが、皆様のご参加をお待ち申し上げております!
これは InterSystems FAQ サイトの記事です。
通常SQLCODE -114(一致する行が既に別のユーザにロックされています)のエラーはロックが競合した場合に発生します。
こちらはレコードロック競合があったり、ロック閾値を超える更新を行いテーブルロックに昇格した際に、そのテーブルレコードに対して別のプロセスよりSelectを行い共有ロックを取ろうとして失敗した(ロック待ちがタイムアウトとなった)場合に発生します。
Selectで共有ロックを取る場合というのは、IRIS の ISOLATION LEVEL がREAD COMMITTED(デフォルトはREAD UNCOMMITTED)で、Selectを行った場合です。
例:Sample.Personテーブルにテーブルロックがかかった状態で以下を実行する場合
USER>:sql
SQL Command Line Shell
----------------------------------------------------
The command prefix is currently set to: <<nothing>>.
Enter <command>, 'q' to quit, '?' for help.これは InterSystems FAQ サイトの記事です。
JDBC および ODBC 経由でInterSystemsIRISから外部データベースにアクセスしたい場合、SQLゲートウェイを使用しリンクテーブルを作成して接続できます。
2023.1以降のバージョンでは、リンクテーブルに加えて、外部テーブル/FOREIGN TABLE を使用することが可能となりました(2024.1時点で実験的機能)。
外部テーブルというのは、物理的に別の場所に保存されているデータを IRIS SQL に投影する非常に便利な機能です。
外部テーブルを使用する場合は、Java(2023.1の場合は1.8~)を事前にインストールし、JAVA_HOME環境変数を設定するだけで、簡単に接続することが可能です。
※JAVA_HOME環境変数設定例:
外部テーブルの使用方法については、以下の記事で紹介しております。
レシピデータセットを外部テーブルで読み込み、組み込みPythonでLLMを使って分析する (Langchain + OpenAI)
こちらの記事では、外部テーブルで作成できる2種類のテーブル(「CSVファイル直接接続」と「外部DBへのJDBCゲートウェイ経由での接続」)の簡単なサンプル作成例と、外部テーブルの特徴を紹介しています。
1-1.
埋め込みPythonは、同じプロセス空間で、IRIS言語とPython言語を組み合わせて使える面白い環境を提供しますが、組み合わせて使う場合、オブジェクトタイプとそのアクセス方法の違いをはっきり意識して使わないと混乱するように思います。その使い分けの勉強の為、両言語のオブジェクト参照から、その構造を解析ダンプするツールを作ってみました。とくに、実行中のPython情報が、ZWRITE Oref コマンドでの表示しかないようなので、有用かも知れません。ツールは、まだ、間違い、改良等があると思います(教えて下さい)が、ポストします。
ツール本体: Py.Dump.cls
Class Py.Dump Extends%RegisteredObject
{
/// Py.Dump.cls/// ObjectScript 及び Python のオブジェクトデータ解析ツール(ダンパー)/// 入力:ObjectScript 及び 埋め込みPython のデータオブジェクト参照 Oref/// 出力: 端末と指定グローバル/ローカル変数(デフォルトは ^||o)に Oref のデータ構造を解析し出力する/// 変数には、データタイプの木構造がセットされる/// 呼び出し:/// >d ##Class(Py.Dump).InterSystems API Manager (IAM) のバージョン 2.8.4.10 と 3.4.3.10 が公開されました。 これらは、長期的にサポートされている IAM の 2 つのバージョンの最新版です。これらのリリースには重要な修正が含まれており、すべてのお客様にアップグレードをお勧めします。
IAM 3.0または3.2をお使いのお客様は、これらのバージョンのサポートがまもなく終了するため、3.4.3.10にアップグレードすることをお勧めします。
IAM は、InterSystems IRIS サーバとアプリケーション間の API ゲートウェイであり、HTTP ベースのトラフィックを効果的に監視、制御、管理するためのツールを大規模に提供します。IAM は、InterSystems IRIS ライセンスの無償アドオンとして利用できます。
IAMは、WRCソフトウェア配布サイトのComponentsエリアからダウンロードできます。
ダウンロード、インストール、IAMの使用方法につきましては、インストール・ガイドをご参照ください。InterSystems IRIS での使用に関する詳細な情報についてはドキュメントをご参照ください。パートナーであるKong社では、IAMの使用に関する詳細なドキュメントとしてKong Gateway (Enterprise) 3.
これは InterSystems FAQ サイトの記事です。
管理ポータル > [システム管理] > [セキュリティ] 以下の設定は、%SYSネームスペースにあるSecurityパッケージ以下クラスが提供するメソッドを利用することでプログラムから作成することができます。
以下シナリオに合わせたセキュリティ設定例をご紹介します。
シナリオ:RESTアプリケーション用設定を作成する
事前準備
シナリオの中で使用するソースを2種類インポートします。
アプリケーション用RESTディスパッチクラスをインポートします。
Class Test.REST Extends%CSP.REST
{
Parameter CHARSET = "utf-8";Parameter CONTENTTYPE = "application/json";Parameter CONVERTINPUTSTREAM = 1;
XData UrlMap [ XMLNamespace = "http://www.intersystems.これは InterSystems FAQ サイトの記事です。
SQLゲートウェイの接続設定は管理ポータルで作成できますが、プログラムでも作成が可能です。
管理ポータル:
[システム管理] > [構成] > [接続性] > [SQLゲートウェイ接続]
こちらのトピックでは、ODBC/JDBCそれぞれの設定をプログラムで行う方法をご紹介します。
--- SQL Gateway for ODBC ----
set gc = ##class(%SQLConnection).%New()
set gc.Name = "test"set gc.DSN = "IRIS User"set gc.Usr = "_system"set gc.pwd = "SYS"set gc.bUnicodeStream = 1set gc.useCOALESCE = 1write gc.%Save()
--- SQL Gateway for JDBC ----
set gc = ##class(%SQLConnection).%New()
set gc.isJDBC = 1set gc.Name = "testj"set gc.Usr = "_system"set gc.pwd = "SYS"set gc.driver = "com.Pandas は単に人気のあるソフトウェアライブラリだけではありません。 これは、Python データ分析環境の基礎でもあります。 その単純さとパワーで知られており、データの準備と分析の複雑さをより扱いやすい形態に変換する上で不可欠な多様なデータ構造と関数が備わっています。 これは、主要なデータ管理および分析ソリューションである InterSystems IRIS プラットフォームのフレームワーク内で、主要評価指標(KPI)やレポート作成用の ObjectScript などの特殊な環境に特に関連しています。
データの処理と分析の分野において、Pandas はいくつかの理由により際立っています。 この記事では、それらの側面を詳細に探ります。
- データ分析における Pandas の主なメリット:
ここでは、Pandas を使用する様々なメリットについて深く掘り下げます。 直感的な構文、大規模なデータセットの効率的な処理、および異なるデータ形式のシームレスな操作などが含まれます。 Pandas を既存のデータ分析ワークフローに統合する容易さも、生産性と効率を強化する大きな要因です。
- Pandas による一般的なデータ分析タスクのソリューション:
Pandas には、単純なデータ集計から複雑な変換まで、日常的なデータ分析タスクを処理できる十分な汎用性が備わっています。
2024年10月15日をもって、MacOS での Caché および Ensemble のサポートが非推奨となります。
Caché および Ensemble 2018.1.9 のサポートは続きますが、MacOS 向けのメンテナンスバージョンは今後リリースされません。つまり、MacOS 向け製品としては、Caché および Ensemble 2018.1.9 が最後のバージョンとなる予定です。
あらためてのお知らせですが、その他のプラットフォームにおいても、Caché および Ensemble のメンテナンスバージョンは 2027年3月31日をもってリリース終了となる予定です。詳細は昨年発表の記事をご参照ください。
これは InterSystems FAQ サイトの記事です。
管理ポータル > [システム管理] > [セキュリティ] 以下の設定は、%SYSネームスペースにあるSecurityパッケージ以下クラスが提供するメソッドを利用することでプログラムから作成することができます。
ユーザ設定については、Security.UsersクラスのCreate()メソッドを使えば作成できますが、ユーザを作成するだけでは適切な権限が付与されずに目的のデータにアクセスできない状況もあります。
例)testAユーザ作成
%SYS>set st=##class(Security.Users).Create("testA",,"testA","これはテストユーザです","USER")
%SYS>write st
1上記メソッドで作成した結果は以下の通りです。(ロール付与無し、テーブルに対する権限の割り当てもなしの状態)

以降の解説では、以下のシナリオをもとにした設定を行っていきます。
シナリオ:アプリケーション開発者用ロールとユーザを作成する
1) アプリケーション開発者のtestAは、USERネームスペースにログインするアプリケーション開発者です(=%DevelopmentリソースのUse許可を与えます)。
InterSystems Reports 24.1 がリリースされ、WRC の Components エリアから入手いただけるようになりました。本製品は InterSystems Reports Designer と InterSystems Reports Server と表記されており、Mac OSX、Windows、Linux 版を入手いただけます。
この新バージョンには、弊社パートナーの insightsoftware 社によるすばらしい拡張機能が含まれています。InterSystems Reports 24.1 は Logi Report 24.1 SP2 をベースにしており、以下の機能が含まれます。
これは InterSystems FAQ サイトの記事です。
こちらの記事では、「IRISでシャドウイングの代わりにミラーリングを構成する方法」を紹介しました。
今回は、「プログラムでシャドウイングの代わりにミラーリングを構成する方法(Windows版)」を紹介します。
【今回のサンプル・ミラー構成について】
| 正サーバ(ミラー・プライマリ) | 副サーバ(ミラー・非同期) | |
| ミラー名 | MIRRORSET | MIRRORSET |
| ミラーメンバ名 | MACHINEA | MACHINEC |
| IPアドレス | 35.77.84.159 | 54.248.39.237 |
では、ミラーの構成手順をご紹介します。手順は以下になります。
<ミラーリングのプライマリ設定> // MACHINEA(正サーバ)
1. ISCAgentの自動起動設定および起動 ※Windowsコマンドプロンプトで実行
C:\Users\Administrator>sc config ISCAgent start=auto
C:\Users\Administrator>sc start ISCAgent
2.
これは InterSystems FAQ サイトの記事です。
メッセージログ(messages.log)/コンソールログ(cconsole.log) に以下のようなメッセージが表示される場合があります。
このメッセージ出力は、ライトデーモンのデータベースファイルへの書き込み処理の遅延を示しています。
その原因としては、ディスクI/O負荷が高く、そのI/O要求量に対してディスク処理性能が不足していることが考えられます。
ディスクI/O負荷の原因としては以下が考えられます。
- アプリケーションによるデータへの更新や参照処理が集中した
- アンチウイルスソフトのスキャンやデータベースバックアップソフト等によるディスクへのI/O負荷
もしアンチウイルスソフトがインストールされている場合は、「アンチウイルスソフト(セキュリティソフト)のスキャンから除外してほしいリスト」に記述している情報を参考に、InterSystems製品の対象ファイルをスキャンの対象外に設定変更してください。
開発者の皆さん、こんにちは!
💡 第3回 InterSystems アイデアコンテスト が終了しました。今回、🔥 30 もの新しいアイデアが投稿されました!
いずれも InterSystems IRIS および関連製品やサービスの改善に焦点が当てられていて、アイデアが実装された場合、開発者にとってより具体的なメリットとなることでしょう。
この記事では、アイデアコンテストの勝者の皆さんをご紹介します。
開発者の皆さん、こんにちは!
次のInterSystems プログラミングコンテストの内容についてご案内します📣
期間:2024年7月15日~2024年8月4日
賞金総額:$14,000
.jpg)
これは InterSystems FAQ サイトの記事です。
監査ログはシステムDB内テーブル(%SYS.Audit)に記録されていますので、そのテーブルに対するクエリを実行して抽出したり、%SYS.Auditテーブルに用意されていストアドプロシージャを利用して情報を取得しファイル出力するようにプログラムを用意することもできます。
以下にご紹介する内容は「監査ログをプログラムで出力(ユーザやイベント指定など)する方法」に関連した内容で、監査ログのファイル出力を管理ポータルの機能を利用した例とプログラムを利用した例でご紹介します。
1. 管理ポータルの印刷機能を使う
管理ポータル > [システムエクスプローラ] > [SQL]を開き、%SYSネームスペースに接続します。
システムのチェックを入れ、スキーマに%SYSを指定した後、プロシージャの階層を展開するとプロシージャリストが参照できます。
%SYS.Audit_ で始まるプロシージャが監査ログに対して実行できるプロシージャです。
SQL文例)InterSystems製品内ユーザのSuperUserに対する監査ログをストアドプロシージャ:%SYS,Audit_ListByUser を利用して出力しています。
call %SYS.Audit_ListByUser(,,,,,'SuperUser')引数については、クラスリファレンス:%SYS.
これは InterSystems FAQ サイトの記事です。
PythonスクリプトファイルやPythonで記述されたIRIS内メソッドを呼び出す際、エラーが発生した場合の対応方法をご紹介します。
説明使用するコードや資料PDFは公開しています👉 test1.py、FS.Utilsクラス、コードのコピー元、ビデオで解説している資料PDF
Embedded Python 自習用ビデオをご用意しています(項目別にYouTubeプレイリストをご用意しています)。
各プレイリストについて詳しくはこちらをご参照ください👉【はじめてのInterSystems IRIS】Embedded Python セルフラーニングビデオシリーズ公開!
これは InterSystems FAQ サイトの記事です。
InterSystems製品のサーバサイドでファイル入出力を行うと、文字列はシステムで設定されたファイル入出力用文字コードに自動変換され、文字単位でREADします。
ファイルから入力する文字をバイト単位で操作するためには、自動変換を行わない無変換の状態でファイル入力を行い指定バイトずつ読みながら読んだ分だけUnicodeに手動で変換していく必要があります。
変換には$ZCONVERT()関数を使用します。($ZCONVERT()には省略形があり$ZCVT()でも同様の操作が行えます。)
なお、READした指定バイトを変換する際、文字の全バイトが含まれない場合もあるため、途中までの読み取りになった文字列を第4引数に指定する変数に設定できるようになっています。
次回読み取り時に途中だった文字を自動的に先頭に追加し、$ZCONVERT()の処理を実行します。
《メモ》ファイル入出力の文字コードについては、以下管理ポータルの画面で確認できます。
管理ポータル > 構成 > 国際言語設定 > 構成したデフォルト値
入力/出力テーブルの表の「ファイル」
以下の文章がファイルにUTF8で保存されているとします。
無変換でファイル入力を行うには、%Stream.
これは InterSystems FAQ サイトの記事です。
IRIS2024.1以降のバージョンをインストールしようとした際に、以下のようなエラーになることがあります。
これは、2024.1以降のバージョンより最小CPUの条件として、AVX および BMI 拡張命令が含まれることが条件となっているのですが、ご使用の環境に含まれない(仮想環境やFTサーバ等の特殊なシステムでは無効化されている場合も)ときに出力されるエラーです。
最小CPUサポートバージョンについては、以下のドキュメントをご覧ください。
Minimum Supported CPU
現在使用中のCPUの拡張命令セットの情報の確認方法については、以下のDC記事をご覧ください。
CPU のマイクロアーキテクチャファミリと命令セットの判定方法
Linuxの場合は、lscpuコマンド、または lshw -class processor コマンドで確認できます。
これは InterSystems FAQ サイトの記事です。
現時点(2024年3月)では、コミュニティに掲載されているPythonライブラリ「iris-dollar-list」を利用することでIRISの$LIST()形式のデータをPythonのリストとして利用することができます。
※標準ツールではありませんがご利用いただけます。詳細はコミュニティの記事「もう1つの $ListBuild() の実装:Pythonライブラリ「iris-dollar-list」」をご参照ください。
WindowsにインストールしたIRISで使用する場合は、以下の方法で「iris-dollar-list」をインストールしてください。
※Windows以外にインストールしたIRISでは、pipコマンドを利用した通常の方法でインストールできます。
コマンドプロンプトを開き、以下実行します。(IRISをデフォルトインストールしたときのディレクトリで掲載しています)
>cd C:\InterSystems\IRIS\bin> irispip install --target C:\InterSystems\IRIS\mgr\python iris-dollar-list実行例は以下の通りです。
(2).jpg)
(3).jpg)
