#InterSystems IRIS

1 フォロワー · 1.3K 投稿

InterSystems IRISは総合データプラットフォームです

    InterSystems IRISは、企業にとって最も価値のある資産(データ)の取得、共有、理解、そしてデータに基づく行動のために必要なすべてのものを提供します。

    完全なプラットフォームである InterSystems IRIS は、複数の開発技術を統合する必要がありません。より少ないコードで開発が可能で、そのアプリケーションは、システムリソース、メンテナンスなども少なくて済みます。

記事 Hiroshi Sato · 9月 3, 2025 1m read

以前はMac上でDockerを動かす場合は、Docker for Macを使用していましたが、ある時点でマルウェア判定されてしまい、削除されてしまいました。

以下の記事によれば、最新版では解決しているようです。

Docker Desktop for Macがエラーで起動できない件(#7527)についての情報

そこで他の選択肢はないか調べてみるといくつか選択肢がありました。

その中でColimaというのがあり、設定してみました。

Colima で Docker と Docker Compose を使ってみた

設定も非常に簡単であり、実際のdockerやdocker composeの動かし方はほとんど変わりません。

一つColimaの方が良いと感じたのは、Docker for Macの場合、IRISのスクリプトの実行の結果として出力されるメッセージは、スクロールされて、Dockerコンテナの起動が終了すると、痕跡が残らないため途中でエラーが発生してもその場で確認できませんでしたが、Colimaの場合、ターミナル上で垂れ流されるだけなので、そのターミナルのスクリーンをロールバックすることで出力メッセージを確認できる点です。

0
0 65
記事 Mihoko Iijima · 10月 16, 2025 1m read

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

この記事では、Developer Hub にまたまた新チュートリアル:InterSystems IRIS for Health:デジタルヘルスの相互運用性 が追加されましたので、体験内容についてご紹介します。(準備不要でブラウザがあれば試せるチュートリアルです!)

チュートリアルでは、InterSystems IRIS for Health を使用しているのですが、IRIS for Health の持つ機能により以下のような相互運用性シナリオを作成できます。

  • HL7、CDA、FHIR、DICOM のデータルーティングを管理
  • HL7 から FHIR への変換、CDA から HL7 への変換、FHIR から CDA への変換
  • 異なるシステムと API との間のデータフローを確立

チュートリアルの中では、あるシステムから入力される HL7 メッセージを他のシステムに送信する流れをご体験いただけます。

また、データ変換が必要な場合の対応方法や HL7 メッセージの一部をテーブルに保存する流れなどもご体験いただけます。

例)HL7 メッセージの一部をテーブルに格納

 

アカウント作成やログインも不要で  ボタンをクリックするだけで始められます👍

ぜひ、お試しください!​​​​​​

0
0 64
InterSystems公式 Masahito Miura · 10月 24, 2024 2m read

InterSystems IRIS、IRIS for Health、HealthShare HealthConnect のメンテナンスリリース 2023.1.5 と 2024.1.2 がリリースされました
 

InterSystems IRISInterSystems IRIS for HealthHealthShare Health Connect の2つのメンテナンスリリースがリリースされました。
✅ 2023.1.5

リリース 2023.1.5 は、以前のリリース 2023.1.x のバグフィックスを提供します。

詳細な変更リストとアップグレード・チェックリストは、以下のページにあります :

✅ 2024.1.2
リリース 2024.1.2 は、以前のリリース 2024.1.x のバグフィックスを提供します。

0
0 64
記事 Toshihiko Minamoto · 12月 15, 2025 8m read

カスタマーサポートの質問は、構造化データ(オーダー、製品 🗃️)、非構造化知識(ドキュメント/よくある質問 📚)、およびライブストリーム(出荷更新 🚚)と多岐にわたります。 この投稿では、以下を使用して、3つすべてに対応するコンパクトなAIエージェントを作成します。

  • 🧠 Python + smolagentsは、エージェントの「頭脳」を構成します
  • 🧰 SQLベクトル検索(RAG)、およびInteroperabilityのためのInterSystems IRIS(モック配送状況API)
0
0 64
記事 Megumi Kakechi · 8月 13, 2025 3m read

これは InterSystems FAQ サイトの記事です。
$ZF(-100) は、OSコマンドまたはプログラムを子プロセスとして実行するのに使われますが、一緒に便利なキーワードを指定することが可能です。

$ZF(-100)でコマンドの実行がうまくできない、という経験をされた方も多いかと思います。

そんな時は、この便利なキーワードを使って原因の調査をしていきましょう。

キーワードには以下のようなものがあります。








/SHELL シェルを使用して program を実行する。既定では、シェルは使用されない。
/STDIN=filename 入出力リダイレクト入力ファイル
/STDOUT=filename 入出力リダイレクト標準データ出力ファイル
/STDERR=filename 入出力リダイレクト標準エラー出力ファイル
/LOGCMD 結果として得られるコマンド行を messages.log に記録する
/NOQUOTE コマンド、コマンド引数、またはファイル名の自動引用を禁止する


使用方法は、以下のようになります。

write $zf(-100,"/SHELL /LOGCMD /STDERR=err.log","command1","command2",.
0
1 63
記事 Toshihiko Minamoto · 5月 22, 2025 7m read

前回の記事では、一般的な概念と、InterSystems IRIS に統合されたタスクエンジンを使用して解決する問題を紹介しました。今回の記事では、相互運用性プロダクションを構成してソリューションを提供する方法を確認します。

Workflow Engine の構成

First we are going to define the roles of the tasks that we are going to manage, in our example we are going to define two types:

  • AutomaticBloodPressureRole: ユーザーの介入が不要な自動タスクを作成します。
  • ManualBloodPressureRole: ユーザーが手動で検証する必要のあるタスクを作成します。

後で様々な患者から HL7 メッセージを受信するたびにロールをユーザーに割り当てるため、ここでは割り当てる必要はありません。

また、IRIS ユーザーを Workflow に追加する必要もありません。これはプロダクションからコードで実行します。

プロダクションのセットアップ

この例では、アドホックで作成した「WORKFLOW」というネームスペース内にプロダクションを作成します。 このプロダクションに、必要とするビジネスコンポーネントを含めます。

0
0 62
記事 Mihoko Iijima · 3月 28, 2025 4m read

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

先日、EM リリース新バージョン 2025.1 がリリースされました。

コンテナ版以外ですが、新規インストール時に指定する初期セキュリティオプションのデフォルトが「ロックダウン(Locked Down)」に変更となりましたので、今までとの違いについて以下ご説明します。

 

以前のバージョンのデフォルトは、IRIS:「最小(Minimal)」、IRIS for Health:「通常(Normal)」です。

ロックダウンオプションは、初期セキュリティの中で一番厳しいセキュリティ設定を行うオプションで、例えば、オブジェクト/SQL のアクセスが行えない、VSCode から IRIS にアクセスできない状況からスタートします。

そのため、使用したいアクセスに対してアクセス許可追加していく必要のあるセキュリティオプションです。

0
0 62
記事 Toshihiko Minamoto · 9月 25, 2025 8m read

REST レスポンスから IRIS データーベースに情報を保存する新しいプロジェクトがあります。 少なくとも 20 以上の個別の REST エンドポイントの情報を同期する必要があるため、それらのエンドポイントの結果を保存するために、ほぼ同じ数の ObjectScript クラスを作成しなければなりません。

ChatGPT を使って、それらのクラスを作成することはできますか? 答えは「できます」です。生成 AI を使って便利なものを作るのは初めてなので、素晴らしい機会だと思います。 スープを飲むキリンの写真を生成するのには飽きてきました…。

以下のようにして実現しました。

  • エンドポイントをクエリするために、「curl」を使ってサンプルの JSON REST の呼び出し出力を取得する。
  • ChatGPT にアクセスする(InterSystems は社員に会社全体で使用できるライセンスを提供しています)。
  • ChatGPT と以下のように会話する。

以下のリクエストを「Message ChatGPT」プロンプトに入力しました。

私: 次の JSON のデータを格納する ObjectScript クラスを生成してください。

JSON を入力する前に Return キーを押すと、ChatGPT から次のように指示されました。

0
0 62
記事 Tomoko Furuzono · 10月 27, 2024 1m read

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


InterSystemsでは、以前は、OSの特定リリースに対して製品の検証は実施しておりませんでしたが、
バージョン2022.1以降においては、OSのマイナーバージョンに対する検証を実施しております。
 

最新のサポートプラットフォームの情報については、下記の記事をご確認ください。
※2024年12月現在の最新情報
InterSystems サポートプラットフォーム最新情報 Q4-2024

★最新情報は開発者コミュニティにて随時発信いたしますので、以降の状況については、上記記事の継続記事をご確認ください。

 

(ご参考)
以前の状況についてはこちら
Windowsのサービスパックの適用に対する製品サポートについて
Windows Serverのリリースの違いは、サポートバージョンに影響しますか?

0
0 61
記事 Hiroshi Sato · 3月 3, 2025 1m read

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

IRISには、データ項目の値を実体として持たずに、何らかの演算処理の結果として提供する機能があります。

これを計算プロパティまたは計算フィールドといいます。

計算プロパティを定義するためには、最低限以下の手順を実行します。

プロパティ定義にSqlComputedキーワードを含めます。

プロパティ定義にSqlComputedCodeを含めて、値を算出するための処理ロジックとして含めます。

または、SqlComputedCodeを含めずに、代わりに<プロパティ名>Computationという名前のクラスメソッドを記述します。

以下は、Age(年齢)プロパティを計算プロパティとして定義した例になります。

Class Sample.Person Extends %Persistent {         

  Property FirstName As %String;       
  Property LastName As %String;       
  Property DOB As %Date;     
  Property Age As %Integer [ SqlComputed ]; // ...
ClassMethod AgeComputation(cols As %Librar
0
0 61
記事 Toshihiko Minamoto · 10月 16, 2025 2m read

私が先週リリースしたInterSystems Testing Managerの新しいバージョンでは、@Timothy Leavittの優れた
テストカバレッジツールが追加され、私は2025年度Developer Toolsコンテストに出品しました。

こちらは、IPMプロジェクトのユニットテストが、IPMリポジトリでソート順を上書きできると思われる機能をまだカバーしていないことを示すティザー的なスクリーンショットです。

0
0 60
記事 Toshihiko Minamoto · 5月 22, 2025 6m read

しばらくの間、私はワークフロー機能について何らかの概念実証を行おうと計画していましたが、これは IRIS に存在する他の多くの機能と同様に、お客様にほとんど気付かれないまま終わってしまう傾向があります(その点については申し訳ありません)。 そこで数日前、この機能を構成して、Angular で開発したユーザーインターフェースに接続して使用するための例を作成することに決めました。

記事が非常に長くならなずに読みやすくするために、3 部に分けて説明しようと思います。 この最初の記事では、Workflow の機能とこれから解決する例について説明します。 2 つ目の記事では、Workflow の管理を担うプロファクションの構成と実装について詳しく説明します。 最後に、ウェブアプリケーションを通じて Workflow にある情報にアクセスする方法を説明します。

InterSystems IRIS Workflow Engine

この Workflow 機能を説明するには、IRIS ドキュメントに記載の説明をコピーするのが一番でしょう。

ワークフロー管理システムは、ユーザーへのタスクの分配を自動化します。 事前定義済みの戦略に従ってタスクの分配を自動化することによって、より効率的にタスクを割り当て、タスクの実行に対する責任感を高めることができます。

0
0 60
記事 Tomoko Furuzono · 4月 3, 2025 3m read

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

InterSystems製品は、二要素認証をサポートしています。
下記ドキュメントページに詳細について記載がありますので、ご参照ください。
2要素認証


以下、例として、スマートフォン用認証アプリを用いて、IRIS上のCSPアプリケーションの2要素認証を行うための設定方法を解説します。

1.IRIS側の設定​
1-1.インスタンスに対する 2 要素認証の有効化および構成を行います。
管理ポータルで、[システム管理] > [セキュリティ] > [システム・セキュリティ] > [認証/Web セッション・オプション]と進み、[2 要素のタイムベース・ワンタイム・パスワード認証を許可] チェック・ボックスにチェックを付けます。
チェックを付けると、[2 要素のタイムベース・ワンタイム・パスワードの発行者] フィールドが表示されますので、ここに発行者を示す文字列(任意)を入力します。 1-2.次に、このアプリケーションに接続するユーザの設定を行います。
[システム管理] > [セキュリティ] > [ユーザ]で、該当のユーザの編集を行います。
[二要素認証]の[タイムベースのワンタイム・パスコード有効]にチェックを付けて保存します。
ここで、ワンタイム・パスワードキー(OTPキー)及びQRコードが表示されます。

0
0 60
記事 Tomo Okuyama · 1月 23 2m read

DifyのベクトルストアにIRISを追加しました

こんにちは、セールスエンジニアの奥山です。

OSSのLLMアプリ開発プラットフォーム「Dify」に、IRISをベクトルストアとして利用できる機能をコントリビュートしました。Dify 1.11.2でマージされています。

https://github.com/langgenius/dify/releases/tag/1.11.2

Difyとは

Difyは、RAGやAIエージェントをノーコード/ローコードで構築できるOSSプラットフォームです。 GitHub Stars 10万以上、世界中で急速に利用が広がっています。

https://github.com/langgenius/dify

これまでWeaviate、Qdrant、Milvus、PgVector等のベクトルDBに対応していましたが、 今回IRISが選択肢に加わりました。

使い方

Difyの公式docker-compose.ymlにIRIS 2025.3の設定が含まれています。 .envファイルでVECTOR_STORE=irisと設定するだけでIRISが起動します。

# .envの設定
VECTOR_STORE=iris

接続情報のデフォルト値も設定済みなので、ローカルで試すだけならすぐに動かせます。

0
0 60
記事 Hiroshi Sato · 12月 8, 2025 6m read

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

WebSocketは、リアルタイム双方向通信を可能にするプロトコルで、Webアプリケーションの動的な操作性を向上させるために広く活用されています。

この技術は、TCP上で動作し、HTTPプロトコルを介して接続を確立します。

一度接続が確立されると、持続的な接続が維持され、サーバーとクライアントが効率的にデータを交換できるのが特徴です。

通常のHTTP通信の場合、クライアントからのリクエストに対してサーバーが応答するというのが基本的な動作になるため、サーバーから非同期にデータを送信することが難しいですが、WebSocketを利用することでそのような機能を簡単に実現できます。

一方で、サーバーからの一方向の非同期通信が実現できれば良いという要件であれば、SSE (Server-Sent Events)を使用することもできます。

一般的にWebSocket通信が最も適していると考えられるのは、クライアント・サーバー間で双方向にデータを交換する必要がある場合になります。

双方向の接続を維持する必要があるため、状況によって、サーバー上のコンピュータ資源の消費(メモリー、CPU、IRISライセンス使用量など)に注意する必要があります。

0
0 60
記事 Hiroshi Sato · 7月 27, 2025 2m read

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

ダイナミックオブジェクトの%FromJSONFileメソッドを利用すると簡単にJSON形式のファイルの内容をダイナミックオブジェクトにコピーすることができます。

以下の形式のJSONファイルをそのメソッドを使用して取り込む例は以下のようになります。

{
    "ShipTo": {
        "City": "Tokyo",
        "Street": "Ginza",
        "PostalCode": "160-0001"
    },
    "CustomerId": 1,
    "Items": [
        {
            "ProductId": "MNT001",
            "Amount": 2
        },
        {
            "ProductId": "PC001",
            "Amount": 2
        }
    ]
}
 set tempobj = {}.%FromJSONFile("c:¥temp¥sample.json") 
 set customerid = tempobj.
0
0 58
記事 Hiroshi Sato · 12月 8, 2025 1m read

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

.NETからIRISにアクセスするためのNative SDK for .NETと呼ばれるインタフェースが用意されています。

JavaやPython用に用意されているNative SDKと同等な機能が提供されています。

(一部異なる機能があります)。

    Native SDKを利用することで以下のようなことを実装することができます。

    1. ObjectScriptやEmbedded Pythonで作成したメソッドの実行
    2. IRISオブジェクトの操作
    3. IRISグローバルデータの操作
    4. ADO.NETによるデータベースアクセス

    以下からこれらのサンプルプログラムを取得することができます。

    Native SDK for .NETサンプル1

    Native SDK for .NETサンプル2

    .NETに様々な手段でアクセスするサンプル


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

    InterSystems Native SDK for .NET

    0
    0 58
    記事 Mihoko Iijima · 12月 25, 2025 2m read

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

    InterSystems 製品の内部日付時刻($HOROLOG)を利用して時刻を取得している場合、オペレーティング・システムが提供するアルゴリズムに基づいて季節的な時刻調整を行います。

    そのため、オペレーティングシステムにてサマータイムの調整が行われる場合は、InterSystems 製品は、オペレーティングシステムで対応したサマータイム時刻で動作します。

    注意点としては、$HOROLOG 値が大きく変更されるケースもあるため、時刻比較やこの値をキーにしたアプリケーションの処理などがもしある場合は、その変更を考慮していただく必要があります。

    ご参考:「ローカル時刻調整のしきい値

    なお、$NOW() 関数を使用して内部日付時刻を取得している場合は、オペレーティングシステムのサマータイムの調整に対応していませんのでご注意ください。

    $NOW() 関数は、$ZTIMEZONEの値を使用してローカル時刻を決定しています。
    $ZTIMEZONEは1年を通して連続的で、サマータイム(DST)などのローカル時刻の調整に対応していないためです。

    また、小数点以下を含むタイムスタンプ値をサマータイム対応済のローカル時刻で取得したい場合、$HOROLOG では対応できませんので、以下の2つ方法のどちらかを利用して取得します。

    0
    0 57
    記事 Tomoko Furuzono · 5月 13, 2025 1m read

    IRISから他DDLのデータを参照したり取り込んだりする場合、各DDLのデータ型はそれと同等の InterSystems IRIS データ型にマッピングされます。

    マッピングの定義は、管理ポータル、および、下記ドキュメントページでご確認いただけます。

     

    管理ポータル:[システム管理] > [構成] > [SQLとオブジェクトの設定] > [システムDDLマッピング]

     

    ドキュメント:InterSystems IRIS へのデータ型のマッピングの表示

    0
    0 57
    記事 Hiroshi Sato · 1月 17, 2025 2m read

    Mac版IRISでは、現状Pythonのバージョンが固定(3.11)なのですが、これに付随する他製品との相性問題に遭遇しましたので報告します。

    今までEmbedded Pythonは調子よく動作していたのですが、ある時から急に動作しなくなりました。

    原因を調べてみると、Python3.13がインストールされ、それがデフォルトとして上書きされたため、irispythonコマンドを発行すると、それが内部で3.13を呼ぶ様になってしまったためでした。

    ちなみにiris session でログインし、そこからEmbedded Pythonを実行する場合は、問題ありません。

    あくまでもirispythonコマンドで直接.pyファイルを実行する場合に発生する問題です。

    そしてとりあえずの対処法は、python3をpython3.11で置き換える方法です。

    以下のような感じです。(どのMacでもbrewコマンドでインストールした場合、ディレクトリ構造は同じだと思いますが、違う可能性もゼロではありません)

    cp /opt/homebrew/bin/python3.11 /opt/homebrew/bin/python3

    さて、ところで何で3.13がインストールされていたのかというと、

    IRIS SQLのLOADコマンドを動作させるためには、JDKまたはJREが必要なのでそれをインストールしました。

    0
    0 57
    記事 Hiroshi Sato · 9月 25, 2025 2m read

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

    何の設定も行なっていない場合、GROUP BYやDISTINCTで指定したフィールドは大文字小文字を区別せずに全て大文字として処理されます。

    これはGROUP BYやDISTINCTのグループ化がフィールドに対して定義された照合タイプに基づいて行われ、その文字列照合の既定値がSQLUPPERになっているためです。

    以下のドキュメントに説明がある通り、DISTINCT は、フィールドに対して定義された照合タイプに基づいて、文字列値をグループ化します。

    大文字/小文字の区別と DISTINCT の最適化

    これを変更する方法は、以下の3種類になっています。

    (A) %SQLSTRING または %EXACT照合関数を使用する
    (B) フィールドの文字列照合を SQLSTRINGに変更する
     また、フィールドにインデックスが設定されている場合には、インデックスの文字列照合も SQLSTRINGに変更する
    (C) 管理ポータルで設定を変更する 

    ※(B)について補足
    ・文字列照合をEXACTに設定しても動作しますが、一般的にはSQLSTRINGの使用が推奨されています。
    ・フィールドの文字列照合とインデックスの文字列照合は、同じ設定にすることが推奨されています。

    0
    0 56
    記事 Megumi Kakechi · 2月 26, 2025 2m read

    これは InterSystems FAQ サイトの記事です。
    埋め込みSQLの出力ホスト変数は、SQLCODE=0(埋め込みSQL正常終了)の場合のみ、正しい値が設定されていることが保証されます。

    InterSystems製品のバージョンによっては、SQLCODEが0以外の場合(該当データがない100やエラー等)で値が設定される場合もありますが、その値は無効です。

    特に、IRIS2021.1以降のバージョンでは、SQLCODE=100 の場合、INTO 節で指定された出力ホスト変数は NULL("") にクリアされますので注意が必要です。

    Cacheや、IRIS2020.x 以前のバージョンでは、明示的な値のクリアを行っておりませんでしたが、こちらについても値は保証されるものではありません。

    埋め込みSQLを使用する場合は、必ずSQLCODEを確認してエラーチェックを行うようにして下さい。
    また、エラーチェック以外でも、SQLCODE = 0(データあり) の場合と SQLCODE = 100(データなし) の場合は処理を分けるようにし、SQLCODE = 100 の場合は出力ホスト変数を参照しないようご注意ください。


    例)
    誤った使用例:

      &sql( select name into :name from sample.
    0
    0 56
    記事 Mihoko Iijima · 2月 18 4m read

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

    私は普段 Windows を使用しており、VSCode で ObjectScript を書いてテストする際には、IRIS ターミナルを別途起動し、VSCode とターミナルの 2 画面を行き来する操作を続けてきました。

    ところが今回、ObjectScript エクステンションに追加された「ObjectScript Lite Terminal」を利用することで、VSCode 1 画面内で IRIS ターミナルを操作できるようになりました。

    一見すると小さな追加機能ですが、日々 IRIS を触っている開発者にとっては “地味に革命” と言えるかもしれません。本記事では、その使い勝手を詳しくご紹介します。

    Windows 以外の環境では、通常 iris session xxx を実行して ObjectScript シェルに切り替えますが、Lite Terminal を使えばこの操作が不要になります。

     

    まずは、起動方法から。

    Lite ターミナルの起動には、3種類の方法があります。

    その1:コマンドパレットを使って起動する

    VSCode の View > Command Palette.. >  ObjectScript: Launch Lite Terminal

     

    クリック後、VSCode

    2
    2 55
    記事 Tomoko Furuzono · 3月 23, 2025 1m read

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

    クライアントーサーバ接続を担当するスーパーサーバで、SSLバージョン3とTLSバージョン1での通信が可能です。
    このオプションを利用することで、通信上のデータを暗号化できます。

    その他、Kerberosを使うことで通信上の暗号化も可能です。

    0
    0 55
    記事 Hiroshi Sato · 12月 8, 2025 2m read

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

    PythonからIRISにアクセスするためのNative SDK for Pythonと呼ばれるインタフェースが用意されています。

    Javaや.Net用に用意されているNative SDKと同等な機能が提供されています。

    (一部異なる機能があります)。

    また、Python用にはEmbedded Pythonと呼ばれるIRISと密に連携した機能があります。

    IRISから最大限の性能を得るためには、Embedded Pythonが適していますが、以下のような場合、Native SDKが適しているケースもあります。

    1. 異なるサーバーでIRISとPythonプログラムが連携する必要がある。
    2. 同一サーバー上でIRISとPythonが稼働するが、システムが異なる(サブシステム間連携など)
    3. システムを別々の開発ベンダーが構築するなど、明確な境界を設けたい場合

    Native SDKを利用することで以下のようなことを実装することができます。

    1. ObjectScriptやEmbedded Pythonで作成したメソッドの実行
    2. IRISオブジェクトの操作
    3. IRISグローバルデータの操作
    4. DBI-APIによるデータベースアクセス


    以下からこれらのサンプルプログラムを取得することができます。

    0
    0 54
    記事 Mihoko Iijima · 6月 30, 2025 2m read

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

    ObjectScript で日付の比較を行う場合、一旦 $HOROLOG 形式(内部数値)に変換することで算出しやすくなりますが、SQL 関数を利用して算出することもできます。

    ObjectScript から SQL 関数を実行するには、%SYSTEM.SQL.Functions クラスを使用します。

    ※ 2021.1以前のバージョンでは、%SYSTEM.SQL クラスを使用します。

    %SYSTEM パッケージは、システム・オブジェクトと呼ばれ ObjectScript では $SYSTEM 特殊変数を利用して以下の構文で実行します。

      $SYSTEM.サブパッケージ名.クラス名.メソッド名() または $SYSTEM.クラス名.メソッド名()

     

    以下、SQL 関数 DATEDIFF を使用して日付の比較を行う例です。

    USER>write $system.SQL.Functions.DATEDIFF("dd","2025-01-20","2025-03-20")
    59

     

    分での比較

    USER>write $system.SQL.Functions.DATEDIFF("mi","2025-01-20","2025-03-20")
    84960

     

    秒での比較

    USER>write $systemSQL.Functions.
    0
    0 53
    記事 Megumi Kakechi · 7月 31, 2025 2m read

    これは InterSystems FAQ サイトの記事です。
    アプリケーション保全のために、データベースのジャーナルは必ず有効にしておく必要がありますが、何らかの理由でジャーナルを無効にしなければならない場合があるかと思います。

    ディスク容量の縮小や、データ更新時のシステム負荷の削減など理由は様々です。

    ここで注意していただきたいのは、データベースのジャーナルを無効にした場合にどのような影響がでてくるのか、ということです。

    こちらのトピックでは、「データベースのジャーナルを無効にした場合の影響について」ご説明します。


    ジャーナルを無効にする方法は、以下の2種類があります。

    1. システム全体で無効にする方法(こちらを行う場合は【慎重】に!

    Set $namespace="%SYS"
    Do ^JOURNAL  > 2) Stop Journaling (^JRNSTOP)

    2. プロセス単位で無効にする方法 ※ご参考

     do DISABLE^%SYS.NOJRN                   // ジャーナリングを停止
     do ENABLE^%SYS.NOJRN                    // ジャーナリングを開始

    ※ミラーリング対象のデータベースは、ジャーナルを無効にすることはできません。
    ジャーナルを無効にした場合、以下のことができなくなります。

    0
    0 53
    記事 Toshihiko Minamoto · 11月 26, 2025 10m read

    Vanna.AI - パーソナライズされた AI InterSystems OMOP エージェント

     

    OHDSI のウェブブックからアキレスに続くこの OMOP の旅シリーズに沿って、適切に記述された R と SQL の組み合わせによって、組織間で共有可能な大規模な分析の結果が導き出されるのを見れば、OMOP 共通データモデルの威力を理解し始めることができます。 とは言え、私には第 3 正規形の知識がないので、約 1 か月前の旅において、Databricks Genie を使って、InterSystems OMOP と Python 相互運用性を活用して SQL を生成しました。 非常にうまくいきましたが、RAG「モデル」がどのように構築され、それを実現するための LLM の使用については、Databricks の内部に魔法が残されています。

    OMOP の旅のこの時点で、同じ道で Vanna.ai と出会いました...

    Vanna は、LLM を使用してデータベースの正確な SQL クエリを生成するのに役立つ、検索拡張を使った Python パッケージです。

    0
    0 53
    記事 Hiroshi Sato · 2月 15 4m read

    IRISではCSPタグベースの開発は、非推奨(Deplicated)になっています。

    非推奨とはいえ、いますぐ使えなくなることはないと思います。

    が、CSP機能に含まれるHyperEventの#server()#呼び出しは、かなりやばいということがわかってきました。

    これはChromeを始めとするメジャーなブラウザーが提供しているSynchronous XMLHttpRequestという関数を呼び出しています。

    この関数をGoogleは10年前くらいから非推奨機能としていて、いつか完全に機能をドロップすると宣言しています。

    Stackoverflowの該当記事

    インターシステムズのドキュメントにもさりげなく記載されています。

    HyperEventCallメソッド

    とはいえ、10年もそのままなので、希望的観測をすれば、今後も使える可能性は高いかもしれません。

    しかし、ある日突然なくなるリスクはゼロではありません。

    ですので、#server()#呼び出しをお手元のコードからなるべく早く取り除くのが賢明です。

    それでは、どうすれば良いのか?

    ということですが、今のご時世で考えれば、REST APIに変えましょうというのが美しい世界ですが、おそらく書き換えのコストは、半端じゃないでしょう。

    ということで、現実的な解は、#Call()#に置き換えることだと思います。

    4
    2 52