皆さん、投稿の準備はできましたか?

投稿以外にも、応募記事のいいねをクリックすることで投票が行えます。ぜひ投票も応募も、両方挑戦して下さい!😎

以下、過去のコンテスト投稿記事をご紹介します。

@Shuichi Igusa さん、こんにちは。

1つ目のご質問についてですが、

実際のデータが登録されているテーブルは「HSFHIR_X0001_S.Patient」かと思いますが、どこでInsert文が流れているのでしょうか。

IRIS for HealthのFHIRリポジトリの内部処理内で行われているため、詳細は非公開となります。申し訳ありません。

2つ目のご質問の「HSFHIR_X0001_S.Patient」のclsファイルですが、FHIRリポジトリ作成の中で自動生成されるクラスのため、お試しいただいているテンプレートの中には含まれないファイルです。

自動生成されたクラスは、クラスリファレンスであればご覧いただけます。(VSCodeの左下に見える接続文字列をクリックすると画面中央上部に「Open Class Reference」のリンクが表示されます)

クラスリファレンスの画面左でパッケージ名の階層を展開するとクラス名が確認できるのでクリックすると画面右側に詳細が表示されます。

ぜひご確認ください。

@Yuji Ohata さん、こんにちは。

ご連絡ありがとうございます。コミュニティチームで確認しまして応募方法を以下に変更することとしました。

グループ「IRIS contest」は不要

タグの「コンテスト」のみの設定でご応募お願いいたします。(この後、関連記事を修正します)

(記事に関連するタグは、もちろん設定いただいて大丈夫です)

ご連絡いただき助かりました!ありがとうございました。

ご応募お待ちしてます!

いつの間にか、:py も追加されていました。(Pythonシェルへ切り替わります。)

USER>:py
 
Python 3.9.5 (default, Jan 13 2023, 15:20:22) [MSC v.1927 64 bit (AMD64)] on win32
Type quit() or Ctrl-D to exit this shell.
>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2023, 4, 13, 11, 16, 43, 487481)
>>>

もちろん、以下メソッドの実行でも切り替わります。

do ##class(%SYS.Python).Shell()

laugh

@Ohata.Yujiさん、こんにちは

単独で作成されているグローバル変数に対してSQLを発行するためには、クラス定義のストレージの定義を「デフォルトストレージ」から「SQLストレージ」に変更する必要があります。

丁度、似たグローバル構造に対してSQLストレージを作成する例がFAQトピックにありました。

既存のグローバルデータをオブジェクトやSQLインタフェースから利用する方法はありますか?

(添付の参考資料にあるPDFのP2~9までの ^KIONデータに対する定義が対象です。SQLストレージを作成する場合、スタジオのインスペクタを使っていただくと作りやすいかと思います。)

こんな感じで試してみました。

(^Testの右辺のデータを Data1プロパティで操作できるように定義してみました)

Class Gbl.Test Extends %Persistent [ StorageStrategy = MyGlobalStorage ]
{

Property Key1 As %Integer [ Required, SqlColumnNumber = 2 ];

Property Key2 As %String [ Required, SqlColumnNumber = 3 ];

Property Data1 As %String;

Index KeyIndex On (Key1, Key2) [ IdKey, Unique ];

ClassMethod createdata()
{
	set ^Test(1,2)="A"
	set ^Test(1,3)="B"
	set ^Test(2,1)="C"
	set ^Test(2,2)="D"
}

Storage MyGlobalStorage
{
<SQLMap name="GblMap">
<Data name="Data1">
<Delimiter>"^"</Delimiter>
<Piece>1</Piece>
</Data>
<Global>^Test</Global>
<RowIdSpec name="1">
<Expression>{L1}</Expression>
<Field>Key1</Field>
</RowIdSpec>
<RowIdSpec name="2">
<Expression>{L2}</Expression>
<Field>Key2</Field>
</RowIdSpec>
<Subscript name="1">
<Expression>{Key1}</Expression>
</Subscript>
<Subscript name="2">
<Expression>{Key2}</Expression>
</Subscript>
<Type>data</Type>
</SQLMap>
<StreamLocation>^Gbl.TestS</StreamLocation>
<Type>%Storage.SQL</Type>
}

}

DBeaverからの参照はこんな感じです。

このようなイメージであっていますでしょうか。

現在16記事が投稿されていますがその中の1つは、🗾日本のコミュニティメンバーからの投稿です👍

投票は英語記事への「いいね👍」で行っています。ぜひ日本からの投稿を応援してください📣

さて、今回のお題ですが、レベルを問わない InterSystems IRIS のチュートリアルです。

  • いつも使っているこの使い方、実は初めて使う人には良い内容かも!
  • 最初こんな風に使っていたけど、実はこの使い方のほうがいいかも!

など、ご経験された内容を新しいコミュニティメンバーに共有するイメージでぜひ投稿してみてください。

投稿は直接英語版コミュニティに投稿いただいても、まずは日本語で日本のコミュニティに投稿いただいてもどちらでも大丈夫です(#チュートリアル のタグをつけて投稿いただければ、日本のコミュニティからご連絡いたします)。

なお英字にした際、URLやコマンド実行例を除き「400単語以上の記述が必要」となりますので、ご注意ください。

英単語のカウントは、コミュニティのエディタをデフォルトモード「WYSIWYG」にした状態で右下に表示されます。確認にご利用ください。

Hiroseさん、こんにちは。

独自のアプリケーションのパスのハンドラーマッピングの設定で、

要求パス(*.cspなど)の設定画面にある「要求の制限」ボタンクリック後に開く画面内「要求のマップ先が次の場合のみハンドラーを呼び出す」のチェックボックスに、チェックが入っていましたら、外してみていただけますでしょうか。

Ohataさん、もしかして、shaCdカラムのタイプですが、埋め込みクラス(%SerialObject)で作成したクラスをタイプとして定義されていたりしますか?

テーブル定義ではなく、クラス定義として以下作成してテストしてみたら、カラム名=Null でヒットしました。

参照元クラス:Test.Person

Class Test.Person Extends %Persistent
{

Property Name As %String;
Property Address As Address;
}


​​​​​埋め込みクラス:Test.Address

Class Test.Address Extends %SerialObject
{

Property Zip As %String;
Property Pref As %String;
}

(Test.PersonのAddressプロパティがTest.Addressを参照する定義)

以下のテストをしたところ、Ohataさんと同じ状況になりました(SELECTの実行ですが、管理ポータルのODBCモードとODBCクライアントで試しています)

insert into Test.Person (Name) values('テスト太郎')

select * from Test.Person where Address=NULL この結果👉 

select * from Test.Person where Address is NULL この結果👉 0件

違う状況でしたらすみません・・。

皆さん、こんにちは!

期間が10日間延長され、応募締め切りが31日までに変わりました!まだまだ間に合います💨
​​ぜひ IRIS+Python に関係する記事を投稿しコンテストへ参加してみてください!laugh
(参加者全員に🎁賞品🎁あります!)