查找

文章
· 七月 11, 2024 阅读大约需 4 分钟

管理ポータルのユーザ設定をプログラムで作成する方法

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

管理ポータル > [システム管理] > [セキュリティ] 以下の設定は、%SYSネームスペースにあるSecurityパッケージ以下クラスが提供するメソッドを利用することでプログラムから作成することができます。

ユーザ設定については、Security.UsersクラスCreate()メソッドを使えば作成できますが、ユーザを作成するだけでは適切な権限が付与されずに目的のデータにアクセスできない状況もあります。

例)testAユーザ作成

    %SYS>set st=##class(Security.Users).Create("testA",,"testA","これはテストユーザです","USER")
    
    %SYS>write st
    1

    上記メソッドで作成した結果は以下の通りです。(ロール付与無し、テーブルに対する権限の割り当てもなしの状態)

     

    以降の解説では、以下のシナリオをもとにした設定を行っていきます。

    シナリオ:アプリケーション開発者用ロールとユーザを作成する

    1) アプリケーション開発者のtestAは、USERネームスペースにログインするアプリケーション開発者です(=%DevelopmentリソースのUse許可を与えます)。

    2) このユーザはUSERネームスペース内で自由にテーブルの作成・参照・更新が行えるよう適切な特権を持つように定義します。

     

    1) のアプリケーション開発者testAの作成は、以下の通りです。

    未作成の場合は以下実行します。(現時点ではロールは何も付与していません。)

    • 第1引数:ユーザ名
    • 第2引数:ロール(複数ある場合はカンマ区切りで指定)
    • 第3引数:パスワード
    • 第4引数:ユーザのフルネーム
    • 第5引数:開始ネームスペース(ログイン後にアクセスするネームスペース)
    %SYS>set st=##class(Security.Users).Create("testA",,"testA","これはテストユーザです","USER")
    
    %SYS>write st
    1

     

    2)で触れられているテーブルの特権はユーザに直接付与することもできますが、ロールにも付与できます。

    アプリケーション開発者であるtestA 以外にも開発者が増えたとき簡単に同じ設定をユーザに追加できるよう、%DevelopmentリソースのUse許可、%DB_USERロール、テーブルに対する操作が行える特権を追加したロール:MyAppDeveloper を作成します。

    %SYSネームスペースで実行します。

    set st=##class(Security.Roles).Create("MyAppDeveloper","アプリケーション開発者用ロール","%Development:U","%DB_USER")

    Security.RolesクラスCreate()メソッドに指定する引数は以下の通りです。

    第1引数:ロール名
    第2引数:ロールの説明
    第3引数:リソースの割り当て(未指定もOK)
    第4引数:割り当てるロール(複数ある場合はカンマ区切りで指定)

    管理ポータルでは以下のように表示されます。

    管理ポータル > [システム管理] > [セキュリティ] > [ロール] > [MyAppDeveloper]ロールの「Assigned To」タブ選択

     

    このロールにUSERネームスペースの全てのSQL管理者特権を付与します。

    set p=##class(Security.SQLAdminPrivilegeSet).%New()
    set p.AlterTable=1
    set p.AlterView=1
    set p.BuildIndex=1
    set p.CancelQuery=1
    set p.CreateFunction=1
    set p.CreateMethod=1
    set p.CreateProcedure=1
    set p.CreateTable=1
    set p.CreateTrigger=1
    set p.CreateView=1
    set p.DropFunction=1
    set p.DropProcedure=1
    set p.DropQuery=1
    set p.DropTable=1
    set p.DropTrigger=1
    set p.DropView=1
    set p.Namespace="USER"
    set p.Grantee="MyAppDeveloper"
    set st=p.%Save()

     

    ロールMyAppDeveloperの[SQL Admin Privileges]

       

     

    最後に、アプリケーション開発者testAに作成したロール:MyAppDeveloperを付与します。(AddRoles()メソッドを使用します。)

    %SYS>set st=##class(Security.Users).AddRoles("testA","MyAppDeveloper")
    
    %SYS>write st
    1

     

    これで設定完了です。

    確認のため、管理ポータルをログアウトし、testAユーザでログインします(パスワードはtestAです)

    USERネームスペースにアクセスすることを確認し、管理ポータル > [システムエクスプローラ] > [SQL] で任意のSQL文を実行します。(CREATE TABLEなどが実行できることを確認します)

    讨论 (0)1
    登录或注册以继续
    问题
    · 七月 11, 2024

    Epic/MyChart integration

    We have a stand-alone web platform (readysetrecover.com) that helps people prepare for surgery focusing on the non-clinical – holistic and logistic aspects (stress reduction via meditation, sleep etc. as well as things like setting up the house, coordinating help from others etc).

    We had a meeting with a hospital, and they liked our solution but said their goal is ‘to provide patient education and communication on a single platform'. They currently use Epic and MyChart. In other words, they don’t like the idea of giving patients another site to visit, possibly with a different login, which is understandable.

    We can pass data between our site and the hospital EHR system with IRIS for Health, however, this doesn't really address the user side.

    Is there any way to integrate that would solve this issue? What do other sites do to create a more unified experience with an existing patient portal? Is there a way to have our site 'live' within MyChart or at least have a seamless sign in to our site once a patient is in MyChart (for example, they'd click a button in MyChart that would take them to our site, with a 'Return to MyChart' option at the top)? Very open to creative solutions here!

    讨论 (0)2
    登录或注册以继续
    InterSystems 官方
    · 七月 11, 2024

    MacOS Only - End-of-maintenance for Cache & Ensemble on MacOS

    As of October 15, 2024, support for Caché & Ensemble on MacOS will be Deprecated.

    Caché & Ensemble 2018.1.9 will continue to be supported, however there will be no further maintenance releases for MacOS. This means Caché & Ensemble 2018.1.9 will be the final version of these products on MacOS. 

    As a reminder, maintenance releases for Caché and Ensemble on the other supported platforms will come to an end on March 31, 2027.  More details on that can be found in last year’s announcement.

    讨论 (0)1
    登录或注册以继续
    文章
    · 七月 11, 2024 阅读大约需 2 分钟

    How to get application errors (^ERRORS) using a command

    InterSystems FAQ rubric

    Use the ErrorList query of the SYS.ApplicationError class.

    • Note 1: Runs in the %SYS namespace.
    • Note 2: This is a non-stored utility, so we use the %ResultSet class rather than %SQL.Statement.

    An example of command execution is as follows.

    USER>set $namespace="%SYS"   //equal to zn "%SYS"
    
    %SYS>set rset=##class(%ResultSet).%New()
    
    %SYS>set rset.ClassName="SYS.ApplicationError"
    
    %SYS>set rset.QueryName="ErrorList"
    
    // The first argument of the query is the namespace name, the second argument is the date (in MM/DD/YYYY format).
    %SYS>do rset.Execute("USER","08/17/2020")
    
    // To display the results on the screen, execute the %Display() method.
    %SYS>do rset.%Display()
    Error # Error message   Time    Process DisplayPID      Username        Code line
    1 <DIVIDE> 02:43:10 2536 2536 irisowner
    
    1 Rows(s) Affected
    
    %SYS>do rset.Close()

    The following shows how to get column values ​​of a SELECT while navigating through rows.

    To move to a row, use the Next() method (which returns 1 if the row exists).

    To get a column, use Get("column name"). For details on column names, please refer to the description of the ErrorList query in the class documentation.

    About column names of ErrorList queries.

    %SYS>do rset.Execute("USER","08/17/2020")
    
    %SYS>while rset.Next() { write rset.Get("Error #"),"-",rset.Get("Error message"),"-",rset.Get("Time"),"-",rset.Get("Code line"),!}
    1-<DIVIDE>-02:43:10-

    For terminal viewing, you can also use the ^%ER routine.

    Execute the following while in the namespace you want to reference (the example is executed in the USER namespace).

    The green bold underlined text indicates the input area.

    USER>do ^%ER
     
    For Date: ?L
    Thu 09/17/2020  (T)   2 Errors
    Mon 09/07/2020  (T-10) 3 Errors
    Mon 08/31/2020  (T-17) 1 Error
    Mon 08/24/2020  (T-24) 1 Error
    
    For Date: 09/17/2020  17 Sep 2020   2 Errors
    
    Error: ?L
     1. " *a"  at  9:05 am.   $I=|TRM|:|13484   ($X=0  $Y=15)
         $J=13484  $ZA=0   $ZB=$c(13)   $ZS=262144 ($S=268271680) 
     2. "^%ETN"  at  9:05 am.   $I=|TRM|:|13484   ($X=0  $Y=17)
         $J=13484  $ZA=0   $ZB=$c(13)   $ZS=262144 ($S=268263368)
         %ETN     ;%STACK-related error log
    
     Error: 1
     1. " *a"  at  9:05 am.   $I=|TRM|:|13484   ($X=0  $Y=15)
         $J=13484  $ZA=0   $ZB=$c(13)   $ZS=262144 ($S=268271680)
    Variable:
    
    Error:
     
    For Date:
    USER>

    For Date: specify the date when the error occurred in the mm/dd/yyyy format.

    For Error: specify the error number.

    When you are finished viewing, press Enter to exit. 

    2 Comments
    讨论 (2)1
    登录或注册以继续
    InterSystems 官方
    · 七月 11, 2024

    Sortie d'InterSystems Reports version 24.1

    La version 24.1 d'InterSystems Reports est désormais disponible sur le site InterSystems Software Distribution dans la section Components. Le logiciel s'appelle InterSystems Reports Designer et InterSystems Reports Server et est disponible pour les systèmes d'exploitation Mac OSX, Windows et Linux.

    Cette nouvelle version apporte de grandes améliorations de notre partenaire, insightsoftware. InterSystems Reports 24.1 est optimisé par Logi Report version 24.1SP2 et comprend :

    • Personnalisez les annotations pour améliorer la représentation visuelle des pièces jointes dans un document compatible PDF/A. Pour plus d'informations, consultez Adding PDF Attachment to a Report.
    • Prise en charge des balises HTML courantes lors du rendu des rapports en mode Design.
    • Fonctionnalités supplémentaires dans Page Report Studio pour permettre plus de flexibilité lors de la modification de rapports sur Reports Server

    Pour plus d'informations sur ces fonctionnalités et d'autres, consultez les notes de version disponibles auprès d'insightsoftware.

    Notez que l'installation d'InterSystems Reports 24.1 nécessite la version 11 ou 17 du JDK pour que l'installation puisse s'exécuter. Veuillez effectuer une mise à niveau si vous utilisez JDK 8 avant l'installation d'InterSystems Reports.

    Pour plus d'informations sur les rapports InterSystems, consultez le contenu de la documentation et des services d'apprentissage InterSystems.

    讨论 (0)1
    登录或注册以继续