新しい投稿

Encontrar

記事
· 3 hr 前 6m read

使用 IAM 通过 OAuth 2.0 确保 FHIR 服务器的安全

InterSystems API 管理器(IAM)是 InterSystems IRIS 数据平台的核心组件,提供集中式 API 管理,重点强调安全性。IAM 简化了从创建到退出的整个 API 生命周期,并提供了一个开发人员门户,便于发现和集成 API。访问控制功能允许管理员定义精确的权限,IAM 与 IRIS 数据平台无缝集成,增强了数据管理和集成能力。

IAM 的功能包括

  • API 网关:集中式 API 管理和安全中心。
  • API 生命周期管理:从创建到退出的完整生命周期控制。
  • 安全性:身份验证、授权和数据加密。
  • 监控和分析:使用监控和模式分析工具。
  • 开发人员门户网站:具有文档和测试功能的 API 发现门户。
  • 访问控制:对 API 访问和操作进行细粒度控制。
  • 与 InterSystems IRIS 集成:与 IRIS 数据平台无缝集成。

使用案例: 本报告中的用例是身份和访问管理。

符合 OAuth 2.0 标准的身份验证和授权,使用 IAM 确保 FHIR 服务器的安全。

在本文档中,您将了解如何使用 InterSystems API Manager 通过 OAuth 2.0 确保 FHIR 服务器的安全。OAuth 2.0 是一种广泛使用的授权标准,可使应用程序访问 FHIR 服务器上受保护的资源。InterSystems API 管理器是一种可简化 FHIR API 的创建、管理和监控的工具。按照本文档中的步骤,您将能够配置 InterSystems API Manager 作为 OAuth 2.0 授权服务器,并向授权客户端授予访问令牌。您还将了解如何使用客户端库,使用 OAuth 2.0 将应用程序连接到 FHIR 服务器。

注意:FHIR 服务器仅支持用于 OAuth 2.0 身份验证的 JWT 标记,不支持不透明标记。

本地运行演示的说明:

  1. 在 "命令提示符 "中运行以下命令克隆相关版本库:
    git clone https://github.com/isc-padhikar/IAM_FHIRServer
  2. 进入新克隆的版本库目录,创建一个新目录并命名为 "key"。然后复制一个 iris.key 文件,这是支持 API 管理的 InterSystems IRIS for Health 的许可证。
  3. 然后返回命令提示符,逐个运行以下命令:
    docker-compose build
    docker-compose up
  4. 转到运行 IAM 的 localhost:8002。
  5. 使用 IAM,我可以将 FHIR 服务器作为服务提供,如下图所示:
  6. 定义一个路由,作为 FHIR 服务器的代理(我已将 /fhir 定义为代理),如下图所示:
  7. 然后,定义插件,用于处理向 FHIR 服务器发出的请求、验证和授权对 FHIR 服务器的访问。我们应在 JWT 插件的 "凭据 "部分定义 JWT 令牌的发行方(授权服务器)和通过解码私钥获得的公钥(请参阅即将介绍的 "授权服务器 "部分),如下图所示: 下图显示了使用 Auth0 服务器进行的身份验证和通过 IAM 进行的基于 JWT 令牌的授权。从授权服务器获取 JWT 令牌:使用 JWT 令牌通过 IAM 中定义的代理路由访问 FHIR 服务器:

授权服务器:

使用外部授权服务器及其 Auth0。在接下来的 "用作参考的演示 "部分提到的演示 #1 (FHIROktaIntegration) 的 README 中给出了设置授权服务器的说明。

获取 JSON 网络密钥集 (JWKS) 的端点:https://dev-bi2i05hvuzmk52dm.au.auth0.com/.well-known/jwks.json

它为我们设置的授权服务器提供了一对密钥,可用于使用解码算法检索私钥。

我们将在 IAM 中使用私钥验证 JWT 令牌签名。

从 JWKS 获取公钥的最佳做法是使用编程语言。我在 Python 中使用了以下代码:

import base64
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import rsa
import requests
# Replace 'YOUR_DOMAIN' with your actual Auth0 domain
jwks_url = 'https://dev-bi2i05hvuzmk52dm.au.auth0.com/.well-known/jwks.json'
response = requests.get(jwks_url)
jwks = response.json()
# Choose a specific key from the JWKS (e.g., the first key)
selected_key = jwks['keys'][0]
# Decode 'AQAB' (exponent 'e') from Base64 URL-safe to integer
decoded_exponent = int.from_bytes(base64.urlsafe_b64decode(selected_key['e'] + '==='), byteorder='big')
decoded_modulus = int.from_bytes(base64.urlsafe_b64decode(selected_key['n'] + '==='), byteorder='big')
# Construct the RSA public key
public_key = rsa.RSAPublicNumbers(
    decoded_exponent,
    decoded_modulus
).public_key(default_backend())
# Convert the public key to PEM format
public_key_pem = public_key.public_bytes(
    encoding=serialization.Encoding.PEM,
    format=serialization.PublicFormat.SubjectPublicKeyInfo
)
print(public_key_pem.decode('utf-8'))

用作参考的演示:

  1. FHIROktaIntegration:https://openexchange.intersystems.com/package/FHIROktaIntegration该演示展示了如何直接在 InterSystems IRIS for Health 上配置 OAuth 2.0,并将该配置用于 FHIR 服务器。请按照说明配置授权服务器的详细信息。不过,配置完成后在管理门户中是这样的: 这展示了如何在 InterSystems IRIS for Health 中配置 OAuth2.0 以确保 FHIR 服务器的安全。
  2. IAM 从零到英雄:https://openexchange.intersystems.com/package/iam-zero-to-hero

该演示包括 IAM 和 IAM 相关培训。我将对其进行修改,使其具有 FHIR 服务器,并在此演示中使用 IAM 实例与 Auth0 授权服务器进行身份验证,并使用 JWT 插件授权访问。
与之前的演示不同,这次演示使用 IAM 公开 FHIR 服务器端点,并使用 IAM 提供的插件库通过 OAuth 2.0 标准确保其安全。

本演示中的更改

在本演示中,我在 IRIS for Health 实例中添加了 FHIR 服务器。请用以下代码替换 iris.script 文件中的代码:

;do $System.OBJ.LoadDir("/opt/irisapp/src","ck",,1)
zn "%SYS"
Do ##class(Security.Users).UnExpireUserPasswords("*")
set $namespace="%SYS", name="DefaultSSL" do:'##class(Security.SSLConfigs).Exists(name) ##class(Security.SSLConfigs).Create(name) set url="https://pm.community.intersystems.com/packages/zpm/latest/installer" Do ##class(%Net.URLParser).Parse(url,.comp) set ht = ##class(%Net.HttpRequest).%New(), ht.Server = comp("host"), ht.Port = 443, ht.Https=1, ht.SSLConfiguration=name, st=ht.Get(comp("path")) quit:'st $System.Status.GetErrorText(st) set xml=##class(%File).TempFilename("xml"), tFile = ##class(%Stream.FileBinary).%New(), tFile.Filename = xml do tFile.CopyFromAndSave(ht.HttpResponse.Data) do ht.%Close(), $system.OBJ.Load(xml,"ck") do ##class(%File).Delete(xml)

//init FHIR Server
zn "HSLIB"
set namespace="FHIRSERVER"
Set appKey = "/csp/healthshare/fhirserver/fhir/r4"
Set strategyClass = "HS.FHIRServer.Storage.Json.InteractionsStrategy"
set metadataPackages = $lb("hl7.fhir.r4.core@4.0.1")
set importdir="/opt/irisapp/src"
//Install a Foundation namespace and change to it
Do ##class(HS.Util.Installer.Foundation).Install(namespace)
zn namespace

// Install elements that are required for a FHIR-enabled namespace
Do ##class(HS.FHIRServer.Installer).InstallNamespace()

// Install an instance of a FHIR Service into the current namespace
Do ##class(HS.FHIRServer.Installer).InstallInstance(appKey, strategyClass, metadataPackages)

// Configure FHIR Service instance to accept unauthenticated requests
set strategy = ##class(HS.FHIRServer.API.InteractionsStrategy).GetStrategyForEndpoint(appKey)
set config = strategy.GetServiceConfigData()
set config.DebugMode = 4
do strategy.SaveServiceConfigData(config)

zw ##class(HS.FHIRServer.Tools.DataLoader).SubmitResourceFiles("/opt/irisapp/fhirdata/", "FHIRSERVER", appKey)

zn "USER"
zpm "load /opt/irisbuild/ -v":1:1
zpm 
load /opt/irisapp/ -v
q
do ##class(Sample.Person).AddTestData()
halt

2. 在 docker-compose.yml 文件中,将 IAM 的镜像更新为最新版本(containers.intersystems.com/intersystems/iam:3.2.1.0-4),因为只有 3.1 以来的 IAM (Kong) 版本才支持 JSON draft-6,而这正是 FHIR 规范所提供的。

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
お知らせ
· 10 hr 前

Beta testers needed for our upcoming InterSystems CCR EHR Application Specialist certification exam

Hello InterSystems EHR community, 

InterSystems Certification is currently developing a certification exam for CCR Tier 2 users, and if you match the exam candidate description below, we would like you to beta test the exam! The exam will be available for beta testing starting January 27, 2026. 

Beta testing will be completed March 28, 2026.

What are my responsibilities as a beta tester?

As a beta tester, we ask that you schedule and take the exam by March 28, 2026. The exam will be administered in an online proctored environment free of charge (the standard fee of $150 per exam is waived for all beta testers). The InterSystems Certification team will then perform a careful statistical analysis of all beta test data to set a passing score for the exam. The analysis of the beta test results typically takes 6-8 weeks, and once the passing score is established, you will receive an email notification from InterSystems Certification informing you of the results. If your score on the exam is at or above the passing score, you will have earned the certification!

Note: Beta test scores are completely confidential. 

Interested in participating? Read the Exam Details below. 

Exam Details

Exam title: InterSystems CCR EHR Application Specialist

Note: InterSystems now offers two EHR products built by the same team and based on the same systems and processes. TrakCare serves as the foundational platform, while IntelliCare extends this foundation with additional features and capabilities. Both products share the same core infrastructure. Therefore, when referring to features common to both products - such as those covered in exam topic list - the term InterSystems EHR is used.  

Candidate description: An EHR application specialist who:: 

  • Uses Tier 2 CCRs to document and process change workflows,
  • Makes configuration changes in InterSystems EHR, and
  • Transports and deploys configuration changes across environments.

Recommended practical experience: Independently progress at least 50 Tier 2 CCRs and/or approximately 6 months full-time usage.

Recommended Preparation: Review the following:

Exam practice questions: A set of practice questions is provided here to familiarize candidates with question formats and approaches.

Number of questions: 81

Time allotted to take the exam: 2 hours

Exam format: Questions are presented in two formats: multiple choice and multiple response.

System requirements for beta testing

  • Working camera & microphone
  • Dual-core CPU
  • At least 2 GB available of RAM memory
  • At least 500 MB of available disk space
  • Minimum internet speed:
    • Download - 500kb/s
    • Upload - 500kb/s

Exam topics and content

The exam contains questions that cover the areas for the stated role as shown in the exam topics chart immediately below:

 

General Concepts (14) CCR Tier 0 (21) CCR Transport (19) CCR Tier 2 (27)

1. Describes basic change control concepts

  1. Defines change control as a concept
  2. Discusses the benefits of change control and the risks of not having it
  3. Defines source control alone and in the context of change control
  4. Names tips for successful use of change control

2. Describes change control with InterSystems

  1. Describes change control tools used within InterSystems including CCR and Perforce

3. Describes CCR and its main concepts

  1. Defines CCR First Principles
  2. Identifies the workflow order between the 4 possible CCR Primary environments
  3. Defines the term CCR system
  4. Defines the term CCR Transport and describes the movement of changes between environments, CCR, and Perforce
  5. Defines the terms Perforce branch, Item, and ItemSet
  6. Describes CCR Usage Tiers and gives examples

4. Performs basic tasks in CCR

  1. Navigates the CCR homepage, main menu, and main pages
  2. Accesses documentation and FAQs
  3. Defines the terms State, Phase, and Transition

1. Progresses a Tier 0 CCR

  1. Defines the terms Organization, Responsible Organization, Site Code, System, and System Code
  2. Creates a Tier 0 CCR Record
  3. Describes use of fields available when creating a CCR
  4. Recalls who can pass peer reviews in the CCR workflow from IN_PREP to CLOSED
  5. Documents every state from In_PREP to Closed in a BASE-TEST-LIVE workflow including peer reviews
  6. Selects the correct transition for deferred deployments.
  7. Transitions CCRs to the next state
  8. Performs the markPREPComplete transition
  9. Identifies the workflow for failPeerReview
  10. Performs the markAcceptanceFailed
  11. Describes markValidationFailed transition, including best practices
  12. Describes the importance of Peer Reviews
  13. Describes the importance of closing CCRs
  14. Recalls in which state an authorization is needed to progress a CCR
  15. Implements and tests changes in correct states of the workflow
  16. Locates and uses CCR Transition History
  17. Identifies and uses the env token

2. Uses Auxiliary Tools and Transitions

  1. Reassigns CCRs
  2. Describes the effect of Peer Review routing configuration options including System Architects and Default Peer Reviewers
  3. Recalls when a CCR can and cannot be merged
  4. Performs merge transitions and interprets results

1. Describes CCR Transport Basics

  1. Describes CCR Client Tools
  2. Describes CCR Transport workflows for disconnected environments, including uploading ItemSets from BASE to CCR and deploying ItemSets from CCR to TEST/LIVE
  3. Deploys ItemSets using best practices
  4. Describes the automatic preview integration on passPeerReview transition
  5. Identifies states and transitions with possible Perforce and/or ItemSet activity
  6. Uses CCR Transport best practices including the importance of cancelling CCRs properly

2. Describes CCR Transport Tools and terminology in the CCR Record

  1. Defines the term changelist
  2. Locates and identifies available meta data for submitted changes
  3. Logs into Perforce in CCR
  4. Describes diff chunks and merge conflicts
  5. Finds and interprets list of ItemSets associated with a CCR
  6. Defines and identifies the importance of baselining

3. Describes CCR best practices and debugging techniques

  1. Uses Catch-up CCRs
  2. Uses the revision history
  3. Locates and interprets error messages
  4. Uses transport log to retrieve additional error details
  5. Identifies cause and solution for merge conflicts
  6. Identifies and describes how to resolve errors in bundle and upload validation
  7. Describes options if uploaded to wrong CCR

1. Uses Tier 2 CCRs to safely progress changes made in InterSystems EHR applications

  1. Identifies when it is appropriate to create a change session in BASE
  2. Recalls what is required in order to create a change session
  3. Uses Change Control Menu within the InterSystems EHR side menu (bundle list)
  4. Uses the Find GUID tool
  5. Uses the Change Control menu to undo changes in the correct order
  6. Uses the Change Control screen to bundle and upload changes
  7. Identifies how security groups impact the visibility of Change Control menus
  8. Recalls the importance of the exclusion list
  9. Recalls how Code Table Overrides impact configuration changes
  10. Identifies how and when to deploy ItemSets in workflow

2. Recalls features of the CCR Tier 2 User Interface

  1. Identifies whether a source control issue is related to TCC
  2. Identifies whether a source control issue is related to CCR
  3. Recalls the function of the GUID Prediction in the CCR UI
  4. Recalls the importance of the "Create ItemSet" button in the Perforce Details section
  5. Recalls when to use the "Perforce Integration" feature in the Perforce Details section

3. Debugs CCR errors

  1. Distinguishes between primary key and GUID
  2. Recalls what ElementXML is and how to view it
  3. Identifies scenarios where support needs to be contacted
  4. Recalls why an ItemSet does not show up in an ItemSet list
  5. Recalls what an Advanced reassign is
  6. Recalls what to do when an itemset becomes stale
  7. Recalls what to do when a token becomes invalid
  8. Cancels and backs out of CCRs
  9. Uses the Restore To Base flag
  10. Resolves circular dependencies between CCRs
  11. Resolves missing GUID errors
  12. Identifies cause and solution for misaligned GUIDs

 

Instructions: 

Please review the following instructions for scheduling and buying an exam:

  1. From our exam store, log in with your InterSystems Single Sign-On (SSO) account.
    1. If necessary, please register for an account.
  2. Select InterSystems CCR EHR Application Specialist - Beta (CCE-Beta) and click Get Started.
  3. Verify system compatibility as instructed. The Safe Exam Browser download requires administrative privileges on your device.
  4. Run the setup test to ensure the device satisfies the exam requirements.
  5. Schedule your exam – this must be done before checking out. The exam must be taken at least 24 hours after, but within 30 days, of scheduling the exam.
  6. Review the InterSystems Certification Program Agreement.
  7. Confirm your appointment. You will receive an email from Certiverse with your exam appointment details.
  8. You can access your reservations and history through the Exam Dashboard available through the MY EXAMS menu.

Below are important considerations that we recommend to optimize your testing experience:

  • Read the Taking InterSystems Exams and Exam FAQs pages to learn about the test-taking experience.
  • Read the InterSystems Certification Exam Policies.
  • On the day of your exam, log in to Certiverse at least 10 minutes before your scheduled time, launch the exam under MY EXAMS, and wait for the proctor to connect.
  • Please have your valid government ID ready for identification. The proctor will walk you through the process of securing your room and releasing the exam to you. 

You may cancel or reschedule your appointment without penalty as long as the action is taken at least 24 hours in advance of your appointment. The voucher code will reactivate and you can use it to reschedule the exam.

Please contact certification@intersystems.com if you have any questions or need assistance, and we encourage you to share any feedback about the exam, whether positive or negative.

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
記事
· 13 hr 前 3m read

importação direta arquivo excel para global

Pessoal, a quem interessar possa.....

Desenvolvi uma Classe utilizando o python para ler um arquivo excel e gravar o conteúdo em global. Vejam como ficou: (fiquem a vontade para melhorias ou ajustes)

Class Utils.Importador Extends %RegisteredObject
{ /// Importa uma planilha Excel para a global ^ExcelData
/// Parâmetro: caminhoArquivo (Ex: "C:\Temp\dados.xlsx")
/// Exemplo de uso: Do ##class(Utils.Importador).LerExcel("C:\Temp\minha_planilha.xlsx",$username)
ClassMethod LerExcel(caminhoArquivo As %String, nomeUsuario As %String) [ Language = python ]
{
    import os
    try:
        from openpyxl import load_workbook
        import iris         if not os.path.exists(caminhoArquivo):
            print(f"ERRO: Arquivo não encontrado: {caminhoArquivo}")
            return         print(f"\n--- Lendo arquivo: {caminhoArquivo} ---")
        
        wb = load_workbook(caminhoArquivo, data_only=True)
        ws = wb.active
         
        
        # Limpa global
        g_ref = iris.gref('^ExcelData')
        del g_ref[nomeUsuario]
        
        count = 0
        for row in ws.iter_rows(min_row=2, values_only=True):
            count += 1
            lista_dados = []
            for celula in row:
                if celula is None:
                    lista_dados.append("")
                else:
                    lista_dados.append(str(celula))
            
            dados_para_gravar = "|".join(lista_dados)             if count == 1:
                print(f"Gravando (formato string IRIS): {dados_para_gravar}")
            g_ref[nomeUsuario,count] = dados_para_gravar
                
        print(f"Sucesso! {count} linhas gravadas em ^ExcelData.")     except Exception as e:
        print(f"ERRO: {e}")
} }
 

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
お知らせ
· 13 hr 前

Videos for InterSystems Developers Annual 2025 Recap

Hello and welcome to the 2025 Developer Community YouTube Recap.
Top 10 videos from InterSystems Ready 2025
InterSystems Different by Design
By Scott Gnau, Peter Lesperance, Tom Woodfin, Gokhan Uluderya, Jeff Fried, Daniel Franco
Analytics and AI with InterSystems IRIS - From Zero to Hero
By Benjamin De Boe, Thomas Dyar, Carmen Logue
The Road to AI in Healthcare
By Don Woodlock, Sean Kennedy, Alex MacLeod, Erica Song, James Derrickson, Julie Smith, Kristen Nemes, Varun Saxena, Dimitri Fane, Jonathan Teich, Judy Charamand
Using SerenityGPT to Build Out an Application GenAI Middleware at InterSystems
By Ben Spead, Hannah Sullivan, Dean Andrews, Victor Naroditskiy
Top 10 videos from InterSystems Contests
Claude IRIS Interoperability
By Dmitry Maslennikov
BG Iris Agent
By Elena Karpova
Quarkus IRIS Monitor
By Davi Massaru Teixeira Muta
IPM Explorer for VSCode
By John McBride
Langchain IRIS Tool
By Yuri Marx
iris_io_utility
By Pietro Di Leo
yaml-adaptor
By Yuri Marx
Global Inspector
By Robert Cemper
 
 
Top 10 "Code to Care" videos by Don Woodlock, President of InterSystems
"Rarified Air" videos by John Paladino, Vice President of Client Services, InterSystems
Securing the Digital Front Door
Top 10 other videos
FHIR as an AI platform: EHRs, Simulations, and Safety
By Elijah Cotterrell, Duc Lanwyn, Lydia Patterson, Michael Curtis
By Evgeny Shvarov
ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
記事
· 15 hr 前 3m read

Mejoras en la aplicación CCR para buenas prácticas

Durante el último año, el equipo de desarrollo de CCR ha priorizado cambios en la aplicación CCR para mostrar y fomentar mejores prácticas en su uso. Este artículo destaca algunas de las áreas en las que nos hemos centrado:

  • Panel de organización
  • Alertas del sistema
  • Higiene de ramas

En cada una de estas áreas, hemos aumentado la visibilidad de posibles problemas en el uso de CCR y proporcionado herramientas para que los usuarios los aborden de manera proactiva.

Panel de organización

Hemos seguido ampliando la información disponible en la página de detalles de la organización.

La vista general es un excelente lugar para obtener una visión global del uso de CCR en vuestra organización. Ahora incluye más indicadores clave (KPIs) que destacan distintas áreas de atención y enlazan a las páginas de la aplicación CCR donde podéis solucionarlas.

La pestaña Sistemas ofrece información detallada sobre el estado de las Client Tools en todos los entornos, así como información de System Architect. Las alertas aquí señalan información faltante, inactividad y Client Tools desactualizadas, con enlaces a los sistemas correspondientes.

Otras pestañas de la página de detalles de la organización se han mejorado con información adicional para que el uso de CCR en vuestra organización sea claro de un vistazo.

Alertas del sistema

Otra área con mayor visibilidad es la página de detalles del sistema, donde ahora tenemos alertas para muchos problemas de uso de CCR.

Se han añadido alertas de entorno para URLs no configuradas, URLs inseguras y problemas detectados en Client Tools. Los detalles se muestran al pasar el cursor por encima.

Cuando CCR detecta que las Client Tools del sistema están desactualizadas, aparecerá una alerta para incentivar el uso del botón de actualización.

Los sistemas que no hayan tenido actividad durante 6 meses ahora mostrarán una alerta. Dicho sistema puede ser dado de baja si ya no se utiliza, o se puede hacer clic en el botón de posponer para contar como un sistema activo durante el próximo año. Esto es adecuado para algunos tipos de sistemas que rara vez necesitan recibir actualizaciones.

Higiene de ramas del sistema

La higiene de ramas del sistema es una herramienta potente para identificar problemas existentes en las ramas de Perforce de un sistema. Está disponible en la página de detalles del sistema para cada sistema de nivel 1 o 2.

La funcionalidad principal de la herramienta ha estado disponible durante algún tiempo, pero las mejoras recientes han perfeccionado la detección de algunos casos límite.

Ejecutar esta comprobación en un sistema maduro es una excelente manera de identificar posibles problemas que podrían surgir en el futuro.

Conclusión

En estas áreas y en toda la aplicación CCR, se han realizado muchos cambios este año con el objetivo de promover el mejor uso de CCR. Las mejoras futuras se centrarán en mostrar más información y desarrollar herramientas que ayuden a los usuarios de CCR a comprender mejor sus sistemas y resolver problemas de manera proactiva.

Si tenéis preguntas o sugerencias sobre cómo la aplicación CCR puede fomentar las buenas prácticas, por favor, dejad un comentario abajo.

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください