記事 Toshihiko Minamoto · 5月 6, 2021 4m read

中間データベースを使用して、Grafana と IRIS(または Cache/Ensemble)を使用する方法を説明した非常に有益な記事がコミュニティにいくつか掲載されています。

しかし私は、IRIS 構造に直接アクセスしたいと考えていました。 特にこのリンクで説明しているように、SQL でアクセス可能なCaché履歴モニターのデータにアクセスしたかったのです。

https://community.intersystems.com/post/apm-using-cach%C3%A9-history-monitor

また、データをいじりたくもありませんでした。

必要とするデータを返すクラスクエリはすでにあったので、それらを、JSON を返す REST クラスに埋め込むだけで良かったからです。 クラス Grafana.MonitorData はまだ含めていません。それでなければならないという理由があるわけではなかったためですが、要望があれば、含めることは可能です。

難しい点は 2 つだけでした。 1 つは、各ポイントで、現地時間と UTC 時間を確実に調整することでした。 もう 1 つは、Grafana は「.25」のようにゼロを省略した小数点数値を好まないため、JavaScript エラー「t.dataList.map is not a function 」が発生していたことです。

0
0 238
記事 Toshihiko Minamoto · 5月 4, 2021 2m read

ObjectScriptには、エラー(ステータスコード、例外、SQLCODEなど)を処理する方法が少なくとも3つあります。 ほとんどのシステムコードにはステータスが使用されていますが、例外は、いくつかの理由により、より簡単に処理することができます。 レガシーコードを使用している場合、さまざまな手法の変換にいくらか時間が掛かりますが、 参考として、次のスニペットをよく使用しています。 皆さんのお役にも立てればと思います。

 

///SQLCODEのステータス:
set st = $$$ERROR($$$SQLError, SQLCODE, $g(%msg))  //埋め込みSQL
set st = $$$ERROR($$$SQLError, rs.%SQLCODE, $g(rs.%Message)) //動的SQL
///SQLCODEの例外:
throw ##class(%Exception.SQL).CreateFromSQLCODE(SQLCODE,%msg) //埋め込みSQL
throw ##class(%Exception.SQL).CreateFromSQLCODE(rs.%SQLCODE,rs.%Message) //動的SQL
throw:(SQLCODE'=0)&&(SQLCODE'=100) ##class(%Exception.SQL).
0
0 611
記事 Mihoko Iijima · 4月 30, 2021 2m read

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

監視対象プロセスについては以下の表をご参照ください。

※利用環境によって、出現しないプロセスもあります。



ps コマンドによるプロセス名 管理ポータルプロセスの一覧のルーチン名 プロセス数
[IRISインストールディレクトリ]/bin/irisdb -cc -s. -B -C[IRISインストールディレクトリ]/iris.
0
0 315
記事 Megumi Kakechi · 4月 29, 2021 2m read

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

InterSystems のミラーリングを使用することで、以下2つの目的を達成できます。

  1. 自動フェイルオーバ
  2. ディザスタリカバリや、ビジネスインテリジェンスのためのデータベースの複製

1 については、2台の InterSystems 製品を利用し、プライマリサーバの InterSystems 製品に障害が発生した場合は、もう片方の InterSystems 製品に自動フェイルオーバが行えるミラーリング構成です。

2 については、1台のプライマリサーバである InterSystems 製品から、遠隔地も含め、任意の拠点にある複数台の InterSystems 製品へ(=非同期ミラーメンバ)データベースファイル(InterSystems IRISは「IRIS.DAT」、Caché/Ensemble/HealthShareは「CACHE.DAT」)のミラーリングを行います。
(また、複数のプライマリサーバから1台の非同期メンバのInterSystems 製品へのミラーリングも行えます。)
 

詳細は以下ドキュメントをご参照ください。
InterSystems IRIS ミラーリングについて【IRIS】
ミラーリングについて
 

あわせて、以下の記事も是非ご覧ください。

0
0 786
記事 Toshihiko Minamoto · 4月 28, 2021 5m read

数年ほど前、Caché Foundationsの講座(現「Developing Using InterSystems Objects and SQL」)において、%UnitTestフレームワークの基礎を講義していたことがあります。 その時、ある受講者から、ユニットテストを実行している間に、パフォーマンス統計を収集できるかどうかを尋ねられました。 それから数週間後、この質問に答えるために、%UnitTestの例にコードを追加したのですが、 ようやく、このコミュニティでも共有することにしました。

0
0 185
記事 Makiko Kokubun · 4月 27, 2021 1m read

*この動画は、2021年2月に開催された「InterSystems Japan Virtual Summit 2021」のアーカイブです。
 

機械学習やAIの進歩が、社会的にも大きな話題になっています。 しかしながら、実際に機械学習を活用したシステムを開発し、ビジネスに生かすところに到達するまでには様々な課題があります。例えば、データサイエンティストと呼ばれる高度なスキルを持った人材の不足もその一つです。

InterSystems は、アプリケーション開発者の方々が、IRIS data platform に保存されているデータとSQLを用いて、機械学習を容易に利用できる仕組み「IntegratedML」を開発しました。この動画では、IntegratedML の仕組みや使い方について解説します。

 

間もなくリリース予定の InterSystems IRIS 2021.1 に、IntegratedML が含まれます。
現在 2021.1のプレビュー版を公開中です。 詳しくはこちらをご覧ください。

本動画ではデモを行っています。デモをご覧になりたい方は 16:36 からご覧ください。

0
0 158
お知らせ Mihoko Iijima · 4月 27, 2021

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

第11回 InterSystems IRIS プログラミングコンテスト(開発者ツール) への応募、投票が全て終了しました。コンテストへのご参加、またご興味をお持ちいただきありがとうございました。

今回のお知らせでは、見事受賞されたアプリケーションと開発者の方々を発表します!

 

🏆 Experts Nomination - 特別に選ばれた審査員から最も多くの票を獲得したアプリケーションに贈られます。  

🥇 1位 - $4,000 は Server Manager for VSCode を開発された @John Murray さんに贈られました!

🥈 2位 - $1,500 は Config-API を開発された @Lorenzo Scalese さんに贈られました!

🥈 2位 - $1,500 は zpm-explorer を開発された @Henrique Dias Dias さんと @José Roberto Pereira さんに贈られました!

🏆 Community Nomination - 最も多くの票を獲得したアプリケーションに贈られます。

🥇 1位 - $750 は Server Manager for VSCode を開発された @John Murray さんに贈られました!

0
0 100
記事 Toshihiko Minamoto · 4月 26, 2021 41m read
0
0 680
InterSystems公式 Toshihiko Minamoto · 4月 24, 2021

みなさん、こんにちは。
今回はInterSystems Container Registryを発表できることをうれしく思います。 これはコンテナベースのリリースやプレビューにアクセスする新たな配布チャンネルです。すべてのコミュニティエディションのイメージはログイン不要の公開リポジトリにあります。すべてのリリースイメージ(IRIS, IRIS for Health, Health Connect, System Alerting and Monitoring, InterSystems Cloud Manager) やユーティリティイメージ(アービター、 Web Gateway、PasswordHash等) にはWRCアカウントの認証情報から生成されるログイントークンが必要です。

0
0 426
記事 Megumi Kakechi · 4月 23, 2021 2m read

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

アプリケーションに求められる要件は日々複雑化しています。

しかし、複雑化するからといって開発のスピードおよび実行時のスピードが遅くなることは許されません。

複雑な要件を満たすために現在主流の手法ではソフトウェアスタック上の様々な部品(ミドルウェア、ライブラリ、フレームワークなど)を組み合わせる方法を取ります。

この方法は、様々なものを学習するための時間、それらを連携する方法、経年で様々なものが進化していくことに伴って各部品間の関係性が変化するためにそれらを維持管理していくための手間など様々な付帯的な作業が必要です。

結果として本来行いたいことに集中して取り組む前に付随する作業に忙殺されることになり開発生産性があがりません。
しかも実行時にも様々な部分が連携するためのオーバーヘッドを避けることができず期待する性能を確保することも困難になります。

一方インターシステムズのプラットフォームには上記要件を満たすのに必要十分な機能がひとつの首尾一貫した形で提供されており上記の様な手間がほとんど必要ありません。

さらにこのプラットフォームにはインターシステムズ独自の高性能、スケーラビリティの高いデータベースエンジンが内蔵されており様々なデータ処理を効率良く高速に処理します。

0
0 187
記事 Mihoko Iijima · 4月 22, 2021 2m read

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

ユーザ定義エラーとして使用したいエラーコードと対応するメッセージを記述したXMLを用意します。

なお、エラーコードは負の整数で設定してください。

<?xml version="1.0" encoding="UTF-8" ?> 
<MsgFile Language="ja">
  <MsgDomain Domain="UserErrors">
    <Message Id="-111" Name="MyError">エラーが発生しました</Message> 
    <Message Id="-222" Name="MyError2">エラーが発生しました2</Message> 
  </MsgDomain>
</MsgFile>

 

XML ファイルが作成できたら使用したいネームスペースにロードします。

set x=##class(%MessageDictionary).Import("error.xml")

 

ロード完了後、次のようなコマンドでユーザ定義エラーを取得、表示することができます。

USER>set error=$system.Status.Error(-111) // エラーコード -111 を指定してエラーを作成

USER>write $system.Status.
0
0 212
記事 Mihoko Iijima · 4月 22, 2021 4m read

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

ルーチン(*.mac)の場合

ソースプログラムのコンパイル後に生成される *.obj のみをエクスポート/インポートすることでソースの隠蔽化を実現できます。

コマンド実行例は、EX1Sample.mac と EX2Sample.mac のコンパイルで生成される EX1Sample.obj と EX2Sample.obj をエクスポート対象に指定し、第2引数のファイルにエクスポートしています。

別ネームスペースに移動したあと、エクスポートした XML ファイルを利用してインポートを実行しています。

USER>do $system.OBJ.Export("EX1Sample.obj,EX2Sample.obj","/opt/app/routine.xml")

XMLエクスポートの開始 04/22/2021 18:18:32
オブジェクトコードをエクスポート中: EX1Sample.obj
オブジェクトコードをエクスポート中: EX2Sample.obj
エクスポートが正常に完了しました。 

USER>zn "test"  // ネームスペース移動

TEST>do $system.OBJ.Load("/opt/app/routine.
0
0 324
記事 Toshihiko Minamoto · 4月 22, 2021 11m read

はじめに (および本記事を書いた動機) {#RobustErrorHandlingandCleanupinObjectScript-IntroductionandMotivation}

ObjectScript コードのユニット (ClassMethod など) を実行する場合、そのスコープ外にあるシステムの諸部分と対話するときに適切なクリーンアップを行えないことが原因で、様々な予期せぬ副作用が発生することがあります。 以下にその一部を紹介します。

  • トランザクション
  • ロック
  • I/O デバイス
  • SQL のカーソル
  • システムフラグと設定
  • $Namespace
  • 一時ファイル

ObjectScript のこういった重要な機能を、クリーンアップのコーディングや防御的なコーディングを適切に行わずに使用すると、普段は正常に動作しても、予期せぬかたちで、またデバッグが困難なかたちで失敗し得るアプリケーションができてしまう可能性があります。 想定できるすべてのエラーケースにおいてクリーンアップコードが正常に動作することは、極めて重要です。表面的なテストではエラーを見落とす可能性が高いことを考えるとなおさらです。 この記事では、既知の落とし穴をいくつかご紹介し、信頼性の高いエラー処理とクリーンアップを実現するための 2 種類の対処法について説明いたします。

0
0 384
記事 Toshihiko Minamoto · 4月 22, 2021 3m read

先日、永続クラスとシリアルクラスからSwagger仕様を生成する必要がありました。そこで、その時のコードを公開することにします(完全なコードではないため、アプリケーション固有の部分を変更する必要がありますが、まずは出発点として使用できます)。 こちらからご利用ください。

次のクラスがあるとしましょう。

クラス
0
0 192
記事 Makiko Kokubun · 4月 20, 2021 1m read

*この動画は、2021年2月に開催された「InterSystems Japan Virtual Summit 2021」のアーカイブです。

 

ソフトウェア開発技術において、プロセスの自動化、サイクルの短縮による生産性の向上を目指す考え方が普及してきました(CI/CD)。CI/CDの中核をなす技術の一つが、Dockerに代表されるコンテナです。

 

 

InterSystemsでは、Dockerコンテナで動作するIRIS data platformをリリースして、いち早く最新機能を皆様にお届けしています。この動画をご覧になって、DockerコンテナでIRISをスムーズに利用する第一歩としてください。


セッションで紹介しているリリースサイクルについては、こちらの記事をご覧ください。
セッションではデモを行っています。デモをご覧になりたい方は 12:49​ からご覧ください。

0
0 263
記事 Toshihiko Minamoto · 4月 20, 2021 7m read

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

先日、RESTのクラスを使って、PDFなどのファイルをアップロード、ダウンロードするサンプルをお送りしたお客さんからご質問を頂きました。
ダウンロード機能を使ってmp4などの動画を表示させた場合、以下のようにvideoの画面下のスライダーを移動しても、再生を進めたり戻したりができませんでした 

 

やはり、以下のようにスライダを動かすと、その時点の画像が表示されたほうが良いですね。  

そこでgoogleで調べてみると、Http Range requestへの対応が必要ということですのでObjectScriptで作成してみました。

表示用html

ブラウザで動画を表示するための簡単なhtmlファイルは以下の通りです。sourceタグのURLにGETメソッドでアクセスし動画データを受信します。

<html>
<head>
<title>ストリーム再生 </title>
</head>
<body>
ストリーム再生<br>
    <video controls width="800" >
    <source src="http://localhost:52773/csp/storage/River.mp4" type="video/mp4"> 
    </video>
</body>
</html>

RESTクラス

RESTクラス(REST.

0
0 2665
質問 Mitsuru Amano · 3月 3, 2021

こんにちは、皆さま

IRISとVSCODE環境を日頃から愛用しています。

普段は使用しませんが、実験的にCSPファイル(*.CSP)をVSCODEで編集してみようと思い試みましたが上手く行きませんでした。

VSCODEの拡張は、「InterSystems ObjectScript Extension Pack」を使用しています。

具体的は2つの方法を試しました。

1.DBからworkspaceにExportして編集+Import&Compile

   ObjectScriptのソースTree-コンテキストメニューにExportが無いため動作を確認できず。

clsのExprot

cspのExportが…ない

2.DBの*.CSPを直接編集。

   ObjectScriptのソースTree-からcspファイルを開き編集したが、読み取り専用と表示。

VSCODEでCSPファイルを編集する方法をご存じの方は、教えて頂けないでしょうか?

4
0 580
記事 Seisuke Nakahashi · 4月 20, 2021 4m read

みなさん、こんにちは!

Visual Studio Code 用のエクステンション、 InterSystems Server Manager のバージョン2.0がリリースされました。

 

このバージョンでは、弊社製品に同梱されているコードエディタ Studio と同じように、「サーバ上にあるクラス定義やルーチンを、サーバに接続して、直接編集&コンパイル」することが簡単にできます。この記事では、「Visual Studio Code を、Studio と同じように、気軽に使う」ための設定をご紹介いたします。

 

1. ObjectScript用エクステンションのインストール

まずは Visual Studio Code に、InterSystems IRIS (Caché) に接続するためのエクステンションを入れましょう。この記事を参考に、3つのエクステンションを導入します。

  • InterSystems ObjectScript
  • InterSystems Language Server
  • InterSystems Server Manager

 

2. 接続するサーバの登録

左のサイドバーに InterSystems Tools という道具箱のアイコンがインストールされます。ここで接続先のサーバ情報を定義します。

0
0 1489
質問 Yuji Ohata · 4月 13, 2021

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。

InteroperabilityのRecordMapの仕組みを利用した、ファイル取り込みについて、
取り込み時のエラー内容を独自のログ出力グローバルに吐き出したいと考えております。

管理ポータル上だと以下のように表示されている内容を
文字列として取得したいだけなのですが、何か方法はありませんでしょうか?

 

Ent_Util.Logの中を見ると上記の内容は確認できたのですが、
わざわざシステムが吐いているログを見なくとも、
ビジネス・サービスの結果として取得できる情報があるのでは?と考えております。

4
0 172
記事 Toshihiko Minamoto · 4月 19, 2021 12m read

++更新日:2018年8月1日

Cachéデータベースミラーリングに組み込まれているInterSystems仮想IP(VIP)アドレスの使用には、特定の制限があります。 具体的に言うと、ミラーメンバーが同じネットワークサブネットに存在する場合にのみ使用できるというところです。 複数のデータセンターを使用した場合は、ネットワークの複雑さが増すため、ネットワークサブネットが物理的なデータセンターを越えて「延伸」されることはさほどありません(より詳細な説明はこちらです)。 同様の理由で、データベースがクラウドでホストされている場合、仮想IPは使用できないことがよくあります。

ロードバランサー(物理的または仮想)などのネットワークトラフィック管理のアプライアンスを使用して、クライアントアプリケーションやデバイスに単一のアドレスを提示することで、同レベルの透過性を実現できます。 ネットワークトラフィックマネージャは、クライアントを現在のミラープライマリの実際のIPアドレスに自動的にリダイレクトします。 この自動化は、災害後のHAフェイルオーバーとDRプロモーションの両方のニーズを満たすことを目的としています。 

0
0 600
お知らせ Mihoko Iijima · 4月 19, 2021

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

第11回 InterSystems IRIS プログラミングコンテスト: 開発者ツール  の投票が開始されました!

🔥 これだ!と思う一押し作品に投票お願いします! 🔥

投票期間:4月19日~26日 (1週間)

投票方法は?

コミュニティメンバーはどなたでも投票いただけます!

投票種別は、Expert Nomination と Community Nomination に分かれています。コミュニティメンバーは、Community Nomination を選択いただき、どの作品がどの順位になるかを指定しながら投票してください!

Community Leaderboard:

開発者コミュニティのメンバーは、お好みのアプリケーションに対して1位~3位を指定しながら投票できます。

0
0 109
記事 Shintaro Kaminaka · 4月 19, 2021 18m read

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

このシリーズでは、IRIS for Healthの使い方ではなく、関連技術として、FHIRプロファイル作成ツールであるSUSHIの握り方使い方を紹介していきたいと思います。

このツールをうまく使うことで、FHIRプロジェクトのプロファイル情報(仕様や制限、拡張などの情報)をうまく整理し、公開することができます。

その前にSUSHIとは何でしょうか?簡単にですが、順番に説明していきたいと思います。

FHIR って?

FHIRとは Fast Healthcare Interoperability Resources の略であり、Web通信の一般的技術であるRESTを使用して、可読性が高く取り扱いがし易いJSON/XML形式のデータの集合(=リソース)をやり取りする短期間で実装可能な医療情報交換標準規格、という定義になっています。

簡単に言えば、医療のデータの表現方法として皆で共通したフォーマットを使うことによって、システム間や施設間などでの情報の伝達や交換をやりやすいようにしよう!ということですね。

FHIRには様々なリソースが定義されています。例えば患者さんの情報にはPatientリソースという定義があり、これを使って表現されます。

FHIR公式サイトには多くのサンプルが掲載されていますので、一部抜粋してみます。 例えばこのようなJSON形式で表現されます。

0
2 2695
記事 Megumi Kakechi · 4月 16, 2021 4m read

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

ジャーナル切り替えのタスクが実行時にエラー(例:FILEFULL)となり、その原因となるエラーを解消後も一時停止(Suspend Leave)状態となっているのであれば、以下の操作により復旧可能です。

管理ポータル: [システムオペレーション] > [タスクマネージャ] > [タスクスケジュール表示]  より、以下の操作を行います。

  1. ジャーナル切り替え(Switch Journal) "詳細" をクリック 
  2. "一時停止" をクリック
  3. タスク実行が一時停止された場合にタスクを再スケジュールしますか? はい
  4. "すぐに実行する" をクリック
  5. "再開" をクリック
  6. "すぐに実行する"

タスク詳細にて "一時停止:"が空欄になり、"次回スケジュール時刻:" が再開後の次のスケジュール(例えば2021-04-17 00:00) になっていれば、復旧完了です。

こちらの方法で一時停止状態が解消しない場合は、診断レポート※(^SystemCheck/^Buttons)とタスクの情報(以下の手順で取得)をサポート宛てにお送りいただいた上、ご連絡ください。

0
0 338
記事 Shintaro Kaminaka · 4月 15, 2021 9m read

開発者の皆さん、こんにちは。 以前の記事でIRIS for Health上でFHIRリポジトリを構築し、OAuth2認証を構成する方法をご紹介しました。

この代行認証編では、IRIS for HealthのFHIRリポジトリに組み込まれた認証機能ではなく、IRISの代行認証機能+ZAUTHENTICATEルーチンを使用して認証を行う方法をご紹介します。

前回記事でご紹介したように、標準のFHIRリポジトリの認証機構では、アクセストークンの発行先を追加するためのAudienceの指定(aud=https://~) や、アクセストークンだけではなくベーシック認証の情報を送付するなどの対応が必要でした。

スクラッチでFHIRクライアントを開発するのではなく、既成の製品やアプリケーションからアクセスする場合、上記のような処理の実装ができないことがあるかもしれません。 そのような場合には、この代行認証+ZAUTHENTICATEルーチンを使用して、カスタマイズした認証の仕組みを構築することができます。

この記事に含まれる情報のドキュメントについて

この記事で記載されている情報はIRIS for Healthのドキュメントにも含まれている内容をわかりやすく再構成したものです。

RESTサービスの保護:RESTアプリケーションおよびOAuth2.0

OAuth 2.

0
0 488
記事 Mihoko Iijima · 4月 15, 2021 2m read

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

このエラーが発生する原因としては、アプリケーションの中で既に他のプロセスからロック対象リソースがロックされていて、何らかの理由でそのロックが解放されていないケースが考えられます。

他のプロセスがロックしている兆候がない場合は、ロックテーブルの空き領域が不足しているケースが想定されます。
その場合は、メッセージログ(コンソールログ)に LOCK TABLE FULL のメッセージが出力されます。

トランザクション処理を行なっている場合には、ロック解放の延期が影響しているケースも考えられます。
トランザクションとロック解放の延期については、以下のドキュメントをご参照下さい。

ドランザクション処理について【IRIS】

ドランザクション処理について

 

また、トランザクション中に、同一テーブルに対する大量レコードのSQL 文による更新がある場合、ロックしきい値(既定値は1000)に到達してロックエスカレーションが発生し、その結果として、テーブルロック状態になっている可能性もあります。

このように、ロックタイムアウトエラーの原因は幾つか考えられますので、まずは、管理ポータル(バージョン2010.2以前では、[システム管理ポータル])の、ロックメニューにて、現在のロックの状態をご確認下さい。

【バージョン2011.

0
0 888
記事 Mihoko Iijima · 4月 15, 2021 2m read

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

クラスに定義されたプロパティの情報については、以下システムクラスを利用して情報を取得できます。

%Dictionary.ClassDefintion

%Dictionary.PropertyDefinition

 

コード記述例は以下の通りです。

Class ISJ.Sample
{
ClassMethod getPropInfo(classname As %String)
{
    set cls=##class(%Dictionary.ClassDefinition).%OpenId(classname,,.status)
    if $$$ISERR(status) {
        write "指定クラスは存在しません",!
        quit  // または return
    }
    set x=cls.Properties
    for i=1:1:x.Count() {
        // プロパティ情報を取得(%Dictionary.PropertyDefinition)
        set prop=x.
0
0 417
質問 Yuji Ohata · 4月 13, 2021

こんにちは、皆さま。
JOBの実行監視について、いい方法があれば教えてください。

現在Interoperablity上にファイル検知(PassthroughService)をトリガーにした
Serviceを作成しており、このServiceがデイリーで正しく動作しているかどうかを
監視する仕組みを作りたいと考えています。

 例)
 「A」というServiceが、毎日20時までに実行されているか?
 を監視し、実行されていなければエラーメールを送信する。

今考えている案では、タスクスケジューラを用いて
JOBが実行されたかを見に行くしかないのかなと考えているのですが、
他にいい実現方法をご存じな方がいらっしゃれば、情報頂けますと幸いです。

2
0 196
記事 Shintaro Kaminaka · 4月 15, 2021 7m read

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

以前の記事でIRIS for Health上でFHIRリポジトリを構築し、OAuth2認証を構成する方法をご紹介しました。 IRIS for Health 2020.4がリリースされ、FHIRリポジトリのアクセストークンをチェックする機能が追加になりました。

ドキュメントはAccess Token Scopesです。

この記事ではドキュメントの記載も抜粋しながらこの機能を紹介していきます。

Basic Processing

The access token that accompanies a request must include at least one patient clinical scope or user clinical scope, or else the request is rejected with an HTTP 403 error. If an access token contains both a patient clinical scope and a user clinical scope, the FHIR server enforces the patient clinical scope while ignoring the user clinical scope.

0
0 545
記事 Toshihiko Minamoto · 4月 15, 2021 3m read

皆さん、こんにちは!

皆さんに私のプロジェクトをご紹介したいと思います。

かつて私は、職場でドキュメントを作成し、それに氏名、誕生日、住所など、人に関する情報を挿入するといった、平凡なタスクを担当していました。 そこで、簡単に処理しようと考えた私は、アプリケーションを書きました。

このアイデアは斬新でないどころか、他の言語ですでに実装されていました。 そこで私は、似たようなツールを Cache Object Script で開発しようと考えたのです。 コンセプトは以下のとおりです。

特殊なセマンティクスを用いて、LibreOffice か Microsoft Word でテンプレートを作成します。

そして、テンプレートで使用されるすべての変数が定義されるメソッドまたはプロシージャを書きます。 メソッドは、[ProcedureBlock = 0] キーワードを使って宣言する必要があります。そうしないと、テンプレートを表示する最中に未定義のエラーが出てしまいます。

メソッドの中で、以下のコマンドを使ってドキュメントをレンダリングします。

set error =  ##class(DocumentTemplate).

0
0 166