新しい投稿

Encontrar

お知らせ
· 2024年9月17日

L'examen InterSystems IRIS SQL Specialist est désormais LIVE !

Bonjour la Communauté,

L'équipe de certification d'InterSystems Learning Services est ravie d'annoncer la sortie de notre nouvel examen InterSystems IRIS SQL Specialist. Il est désormais disponible à l'achat et à la planification dans le catalogue d'examens InterSystems. Les candidats potentiels peuvent consulter les sujets d'examen et les questions de pratique pour les aider à s'orienter vers les approches et le contenu des questions d'examen. Les candidats qui réussissent l'examen recevront un badge de certification numérique qui peut être partagé sur des comptes de réseaux sociaux comme LinkedIn.

Si vous êtes nouveau dans la certification InterSystems, veuillez consulter nos pages de programme qui incluent des informations sur la passation des examens, les politiques d'examen, la FAQ et plus encore. Consultez également notre certification organisationnelle, qui peut aider votre organisation à accéder à de précieuses opportunités commerciales et à s'établir comme un fournisseur fiable de solutions InterSystems sur notre marché.

Si vous avez des idées sur la création de nouvelles certifications qui peuvent vous aider à faire progresser votre carrière, l'équipe de certification d'InterSystems Learning Services est toujours ouverte aux idées et suggestions. Veuillez nous contacter à l'adresse certification@intersystems.com si vous souhaitez partager vos idées.

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
質問
· 2024年9月17日

Get a specific value from an ASTM segment in Routing Rule

Hello.

I have a business process with an "ASTM" class : 

Inside this process i have a business rule. Inside this rule i want to get a specific field inside the message :

So i will use the same logic for HL7 messages. Here is the "path" to the segment and the field : 

So i will use this inside the routing rule like i did for HL7 messages. 

i have tried MUCH prefix like "ASTM" "X12" "ESI.X12" ..... I only got errors like << PROPERTY DOES NOT EXIST >> 

Can someone tell me what i'm doing wrong ?

Thanks.

Thomas.

1 Comment
ディスカッション (1)1
続けるにはログインするか新規登録を行ってください
記事
· 2024年9月17日 5m read

FHIR Object Modelを使ったInteroperability開発

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

突然ですが、2024年6月25日に開発者向けセミナー「FHIR 新機能のご紹介~2024.1~」が開催されました。
ご視聴になられた方も多数いらっしゃると思います。
まだご視聴になられていない方は是非一度、ご覧になってみてください。
YouTubeリンク

さて、こちらのセミナーにおいてご紹介された、IRIS for Health 2024.1からの新機能「FHIR Object Model」を用いて、リポジトリタイプのInteroperability開発の具体的なサンプルを作成してみました。
自身の備忘のため、すぐ開発環境を構築できるよう、コンテナ環境かつGitHubの公開もしております。
利用方法は、GitHub内のREADMEを参照ください。
GitHubリンク

目次

  1. FHIR Object Modelとは?

  2. メリット・デメリットを深堀り

  3. GitHub公開ソースについて

  4. 所感


1. FHIR Object Modelとは?


まずはFHIR Object Modelとはなにか、簡単に説明します。
FHIR Object Modelとは、FHIRリソースをオブジェクトモデル化したクラス群です。
IRIS for HealthでFHIR開発に多く携わっている方は、あれ?と思うわけです。
既に公開中のJSONテンプレートエンジンとなにが違うの?メリット・デメリットは?書き替えた方がいいの?
だいぶ主観が入りますが、JSONテンプレートエンジンとの比較をしてみたいと思います。

 

1.1. JSONテンプレートエンジンとなにが違う?


JSONテンプレートエンジン
こちらは、テンプレートクラスに記載されたテンプレートを元に、プロパティやパラメータ値を設定してJSONデータを出力します。
一方、FHIR Object Modelは、FHIRの全リソース構造を網羅したクラスを元に、プロパティを設定してFHIRオブジェクトに変換し、操作・編集が容易なクラスライブラリです。より詳細を知りたい方は、冒頭のリンクのYouTube動画を見ていただくと理解が深まると思います。


1.2. メリット・デメリットは?

  • メリット
  1. 自身でなにも用意しなくていい!ゼロベースで(IRIS for Healthをインストールさえしてあれば)使える
  2. オフィシャルのためIDEのサポートが充実
  3. DynamicAbstractObjectとの相互変換メソッド
  • デメリット
  1. 入れ子になったオブジェクトの操作は慣れが必要
  2. カスタムプロファイルに対応したモデルクラスがない
  3. 日本語ベースのドキュメントがほぼない

 

1.3. 書き替えた方がいいの?

 

個人的な意見は NO です。なぜならば、FHIR Object ModelはあくまでFHIR開発のサポートを行うためのツールであり、既に実装済みのコードがあるのであれば、書き替えるほどの強力なインパクトはありません。

 

2. メリット・デメリットを深堀り

  • メリット
  1. 自身でなにも用意しなくていい、という真意は、JSONテンプレートエンジンを利用しようとすると、どうしても自身でテンプレートクラスを作成しなくてはいけない作業が発生します。JSONテンプレートエンジンは、用意されているリソースの数に限りがあるのと、元々退院時サマリーのFHIRモデルをベースにしたテンプレートのためです。一方、FHIR Object Modelは、現状R4ベースという制限はあるものの、リソース定義がすべてクラス化されており、使い方さえわかればすぐ開発に取り掛かれます。
  2. IDEのサポートが充実しているのは、自動入力補完機能(オートコンプリート)が利用できるのと各メソッド、各プロパティにDescriptionがちゃんと(英語ですが)ついていることに尽きると思います。
  3. セミナー内の絵を拝借しますが、文字列、ダイナミックオブジェクト、FHIR Modelオブジェクトは、各クラスごとに用意されているメソッドで相互に変換でき、利用の幅が広がります。

 

  • デメリット
  1. IncludeXXXX() と MakeEntry()、そして add() する順番などが最初混乱しました。慣れてしまえば問題はないかと。
  2. カスタムプロファイルに対応したモデルクラスがないのは惜しいです。今後のリリースに期待いたします。
  3. まだ新しい機能なので、使い方や応用、実務向けサンプルなどが少ないです。だからこそ本記事を書いております。少しでもご参考になれば幸いです。


3. GitHub公開ソースについて


リポジトリタイプのInteroperabilityをコードベースで作成しました。
環境は、コンテナで動作するIRIS for Health Community 2024.1です。
インプットデータはCSVファイルで、レコードマップを定義しています。

  • Patientリソースを作成するためのPatient.csv
  • Observationリソースを作成するためのBodyMeasurement.csv

の2つを用意しており、どちらのリソースもサンプルのCSVを取り込むと常にBundleリソースに含めてtype=transactionでPOSTする形式です。

set bundle = ##class(HS.FHIRModel.R4.Bundle).%New()
set bundle.type = "transaction"
do bundle.IncludeEntry()
// ここまでは初回(bundle.entryに初めてaddするとき)のみ実行
set entry = bundle.entry.MakeEntry()
set entry.fullUrl = "urn:uuid:"_$ZCONVERT($SYSTEM.Util.CreateGUID(),"L")
do entry.IncludeResource()
// resource = HS.FHIRModel.FHIRClassSuper(HS.FHIRModel.R4.Patientなど)
set entry.resource = resource
do entry.IncludeRequest()
set entry.request.method = "POST"
set entry.request.url = resource.resourceType
do bundle.entry.add(entry)


とはいえ、Patientリソースのほうは「identifier.system|identifier.value」の条件で、存在すればPOSTしないifNoneExistプロパティを追加していますので、同じ患者IDのPatientリソースは作成されないようにしています。

// GitHubソース上では、先述のコードサンプルの bundle.entry.add() の前に入れ込んでいます
set:resource.resourceType="Patient" entry.request.ifNoneExist = "identifier=urn:oid:1.2.392.100495.20.3.51.11234567890|"_resource.identifier.get(0).get("value")


概要図はコチラです。

 

4. 所感


新機能!と思って飛びついてみましたが、IRIS経験者であればさほど苦も無く利用できると思います。
オフィシャルであることも強みで、今後の拡張やサポートにも期待しております。
GitHubのソースについて、なにかご質問あればコメントください。わかる範囲でご回答いたします。

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
お知らせ
· 2024年9月16日

第2回 開発者コミュニティ・ミートアップ Python ワークショップの事前準備について

※ 本内容は随時更新予定です。ワークショップに必要な内容をご覧いただき、参加のご検討などしていただければ幸いです。

Pythonワークショップにご参加いただく場合は、事前に以下の環境をご用意ください。

  • IRIS 2024.1.1 for Windows Community Edition (※ これからダウンロードされる方は、バージョンが異なりますので下記コメントをご確認ください)
    • キットダウンロードはこちらの記事をご覧ください。
    • インストールオプションはデフォルト (インストールタイプ: 開発、初期セキュリティ設定: 最小)
  • Visual Studio Code (任意のバージョン) と ObjectScript用エクステンション
    • エクステンションのインストール方法はこちらの記事をご覧ください。
  • 以下のPythonライブラリを irispip (<IRISインストールディレクトリ\bin\irispip.exe) でインストール
    • flask, nicegui, sqlalchemy-iris,  scikit-learn,  numpy, pandas
8 Comments
ディスカッション (8)2
続けるにはログインするか新規登録を行ってください
質問
· 2024年9月16日

What is the best way to do a silent install of an IRIS application?

We have an ObjectScript application that runs in Cache' and IRIS. Our typical installation involves a .zip file containing several files necessary for the installation and operation of the application. Steps are: expand the .zip file to a folder that will not be used by the application. Do ^%RI for the installation routines in the production namespace. Do the Installation routine. We have a customer that is trying to do a silent installation. He does not want to have to respond to any prompts on the installation. We do have a silent option for the Installation routine and that is working well. But he also does not want to have to respond to prompts for the Do ^%RI step. Currently we are doing set sc=$System.OBJ.Export(routineString,destinationPath.xml). And then we can do a set sc=$System.OBJ.Load(destinationPath.xml,"cuk",.errlog) in the installation script.

Is there a better way to do this?

3 Comments
ディスカッション (3)2
続けるにはログインするか新規登録を行ってください