Nova postagem

Pesquisar

Artigo
· Fev. 13 4min de leitura

Debugando a mensagem “Server Availability Error” ao carregar a Aplicação Web

No WRC, frequentemente vemos clientes entrarem em contato conosco porque seus Web Gateways são incapazes de servir páginas web. Este artigo explicará um motivo frequente para a ocorrência desses erros e descreverá algumas ferramentas que podem ser usadas para depurar o problema. Esta explicação está focada no Web Gateway servindo instâncias do InterSystems IRIS, mas a mesma explicação deve se aplicar ao CSP Gateway servindo instâncias do Caché também.

O Problema:

A tentativa de carregar uma Aplicação Web (seja uma aplicação personalizada ou o Portal de Gerenciamento do Sistema) resulta em um dos seguintes erros (dependendo do seu navegador):

Adicionalmente, o arquivo CSP.log mostra:

Por que isso acontece

Para entender por que isso ocorre, precisamos analisar a arquitetura em que o Web Gateway opera:

Quando você tenta carregar sua aplicação em um navegador, o navegador envia uma requisição para o seu Servidor Web. O Servidor Web passa essa requisição para o Web Gateway. O Web Gateway então precisa se comunicar com o InterSystems IRIS para entender o que fazer com a requisição. Mas, como o Web Gateway reside fora do InterSystems IRIS (e pode estar em outra máquina), exigimos que o processo do Web Gateway se autentique no IRIS. Isso é o mesmo que exigimos para quaisquer outros novos processos que se conectam ao IRIS, como conexões ODBC remotas ou uma sessão de Terminal IRIS local simples.

A razão para os erros acima ocorrerem durante o carregamento da aplicação é porque a autenticação do Web Gateway para o IRIS está falhando. A configuração do Web Gateway armazena, dentro do seu arquivo CSP.ini, um conjunto de credenciais para cada servidor InterSystems IRIS ao qual ele se conecta. Normalmente, essas credenciais são para o usuário “CSPSystem”, que é uma conta criada por padrão quando o IRIS é instalado. Essas credenciais são então usadas para tentar autenticar usando as configurações definidas para o Serviço %Service_WebGateway no IRIS.

Para obter mais informações sobre por que essa autenticação está falhando, você pode usar os recursos de Auditoria oferecidos pelo InterSystems IRIS. Dado que você provavelmente não pode usar o Portal de Gerenciamento neste momento, você pode usar a rotina ^SECURITY em uma Sessão de Terminal IRIS para configurar a Auditoria e visualizar o Log de Auditoria.

Primeiramente, você precisará Habilitar a Auditoria, caso ela ainda não tenha sido habilitada:

Em seguida, certifique-se de que a Auditoria para o Evento %System/%Login/LoginFailure esteja habilitada:

Uma vez feito isso, você pode reproduzir o problema “Server Availability Error”. Isso deve resultar em um Evento de Auditoria LoginFailure sendo registrado, e você pode examinar os detalhes deste evento para descobrir mais:

A seção “Error message”deve fornecer mais informações sobre por que estamos vendo o LoginFailure. Problemas comuns incluem“User CSPSystem is disabled” ou “Service %Service_WebGateway is not enabled for Password authentication”, que sugerem alterações que devem ser feitas nas Configurações de Segurança do IRIS.

O problema mais comum que vemos no WRC é que a autenticação está falhando devido a "Senha Inválida". Isso significa que a senha do CSPSystem armazenada no Web Gateway não corresponde à senha do CSPSystem armazenada no IRIS.

 Como corrigir o problema

Agora que a entrada do Log de Auditoria fornece uma indicação clara de qual é a incompatibilidade entre o Web Gateway e o InterSystems IRIS, você precisa corrigir essa incompatibilidade. As credenciais do CSPSystem no IRIS podem ser modificadas através do menu ^SECURITY em uma sessão de Terminal.

Existem algumas maneiras de modificar as credenciais do CSPSystem armazenadas no Web Gateway. A maneira mais fácil é acessar o Portal de Gerenciamento do Web Gateway, que está documentado aqui: https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GCGI_oper_config . Uma vez que você tenha carregado a Página de Gerenciamento do Web Gateway, você pode editar as credenciais usadas para autenticar no IRIS clicando no link Acesso ao Servidor e editando as configurações de Segurança de Conexão para o Servidor relevante.

Se você não conseguir acessar a Página de Gerenciamento do Web Gateway, então você terá que editar o arquivo CSP.ini. O arquivo CSP.ini deve ter seções para cada Definição de Servidor configurada no Web Gateway. Você deverá ser capaz de editar as seções “Username” e “Password” na seção relevante para corresponder ao que está armazenado no InterSystems IRIS. Observe que a seção [SYSTEM] controla o acesso ao Portal de Gerenciamento do Web Gateway, não uma instância do InterSystems IRIS chamada [SYSTEM].

Por exemplo, se você tiver uma definição para o servidor “Test” onde a senha do CSPSystem estiver incorreta:

You can edit the CSP.ini file to have the correct plaintext password:

Da próxima vez que você tentar autenticar do Web Gateway para o InterSystems IRIS, a senha será criptografada:

Discussão (0)1
Entre ou crie uma conta para continuar
Artigo
· Fev. 13 4min de leitura

Bulk FHIR Step by Step

FHIR repositories, applications and servers typically serve clinical data in small quantities, whether to return data about a patient, their medications, vaccines, allergies, among other information. However, it is common for a large amount of data in FHIR/JSON format to be requested to be used to load into Data Lakes, identifying study cohorts, population health, or transferring data from one EHR to another. To meet these business scenarios that require large extractions and loads of data, it is recommended to use the FHIR Bulk Data Access feature provided by HL7 institution.

The InterSystems IRIS for Health implements the FHIR Bulk Data Access with the feature BFC - Bulk FHIR Coordinator (https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.UI...). According InterSystems documentation, BFC "simplify the FHIR bulk data interaction for clients and to not overwhelm a FHIR server with bulk data requests, the InterSystems Bulk FHIR Coordinator(BFC) mediates the interaction between a bulk data client and a FHIR resource server endpoint for bulk data requests. The Bulk FHIR Coordinator can facilitate bulk FHIR export for FHIR resource servers that do not natively support the bulk data interaction." The diagram into the documentation illustrates how the Bulk FHIR Coordinator mediates the interaction between a client and FHIR endpoints:

The Bulk FHIR Coordinator mediates the interaction between a client and a FHIR endpoint

So if you want to migrate from any FHIR server to IRIS for Health, you can use BFC to connect on a target FHIR server to get all data you need as json files (ndjson resources), and import into your InterSystems FHIR server.

In this article you will learn step by step how to configure and use BFC to obtain all patient data from an FHIR repository into JSON files for later use.

Step 1 - Get/Configure an IRIS for Health Instance to use BFC

If you don't have an IRIS for Health in use, you can get one here: https://openexchange.intersystems.com/package/iris-fhir-template. Follow these installations procedures:

1.1 Docker setup:

Clone/git pull the repo into any local directory

git clone https://github.com/intersystems-community/iris-fhir-template.git

Open the terminal in this directory and run:

docker-compose up -d


1.2 Or IPM setup (required an IRIS for Health running):

Open IRIS for Health installation with IPM client installed. Call in any namespace:

USER>zpm "install fhir-server"

This will install FHIR server in FHIRSERVER namespace.

Or call the following for installing programmatically:

set sc=$zpm("install fhir-server")

Step 2 - Create a new security credential

1. Access the Management Portal for the namespace FHIRSERVER (http://localhost:32783/csp/sys/%25CSP.Portal.Home.zen?$NAMESPACE=FHIRSERVER).

2. Go to Interoperability > Configure > Credentials:

3. Set the BulkCreds values and save:

  • ID: BulkCreds
  • User Name: _SYSTEM
  • Password: SYS

Step 3 - Configure the BFC - Bulk Data Coordinator

1. Go to BFC UI (http://localhost:32783/csp/healthshare/fhirserver/bulkfhir/index.html):

2. Click the button + New Configuration > Create New:

3. Set the configuration settings:

  • Name: BFC_Patients
  • BFC Endpoint (any relative path): /bulkfhir/patients
  • Keep all other settings as they are

4. Click Next button.

5. Select HS.BulkFHIR.Auth.BasicAuth.Adapter and click the Next button

6. Select the HS.BulkFHIR.Fetch.PureFHIR.Adapter for Fetch Adapter field and set the following values:

  • Endpoint URL: http://fhir-template:52773/fhir/r4
  •  
  • SSL Configuration: BFC_SSL
  • Authorization Type: HTTP
  • HTTP Credential ID: BulkCreds
  • Accept the default values for all other fields

7. Click the button Next.

8. Select the value HS.BulkFHIR.Storage.File.Adapter for Storage Adapter field and set the following values:

  • Storage Adapter: HS.BulkFHIR.Storage.File.Adapter
  • File URL: /bulkfhir/file
  • Directory: /usr/irissys/mgr/Temp/BulkFHIR/FHIRSERVER/

9. Click the button Next.

10. Review the configuration and click the button Configure in the bottom of the page:

11. You will see the success message: 

Step 4 (Final Step) - Get your bulk data

1. Go to Exports:

2. Click the button + New Export Request:

3. Select the Configuration field BFC_Patients value and click the button Next

4. Select the Patient option and click the button Export Now:

5. You get a sucess message:

6. Click the button Refresh on the Top of the page:

7. See the session of the configuration BFC_Patients completed:

8. Click the last button Download ():

9. See the the exported json files list:

10. Download any file and see its content:

11. To initiate a bulk FHIR export from a REST client, send a GET request to your BFC endpoint indicating the desired operation, for example:

12. More details how to use with API: https://docs.intersystems.com/healthconnectlatest/csp/docbook/DocBook.UI...

13. More details how to use BFC:

Enjoy!!

Discussão (0)1
Entre ou crie uma conta para continuar
Artigo
· Fev. 13 3min de leitura

Un vistazo a SQL Dinámico y SQL Embebido

   

 

 

A diferencia de la película mencionada en la imagen (para quienes no lo sepan, Matrix, 1999), la elección entre SQL Dinámico y SQL Embebido no es una elección entre la verdad y la fantasía, pero sigue siendo una decisión que debéis tomar. A continuación, intentaré hacer que vuestra elección sea más sencilla.

Si vuestra necesidad es la interacción entre el cliente y la aplicación (y, por lo tanto, la base de datos), SQL Dinámico puede ser más adecuado, ya que se "adapta" fácilmente a los cambios en las consultas. Sin embargo, este dinamismo tiene un costo: con cada nueva consulta, se remodela, lo que puede hacer que su ejecución sea más costosa. A continuación, se muestra un ejemplo sencillo de un fragmento de código en Python.

Ejemplo de SQL Dinámico

Basándoos únicamente en la información anterior, ¿es SQL Embebido la mejor opción?

Depende. Si pensamos únicamente en la agilidad de ejecución, podríamos inclinarnos por esta opción, ya que las instrucciones SQL se insertan directamente en el código de programación, utilizando variables HOST para la entrada y salida de datos. Sin embargo, el objetivo aquí no es enseñaros a usar una opción u otra, sino abrir vuestra mente a las posibilidades, aprendiendo un poco sobre cada una.

A continuación, os mostramos algunas características relevantes que debéis considerar al iniciar un desarrollo que requiera consultas SQL:

Como ya mencionamos, SQL Embebido suele destacarse por su rendimiento, pero esto no es una carrera y la velocidad no lo es todo. Su integración con varios lenguajes de alto nivel permite a los desarrolladores aprovechar mejor los recursos, ya que no es necesario buscar tantos archivos externos o scripts separados, haciendo que el código sea más limpio y mantenible.

También destaca por su consistencia, ya que los cambios en la base de datos pueden reflejarse en el código SQL, evitando posibles inconsistencias en los datos. Y, por último, pero no menos importante, el hecho de que las consultas estén dentro del código lo hace más seguro, ya que los controles de acceso pueden implementarse directamente en la aplicación, evitando accesos no autorizados y consultas inapropiadas.

Ahora bien, veamos qué ventajas tiene SQL Dinámico. Su dinamismo se aprecia fácilmente en su flexibilidad, ya que todo se ajusta en tiempo de ejecución: consultas, condiciones e incluso nombres de tablas o campos, lo que beneficia tanto al cliente como al usuario. También se caracteriza por su facilidad de administración, permitiendo a los DBAs realizar mantenimientos en las bases de datos y verificar el impacto en tiempo real, evitando así problemas mayores de compilación.

En resumen, con toda esta información, más teórica que práctica, no hay un lado correcto o incorrecto, ni un villano ni un héroe. La clave está en conocer a fondo el desarrollo que se va a realizar y analizar las necesidades en detalle para tomar la mejor decisión.

¿De qué lado de la fuerza estaréis? 

 
 
Discussão (0)1
Entre ou crie uma conta para continuar
Anúncio
· Fev. 13

Concours d'articles techniques en anglais 2025

Bonjour la communauté,

Nous avons des nouvelles passionnantes ! Il est temps de participer au prochain concours d'écriture InterSystems :

✍️ Concours d'articles techniques en anglais 2025 ✍️

Rédigez un article sur n'importe quel sujet lié aux produits et services InterSystems.

🎁 Des prix pour tous : Un prix spécial pour chaque auteur participant au concours !

Prix

1. Tout le monde est gagnant au concours d'articles techniques d'InterSystems ! Tous les utilisateurs qui rédigent un article pendant la période du concours recevront un prix spécial :

🎁 Câble de chargement 4 en 1

2. Prix des experts - les articles seront jugés par des experts d'InterSystems :

🥇 1ère place : Nintendo Switch OLED / Hogwarts Icons - Édition Collecteur Lego / The X-Mansion Lego

🥈 2ème place : Nintendo Switch Lite / Lamborghini Countach 5000 Quattrovalvole Lego

🥉 3ème place : Amazon Kindle Paperwhite / Retro Radio Lego

Alternativement, chaque gagnant peut choisir un prix d'un niveau inférieur au sien.

3. Prix de la communauté des développeurs - article ayant reçu le plus de likes :

🏅  Amazon Kindle Paperwhite / Retro Radio Lego

Remarque : 

  1. L'auteur ne peut être récompensé qu'une seule fois par catégorie (au total, l'auteur gagnera 2 prix : un pour les experts et un pour la communauté).
  2. En cas d'égalité, le nombre de votes des experts pour les articles à égalité sera considéré comme un critère pour les départager.  

Qui peut participer ?

Tout membre de la communauté des développeurs, à l'exception des employés d'InterSystems. Créez un compte !

Période du concours

📝  Du 3 février au 2 mars : Publication des articles.

🗳️  Du 3 mars au 9 mars : Période de vote.

🏅  10 mars : Annonce des gagnants.

Publiez un ou plusieurs articles pendant cette période. Les membres de la CD peuvent voter pour les articles publiés grâce aux likes dans le cadre du prix de la communauté.

Remarque : Plus tôt vous publiez vos articles, plus vous avez de temps pour recueillir les votes des experts et de la communauté.

Quelles sont les conditions ? 

❗️ Tout article rédigé pendant la période du concours et répondant aux conditions ci-dessous sera automatiquement inscrit au concours :

  • L'article doit porter sur les produits et services InterSystems.
  • L'article doit être en anglais et publier sur la Communauté Anglaise.  
  • L'article doit être 100 % nouveau.  
  • L'article ne peut pas être une traduction d'un article déjà publié dans d'autres communautés.  
  • Taille d'article : 400 mots minimum (les liens et le code ne sont pas comptabilisés dans la limite de mots).  
  • Un même auteur peut soumettre plusieurs articles. 
  • Les articles sur le même sujet mais avec des exemples différents provenant d'auteurs différents sont autorisés.

* Nos experts modéreront les articles. Seuls les contenus valides seront éligibles pour participer au concours.

🎯 BONUS SUPPLÉMENTAIRES

Bonus Nominal  Détails
Bonus du sujet 3 Rédigez un article sur l'un des sujets proposés ci-dessous.
Bonus de la vidéo En plus de publier l'article, réalisez une vidéo explicative.
Bonus de la discussion 1 Article avec la discussion la plus utile, selon les experts d'InterSystems. Seul 1 article recevra ce bonus.
Bonus de la traduction 2 Publiez une traduction de votre article sur l'une des communautés régionales. Remarque : 1 seul vote par article.
Bonus pour les nouveaux participants 5 Si vous n'avez jamais participé aux concours précédents, votre ou vos articles recevront ce bonus.
Bonus pour l'application 5 Téléchargez une application de votre article sur Open Exchange.

Si un article de concours est divisé en plusieurs parties, les bonus s'appliquent uniquement à la première partie, sauf s'ils sont spécifiques à une partie ultérieure, et le même bonus ne peut pas être utilisé pour plusieurs parties.

Sujets proposés

Voici une liste de sujets proposés qui donneront à votre article un bonus supplémentaire pour le sujet :

✔️  Utilisation d'ODBC et JDBC
✔️  Utilisation de DB-API
✔️  Utilisation de Dynamic SQL dynamique et de Embedded SQL
✔️  Génération de la documentation OpenAPI
✔️  Points de terminaison liés à l'authentification (à l'aide de SSO, OAuth et ZAuth)
✔️  Utilisation d'isc.rest pour développer l'API
✔️  Embedded Python dans l'interopérabilité (opérations, services, fonctions personnalisées)
✔️  Déploiements courants IKO
✔️  Adaptation du code C#, Java et Python existant à l'interopérabilité IRIS et IRIS à l'aide de passerelles de langage externes
✔️  GenAI, Vector Search, RAG
✔️  FHIR, EHR
✔️  Data Fabric, Data Lake, Data Entrepôt, maillage de données
✔️  Partage, mise en miroir

Besoin d'inspiration ou d'un exemple ? Découvrez les #Bonnes pratiques.

Il est temps de montrer vos talents d'écrivain !

🖋️ Écrivez. Partagez. Brillez.


Remarque importante : la livraison et les prix varient selon les pays et peuvent ne pas être possibles pour certains d'entre eux. Une liste des pays soumis à des restrictions peut être demandée à @Liubka.Zelenskai

Discussão (0)1
Entre ou crie uma conta para continuar
Artigo
· Fev. 12 2min de leitura

第二十二章 P - R 开头的术语

第二十二章 P - R 开头的术语

程序员模式 (programmer mode)

系统

所有程序开发活动进行的模式。在程序员模式下,你从 IRIS 提示符启动程序,并且每个运行的程序结束后提示符会重新出现。程序员模式涵盖了 IRIS 环境及其所有可调用的程序,包括 SQL 开发环境。在程序员模式下,你可以创建用户随后在应用程序模式下运行的应用程序。

项目 (project)

系统

用户定义的相关源文档(如例程或类定义)列表。Visual Studio Code 使用项目来帮助组织应用程序开发。

属性 (property)

对象(Objects)

表示与类相关联的特定特性的一个数据元素。该类的每个对象包含属性的字面值或指向表示数据的另一个对象的引用。一个类的所有属性共同表示其状态。

属性排序 (property collation)

对象(Objects)

Discussão (0)1
Entre ou crie uma conta para continuar