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永続クラスがソース用語テーブルとして使用されていることに注意することが重要です。
HealthShare HealthConnect と Information Exchange のバージョン 15.03 では、C-CDA 2.1 から SDA へのインポートトランスフォーメーションをサポートしています。 こういったプログラムのビルドは、インストレーションパッケージの csp/xslt/SDA3 ディレクトリにあります。 インポートトランスフォーメーションの概要は、Overview of Health Connect の「CDA Documents and XSL Transforms in HealthShare」をご覧ください。
C-CDA 2.1 サポートに関連するインポート機能の強化の 1 つとして、 C-CDA ファイルをインポートする前に前処理を実行できる機能が追加されました。
前処理サポートの導入により、トランスフォーメーションは大幅に簡素化され、その合計処理時間も削減されます。 考えられるユースケースは以下の 2 つです。
Caché 2013.1 より、InterSystems は特殊な値を持つフィールドが使われるクエリプランのセレクションを改善する目的で Outlier Selectivity (外れ値の選択性) を導入しました。
この記事では、「Project」テーブルを例に使い、Outlier Selectivity の概要やそれが SQL のパフォーマンスを向上させる仕組み、またクエリを書く際の注意点などについて解説したいと思います。
Selectivity (選択性)
まずは、Selectivity についてさっと説明します。 Selectivity とは、テーブル内の 1 つの列の中にある値に関するメタ情報のことです。 データが典型的なかたちで分布されていると想定した場合、「このテーブル内のこの列に特定の値を持つすべての行を要求するとしたら、通常取得できるのはテーブル内のどの程度の割合であろうか?」という疑問の答えとなる情報です。
Owener と Status という 2 つのフィールドを持つ「Project」という架空のテーブルについて考えます。 Owner にはプロジェクトを担当する従業員が入り、Status には PREP、OPEN、REVIEW、COMPLETE という 4 つのオプションの 1 つが入ります。
開発者の皆さん こんにちは!
この度、開発者コミュニティでの投稿や翻訳のポイントが2倍に引き揚げられました! 2021年3月18日以降、記事や質問の投稿で得られるポイントは以下の通りとなります。
✅ 200 ポイント(英語)
✅ 400 ポイント※ (スペイン語、ポルトガル語、中国語、日本語)
✅ 100 ポイント(翻訳記事の投稿)
また、一定数の記事やコメントを投稿すると、まとまったポイントがもらえることをご存知でしょうか?こちらをチェックしてください。
この記事では、従来のIRISミラーリング構成の代わりに、Kubernetesの Deploymentと分散永続ストレージを使って高可用性IRIS構成を構築します。 このデプロイでは、ノード、ストレージ、アベイラビリティーゾーンといったインフラストラクチャ関連の障害に耐えることが可能です。 以下に説明する方法を使用することで、RTOがわずかに延長されますが、デプロイの複雑さが大幅に軽減されます。
InterSystems IRIS では、情報を格納する「グローバル」というユニークなデータ構造をサポートしています。 基本的に、グローバルとは、マルチレベルのインデックスを持つ永続配列であり、トランザクションの実行やツリー構造のスピーディなトラバーサルといった機能が備えられているほか、ObjectScript として知られるプログラミング言語にも対応しています。
ここから先、少なくともコードサンプルについては、グローバルの基礎を理解されているという想定のもとに話しを進めていきます。
グローバルはデータを保存するための魔法の剣です パート1
グローバルはデータを保存するための魔法の剣ですパート2 - ツリー
グローバルはデータを保存するための魔法の剣です パート3 - 疎な配列
グローバルは、普通のテーブルとは全く異なる構造でデータを格納し、OSI モデルの下位層で動作します。 それでは、グローバルを使ったトランザクションとはいかなるもので、どのような特性が見られるのでしょうか。
リレーショナルデータベースの理論では、ACID テスト (Wikipedia で ACID を参照する) に合格するトランザクションこそが、適切に実装されたトランザクションとされています。
- 不可分性: トランザクションで発生する変更内容がすべて記録されるか、そのいずれも記録されない。
開発者の皆さん、こんにちは。
最近、インターシステムズ開発者コミュニティにより貢献したいという要望が多く寄せられます。
やり方は簡単です。
1. 質問に答える
開発者コミュニティには多くの 回答のない質問や ベストアンサーのない質問 があります。ぜひ、あなたの知識をシェアして他のメンバーを助けてあげてください。
2. 記事の投稿に貢献する
インターシステムズの技術を使ったあなたの経験をぜひ記事に書いてください。ソリューションや開発時のノウハウ、デバッグ時のTipsやトリック、システム構築、その他、健全な開発をするためのその他のアプローチなど、何でも構いません。
こちらには、コミュニティにとって有益となる記事の例がたくさんあり、各国の言語に翻訳されています。
3. Open Exchangeのアプリケーションに貢献する
あなたのライブラリやソリューション、ツールをGithubやGitlabのリポジトリを使って Open Exchange でシェアしてください。
デベロッパーの皆さん、こんにちは!
最近、当社は InterSystems Package Manager (ZPM) をリリースしました。 ZPM を開発した理由の 1 つは、ソリューションをパッケージ化して ZPM レジストリに提出することにより、そのデプロイを「install xxx package」のようなコマンドを実行するだけの単純な作業にするためです。
これを行うには、InterSystems IRIS パッケージの中身を説明する module.xml ファイルをリポジトリに導入する必要があります。
この記事では、module.xml ファイルの異なる構成要素を説明し、独自のファイルを作成する方法をご紹介します。
まずは、samples-objectscript パッケージから始めます。以下のコマンドを実行すれば、IRIS に ObjectScript のサンプルアプリケーションがインストールされます。
zpm: USER>install samples-objectscript
おそらく、これほどシンプルなパッケージはないと思います。以下は、パッケージの中身を説明する module.xml です。
<Export generator="Cache" version="25">
<Document name="samples-objectscript.ZPM">
<Module>
<Name>samples-objectscript</Name>
<Version>1.0.0</Version>
<Packaging>module</Packaging>
<SourcesRoot>src</SourcesRoot>
<Resource Name="ObjectScript.PKG"/>
</Module>
</Document>
</Export>これまで Caché のリソースアクセスを制御する方法が存在するかどうかを疑問に思っていた方の悩みを解決しました。 バージョン 2014.2 では、開発者がセマフォを操作できるようにする特別なクラスが追加されました。
マッピングの例
三連載で 4 記事目を書いてしまったら、これまでのハイライトとして 5 記事目を書かないわけにはいかないでしょう!
注意: 何年か前に Dan Shusman 氏が私に「グローパルのマッピングは芸術だ」と言いました。 そのやり方に正解も不正解もありません。 どのようなマッピングを行うかは、データをどう解釈するかで決まります。 例のごとく、最終的な結論を出す方法は 1 つに限られません。 ここでご紹介する例の中には、同じ型のデータを異なる方法でマッピングする例がいくつかあります。
この記事の最後には、私が長年お客様のために書いてきたマッピングの例をまとめた zip ファイルをご用意しています。 過去 4 つの記事で触れた内容をまとめたハイライトとして、いくつか例を挙げていきたいと思います。 この記事は単なるハイライトですので、過去 4 記事ほどの詳細はカバーいたしません。 不明な点があれば、遠慮なくご連絡ください。もっと詳しく説明させていただきます。
Row ID Spec: クラス例: Mapping.RowIdSpec.xml
これについては、過去の記事で何度か断言していますが、 これを定義する必要があるのは、添え字の式が単純なフィールドではない場合に限ります。
グローバルをクラスにマッピングする技術 (4/3)
三連載のはずが 4 記事目に突入してしまいました。『銀河ヒッチハイク・ガイド』のファンという方はいませんか?
古くなった MUMPS アプリケーションに新たな生命を吹き込みたいとお考えですか? 以下にご紹介するステップを実行すれば、グローバルをクラスにマッピングし、美しいデータを Object や SQL に公開できます。
上の内容に馴染みが無い方は、以下の記事を初めからお読みください。
この記事は Joel、あなたのために書きます! 前回の例で定義した親子関係を土台に、今度は孫クラスを作成し、^ParentChild グローバルに追加された季節情報を処理したいと思います。
前回と同じ免責事項: これらの記事を読んでもグローバルがよく理解できないという方は、WRC (Support@InterSystems.com) までメールでお問い合わせください。喜んでサポートさせていただきます。
グローバルをクラスにマッピングするステップ。
- グローバルデータが繰り返し使用されるパターンを特定する。
- 固有キーの構成を特定する。
- プロパティとそれぞれの型を特定する。
開発者の皆さん
こんにちは。
Windows共有しているリモートサーバに出力されたファイルでデータ連携する際、セキュリティ上、資格情報が必要となるケースが良くあるかと思います。いままでCachéで連携していた時には%ZSTARTルーチンや常駐プロセスのルーチンにて「net useコマンド」を実行されていたかと思いますが、IRISではInteroperability機能が使用できますので、前回の記事で作成したビジネスサービスクラスを元に、資格情報を使ってWindows共有フォルダにアクセスできる機能を追加したいと思います。
仕組み
ビジネスサービスが起動、停止する際に呼び出されるOnInit()、OnTearDown()メソッドにnet useコマンドを埋め込み、指定されている資格情報を使ってnet useコマンドで共有フォルダへの接続、切断を行います。
認証情報設定パラメータ追加
ビジネスサービスの設定画面で認証情報を選択できるよう、以下のようにCredentialsプロパティ、SETTINGSパラメータをTest.BS.ImportMasterクラスに設定します。
古くなった MUMPS アプリケーションに新たな生命を吹き込みたいとお考えですか? 以下にご紹介するステップを実行すれば、グローバルをクラスにマッピングし、美しいデータを Object や SQL に公開できます。
上の内容に馴染みが無い方は、以下の記事を初めからお読みください。
この記事の例では、典型的な親子構造をマッピングする方法をお見せします。
前回と同じ免責事項: これらの記事を読んでもグローバルがよく理解できないという方は、WRC (Support@InterSystems.com) までメールでお問い合わせください。喜んでサポートさせていただきます。
グローバルをクラスにマッピングするステップ。
- グローバルデータが繰り返し使用されるパターンを特定する。
- 固有キーの構成を特定する。
- プロパティとそれぞれの型を特定する。
- クラス内のプロパティを定義する (変数の添え字をお忘れなく)。
- IdKey のインデックスを定義する。
- Storage Definition を以下の手順で定義する。
- 添え字を IdKey まで (IdKey を含む) 定義する。
- Data セクションを定義する。
- Row ID セクションには触れない。
Java Business Host から PEX への移行
InterSystems IRIS 2020.1 および InterSystems IRIS for Health 2020.1 で PEX がリリースされ、Java Business Host を使うよりも優れたかたちで Java プログラムをプロダクション環境に取り込めるようになりました。 PEX は、相互運用性のコンポーネントを構築するための API をすべて提供するほか、Java と .NET の両方で使用できます。 Java Business Host は非推奨となり、今後のリリースで廃止される予定です。
PEX を使うメリット
- デベロッパーはプロダクションのすべてのコンポーネントを、Java と .Net のどちらでも構築できる
- コンポーネント間で一層複雑なメッセージ構造の受け渡しができる
- シンプルな設定
- 開発のワークフローがシンプルな上に、ObjectScript を使う必要がない
ここからは、既存の Java Business Host のコードを PEX に移行する方法に注目します。
概要
PEX で使用されるクラスとインターフェースは、Java Business Host (JBH) のものとは異なります。 本記事では、その相違点を要約して解説しますが、詳細は完全なドキュメントをご覧ください。
皆さん、こんにちは。
他のシステムとファイル連携を行う場合、Cachéでは、Jobコマンドを使った常駐プロセスやタスクを作成し、特定のディレクトリにあるファイルを定期的に監視、データを取り込むといった機能を手作りされていたかと思います。
これにはファイルの監視や、常駐プロセスの監視、プロセスの制御(起動、停止)を行う機能を用意する必要がありましたが、IRISではInteroperability機能が使えますので、そのようなプログラムを省略することが可能です。
今回は、既にファイル読込処理を行うルーチンが存在し、ルーチン呼出時の引数にファイル名があるという前提で、その処理をInteroperability機能を使ってどのように呼び出すかについて説明したいと思います。
手順
作業手順は以下の通りとなります。
- ビジネスサービスクラスの作成
- OnProcessInput()メソッドの実装
- プロダクションの作成
- ビジネスサービスの登録
- プロダクションの起動
ビジネスサービスクラスの作成
スタジオを起動し、ファイル読込処理を行うルーチンが存在するネームスペースに接続します。
「ファイル」「新規作成」メニューをクリックします。
以下のダイアログボックスが表示されますので、「プロダクション」カテゴリをクリックし「ビジネスサービス」アイコンをクリック、「OK」ボタンをクリックします。

開発者の皆さん、こんにちは。
スペシャリストレベル以上の方へ、グローバルマスターズの新たな🎁賞品が加わりました!
➡️ Raspberry Pi 4 8GB + InterSystems IRIS Community Image セットの予約注文
このセットには、Ubuntu 18.04 64 bit + Docker + InterSystems IRIS Community Editionが入った64GB MicroSD カードと Raspberry Pi 4 8GB、 紅白ケースが入っています。
InterSystems API Manager(IAM) バージョン1.5がリリースされました
以前のバージョンからアップグレードできるIAMコンテナはWRCソフトウェア配布サイトのComponents areaからダウンロードすることができます。
ビルド番号はIAM 1.5.0.9-4 です。
InterSystems API Manager 1.5 ではAPIトラフィックの管理や、環境とAPI利用者の統合がさらに簡単になりました。新機能は以下の通りです。
このリリースは、Kong Enterprise バージョン 1.5.0.9 をベースにしています。これまでのIAMリリースにはKong Enterpriseのホワイトラベルバージョンが入っていましたが、このリリースではホワイトラベルなしバージョンが入っています。この変更で、より頻繁にリリースすることができ、 Kongの提供するドキュメントやその他の資産を効果的に活用できるようになりました。
IAM 1.5のドキュメントはこちらです。このドキュメントはIAM固有の部分のみカバーしています。
古くなった MUMPS アプリケーションの新たな生命を吹き込みたいとお考えでしたら、以下にご紹介するステップを実行すれば、グローバルをクラスにマッピングし、美しいデータを Object や SQL に公開できます。
今回ご紹介する例には、パート 1 ではカバーしなかった内容を 4 つないし 5 つ程度盛り込んでいます。
その後は親子マッピングの例を紹介して完結となります。それを修得したらマッピングはもう完璧でしょう。
前回と同じ免責事項: これらの記事を読んでもグローバルがよく理解できないという方は、WRC (Support@InterSystems.com) までメールでお問い合わせください。喜んでサポートさせていただきます。
グローバルをクラスにマッピングするステップ。
- グローバルデータが繰り返し使用されるパターンを特定する。
- 固有キーの構成を特定する。
- プロパティとそれぞれの型を特定する。
- クラス内のプロパティを定義する (変数の添え字をお忘れなく)。
- IdKey のインデックスを定義する。
- Storage Definition を以下の手順で定義する。
- 添え字を IdKey まで (IdKey を含む) 定義する。
- Data セクションを定義する。
- Row ID セクションには触れない。
皆さん、こんにちは!
InterSystems のグローバルマスターズ・アドボケート・ハブがディベロッパーコミュニティ (DC) と緊密につながっていることは、皆さんご存知ではないでしょうか。 DC に何らかの貢献をされると、グローバルマスターズのポイントを獲得できます。
そこで、 グローバルマスターズでポイントを獲得するベストな方法について簡単なガイドを作成しました。
2021/3/19: 投稿や翻訳に関するポイントが改定されましたので、修正しています。記事の投稿で得られるポイントはローンチ期間限定です。
|
グローバルマスターズでポイントを獲得する方法 |
グローバルをクラスにマッピングする技術 (1/3)
グローバルをクラスにマッピングする技術 (1/3)
古くなった MUMPS アプリケーションに新たな生命を吹き込みたいとお考えですか? 以下にご紹介するステップを実行すれば、既存のグローバルをクラスにマッピングし、美しいデータを Object や SQL に公開できます。
本記事を含む合計 3 回の連載を通じてご紹介する簡単なステップを使えば、すべてのグローバル (特殊なものは除く) を Caché のクラスにマッピングできるようになります。 特殊なものについては、私が長年に渡って集めた様々な種類のマッピングを zip ファイルにまとめて提供いたします。 これは新しいデータを対象としたステップではありません。グローバルがないという方は、デフォルトのストレージをお使いください。
グローバルデータについて理解できないという方は、Support@InterSystems.com までデータをお送りください。喜んでサポートさせていただきます。
グローバルをクラスにマッピングするステップ。
- グローバルデータが繰り返し使用されるパターンを特定する。
- 固有キーの構成を特定する。
- プロパティとそれぞれの型を特定する。
- クラス内のプロパティを定義する (変数の添え字をお忘れなく)。
- IdKey のインデックスを定義する。
InterSystems IRIS デプロイガイド - AWS CloudFormation テンプレート
注意: 本ガイド (特に前提条件のセクション) を理解するには、AWS に関する中級から上級レベルの知識が必要になります。 S3 バケット、EC2 インスタンスの IAM ロール、VPC、サブネットを作成する必要があります。 また、InterSystems バイナリへのアクセス (通常は WRC サイトからダウンロード可) および IRIS のライセンスキーも必要になります。
2020 年 8月 12日
Anton Umnikov
テンプレートのソースコードは、こちらから入手していただけます: https://github.
これで 3 記事目になります (パート 1 と パート 2 をご覧ください) が、引き続き Caché データベースの内部構造をご紹介いたします。 今回は、興味深い内容をいくつかご紹介し、私の Caché Blocks Explorer プロジェクトを使って作業の生産性をアップさせる方法について説明します。
開発者の皆さん、こんにちは!
InterSystems ObjectScript でライブラリやツール、パッケージなどを開発していると、「このパッケージはどうすればターゲットマシンに展開できるのか?」という疑問がよく浮かびます。
また、私たちは、既に別のライブラリがインストールされていることを想定したり、その特定のバージョンのことを考慮したりしながらパッケージを開発しています。
JavaScript や Python などでコーディングを行うと、依存関係を管理しながらパッケージを展開するのに パッケージ管理システム が必要になります。
これを踏まえ、 InterSystems ObjectScript Package Manager のリリースを発表したいと思います!
独自の組織データアーキテクチャを書き、InterSystems IRIS にマッピングする必要がある場合は、以下にご紹介するデータアーキテクチャダイアグラムおよび InterSystems IRIS ドキュメンテーションのリファレンスに記載されている内容を考慮してください。
.png)
アーキテクチャマッピング
2019年 10月 17日
Anton Umnikov
InterSystems シニアクラウドソリューションアーキテクト
AWS CSAA、GCP CACE
AWS Glue は、完全に管理された ETL (抽出、変換、読み込み) サービスです。データの分類、クリーンアップ、強化、そして様々なデータストア間でデータを確実に移動させるという作業を簡単にかつコスト効率の良いかたちで行えるようにするものです。
InterSystems IRIS の場合、AWS Glue を使用すれば、大規模なデータをクラウドとオンプレミスのデータソースの両方から IRIS に移動させることができます。 ここで考えられるデータソースは、オンプレミスのデータベース、CSV、JSON、S3 バケットに保管されている Parquet ファイルならびに Avro ファイル、AWS Redshift や Aurora といったクラウドネイティブのデータベースを含みますが、これらに限定されません。

本記事では、読者の皆さんが、AWS Glue について少なくとも AWS Glue の入門チュートリアル を完了している程度の基本的な知識をお持ちであるという前提で話を進めていきます。
InterSystems Caché のグローバルは、デベロッパーにとって非常に便利な機能を提供します。 しかし、グローバルが高速な上に効率が良いのはなぜでしょう?
理論
基本的に、Caché データベースとは、データベースと同じ名前を持ち、CACHE.DAT ファイルを含んだカタログのことです。 Unix システムでは、このデータベースを普通のディスクパーティションにすることもできます。
Caché のデータはすべてブロックとして保管され、バランスド B* ツリーとして整理されます。 基本的にすべてのグローバルがツリーに保管されると考えると、グローバルのサブスクリプトはツリーの枝を意味する一方で、グローバルのサブスクリプトの値はツリーの葉として保管されると言えます。 バランスド B* ツリーと通常の B ツリーの違いは、前者の枝には $Order と $Query の両関数を使ってサブスクリプト (この記事ではグローバル) のイテレーションをスピーディに実行するのに役立つ適切なリンクがあり、ツリーの幹に戻る必要がないという点です。
デフォルトで、データベースファイルの各ブロックのサイズは 8,192 バイトに固定されています。 既存のデータベースのブロックサイズは変更できません。
みなさん、こんにちは。
前回の記事では1個のBME280で気象データを取得したのですが、気温のブレが大きかったので基板から
ただ、基板につけたBME280のはんだを外すのが大変なので、別のBME280を外付けすることにしました。
当初、ESP8266の別のIO端子と接続することを考えていたのですが、Wire.hが複数のバスに対応していない
ため、以下の配線図のようにカスケード接続することにしました。
カスケード接続するということは、外付けのBME280でI2Cのアドレスを変えないといけません。幸いBME280は0x76と0x77の切り替えができるようです。
こちらの資料を見ると、基板上に3つの端子があり、左2つがつながると0x76,右2つがつながると0x77になるそうで、左2つの端子はつながっているので、ナイフで切断しなさいとなっていました。
で今回購入したセンサーを見ると、端子はあるけど左2つの端子の間はつながっていません。よく見るとセンサーの左下の端子の左側がつながっており、これで左2つの端子がショートしていることになります。
なので、センサーの左下端子の左側をカッターで切断しました。ルーペが無かったので、カミさんのスマホスタンドを借りて、スマホのカメラで拡大しながら、慎重に切断、テスターで抵抗値を確認.
皆さん、こんにちは。
寒い日が続きますね。
前々回の記事でDHT11とBMP180を使って作成したのですが、実際に外に置いて計測してみると、氷点下の場合、12~13℃となってしまい、正しく計測できませんでした。(先にデータシートを確認しておけばよかったのですが、DHT11、BMP180共に0℃以上になっていました...)
そこで代わりのセンサーが無いか探していたところ、BME280というセンサーが見つかりました。-40℃から85℃まで測れ、BMP180と同じBosch製で値段も数百円。
センサーモジュールはBMP280と共用の基板で、どちらなのか印がなく、湿度が測れるのかどうかちょっと心配していましたが、注文通りBME280だったらしく、湿度も測れました。
配線図は以下のようになります。BMP180と同様にI2Cで接続しています。また、今回は別のESP8266とユニバーサル基板を使って配線をやり直すついでに電源をUSB給電から3Vの電池にしています。
前回のようにリード線でセンサーとマイコンを離すのが扱いづらかったので、センサーモジュールをユニバーサル基板上にはんだ付けしました。その上でセンサーが保存容器の外に出るようにケースに切り込みを入れてみました。
プログラムは以下の通りです。I2C通信に必要な<Wire.


