無事、実行できるようになってよかったです!

お試しいただきありがとうございました。

ユーザやロールなど、管理ポータルのセキュリティ管理以下の設定についてですが、IRIS開始中に定義をエクスポートし、新しい環境にインポートする手順で復旧することができます。

以下、参考記事です。

セキュリティ設定のエクスポートとインポートに関するTips

バージョン情報ありがとうございます。

コミュニティエディションのダウンロードサイトですが、最新バージョンのみをダウンロードいただけるようになっていますため、お手数おかけいたしますが、一度IRISをアンインストールしてから新規インストールでご対応いただくことになりそうです。

また後日、結果をお知らせください!

@makoto fukunaga さん、こんにちは。

エラーの状況を詳細に添付いただきありがとうございます。 

アップグレード前のIRISのバージョンは何をお使いだったでしょうか。

IRISには2種類のリリースサイクル(CDリリースとEMリリース)があり、CDリリースの場合アップグレードパスにルールがあります。

現在、コミュニティエディションダウンロードページから IRIS 2024.2 をダウンロードいただけるのですが、このバージョンにアップグレードするためには、アップグレード前バージョンが IRIS 2024.1である必要があります(CDリリースのアップグレードパスについて詳細は「製品リリースサイクルの変更」をご参照ください)。

もし、アップグレード前のIRISのバージョンが2024.1より前のバージョンであった場合、CDリリースのアップグレードパスと異なるため、messages.log に以下のエラーメッセージが出力されるようです。

11/21/24-15:08:38:690 (1780) 3 [Utility.Event] Error: 繧ィ繝ゥ繝シ #5002: ObjectScript 繧ィ繝ゥ繝シ:<SUBSCRIPT>CheckSecurityTables+1184^Security.System.1 ^SYS("Security","ServersD","") Checking security tables - Shutting down the system : $zu(56,2)=$Id: //iris/2024.2.0/kernel/common/src/gformat.c#1 $ 2173 0

コミュニティエディションのIRIS 2024.1キットをお持ちであれば、一旦バージョン2024.1にアップグレードし、その後バージョン2024.2にアップグレードできるのですが、WRCアカウントをお持ちでない場合、バージョン2024.1をダウンロードいただけません。

バージョン2024.2をインストールするためには、一旦現在のIRISをアンインストールし、バージョン2024.2を新規でインストールします。

いままで使用中だったユーザ用DB(作成されたものも含む)はそのまま2024.2環境でもご利用いただけますので、その方法を含めて手順をご案内します。

(ユーザ用データベースはIRISのアンインストールで削除されることはありませんが、以下手順では、念のため別の場所に退避する手順を記載しています)

1) バージョン2024.2でも使用したいユーザ用DBを退避します。

IRISをインストールすると、空のDBとしてUSERデータベースが用意されています。この他、ご自身で作成されたデータベースがある場合には、一旦データベースディレクトリごと退避します。

USERデータベースについては、<IRISインストールディレクトリ >\mgr\user に配置されています。userディレクトリごと、他の場所に退避します。

※念のための確認で、退避したディレクトリ以下に iris.lckがある場合は削除しておいてください。

2) Windowsの「プログラムの追加と削除」メニューを利用してIRISをアンインストールします。

ご参考:Windowsで InterSystems 製品をアンインストールするときの注意点

3) IRISのインストールディレクトリを削除します。

4) IRIS2024.2をインストールします。

5) 退避していいたユーザ用DBを新環境で利用できるようにデータベースの定義を作成します。

管理ポータルを開き、[システム管理] > [構成] > [システム構成] > [ローカルデータベース] メニュー進みデータベースを新規で作成します。

データベース名を決定した後、データベースディレクトリに退避したユーザ用データベースディレクトリを指定します。

図例は c:\temp\user に退避したディレクトリをそのまま指定した場合の例です。

「次へ」で次ページに進むと、以下の案内が出ます。

前バージョンで使用していたデータベースファイル(IRIS.dat)がある場合、上記メッセージが表示されます。

「完了」ボタンを押して作成を終了します。

ここまでの手順でデータベースの作成ができましたので、次にネームスペースを作成します。

6) 作成したデータベースを使用するネームスペースを作成します。

管理ポータルの[システム管理] > [構成] > [システム構成] > [ネームスペース] メニュー進みネームスペースを新規で作成します。

図例では、USER2ネームスペースを作成し、5)で作成したUSER2データベースを使用するように設定しています。

画面下部の「相互運用プロダクション用にネームスペースを有効化」のチェックがデフォルトで入っています。管理ポータルのInteroperabilityメニューを使用する場合はチェックしたままとします。

最後に保存を押してネームスペース作成を完了します。

7) 作成したネームスペース内のクラス(テーブル)をコンパイルします。

ターミナルを起動し、作成したネームスペースに移動します。例はUSER2ネームスペースに移動して全クラスを一括コンパイルしています。

set $namespace = "USER2"
do $system.OBJ.CompileAll("u")

退避したユーザ用DBが複数だった場合、作成した新規ネームスペースも複数存在することになり、上記実行を各ネームスペースで実施するのが少し面倒になりますので、その場合は、全ネームスペースに対して一括でコンパイルする方法もあります。

do $system.OBJ.CompileAllNamespaces("u")

以上です。

ぜひお試しください。

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

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

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

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

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

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

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

ぜひご確認ください。

@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からの参照はこんな感じです。

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

Hiroseさん、こんにちは。

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

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

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

試してみましたが、SECONDARYデータベースできませんねsad

マニフェストを使った方法ではないのですが、以下のメソッドを使うとできるようでした。

set st=##class(%EnsembleMgr).CreateNewDBForSecondary("ネームスペース名",1)

(別の内容についての注意書きですが、ドキュメントだとこちらに記載がありました。)

マニフェストの <Invoke> を使って呼び出してみた結果は以下の感じでした。

<Invoke Class="%EnsembleMgr" Method="CreateNewDBForSecondary" CheckStatus="true">
<Arg Value="${Namespace}"/>
<Arg Value="1"/>
</Invoke>

↓できあがったデータベース↓

Amanoさん、こんにちは。

settings.json に以下1行追記すると、サーバ側コードを直接VSCodeから編集できます(ローカルにExportせずサーバ側コードを操作できます)。

"objectscript.serverSideEditing": true,

全体だとこんな感じです。

{
    "objectscript.serverSideEditing": true,
    "objectscript.conn": {
        "server": "test",
        "active": true,
        "ns": "USER",
    },
    "intersystems.servers": {    
    "test": {
          "webServer": {
              "scheme": "http",
              "host": "localhost",
              "port": 52773
          },
          "username": "_SYSTEM",
      },
  }
}

CSPのExportのボタンですが、うまく動かないそうで(6つ目の箇条書き)crying 非表示になってるようでした。

その他、クラスやルーチンのように、ワークスペースで書いたCSPファイルをファイル保存の動作でサーバ側にインポート+コンパイルできるようにしてほしい!のリクエストは上がっていたのですが、まだできてないようでした。

進捗あったらお知らせします!