検索

Artículo
· 58 mins atrás Lectura de 4 min

ミラー環境でECPを行う場合の設定方法と注意点

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

こちらのトピックでは、ミラー環境でECPを行う場合の設定方法注意すべき点について、ご案内します。

【設定方法】

手順は以下になります。


(1) 両方のフェイルオーバーメンバおよび任意の DR 非同期メンバで、ECPを有効にします

(2) ECP アプリケーションサーバ(ECPクライアント)で、ECPの設定を行います

(3) ECP アプリケーションサーバ(ECPクライアント)で、リモートデータベースの作成を行います

(4) 動作確認&リダイレクトのテストを行います


今回作成するECP構成は、ドキュメントにある以下のイメージの赤丸のインスタンスによる構成になります。

 

  A:プライマリ・
フェイルオーバーメンバ
B:バックアップ・
フェイルオーバーメンバ
C:DR非同期 ECPアプリケーションサーバ
(クライアント)
ミラー名 TESTMIRROR TESTMIRROR TESTMIRROR  
ミラーメンバ名 MACHINEA MACHINEB MACHINEC  
IPアドレス 10.0.0.244 10.0.0.151 10.0.0.60 10.0.0.134


 

(1) 両方のフェイルオーバーメンバおよび任意の DR 非同期メンバで、ECPを有効にします

A、B、Cすべてのインスタンスで、ECPを有効に設定します。

管理ポータル:
[システム管理] > [構成] > [接続性] > [ECP設定]

有効 をクリックし、ダイアログの「サービスを有効」にチェックをして保存

 


 

(2) ECP アプリケーションサーバ(イメージの青丸)で、ECPの設定を行います

ECP アプリケーション・サーバで、[システム管理] > [構成] > [接続性] > [ECP設定] ページに移動し、[データサーバ] をクリックします

 

表示されたダイアログで、以下の情報を入力して保存します。

a. [サーバ名] — プライマリ・フェイルオーバー・メンバのインスタンス名を入力します。

b. [ホスト DNS 名または IP アドレス] — プライマリ・フェイルオーバー・メンバの IP アドレスまたはホスト DNS 名を入力します。(ミラー VIP を入力しないでください。詳細は、"ミラー仮想 IP (VIP) の構成"を参照してください。)

c. [IP ポート] — [ホスト DNS 名または IP アドレス] テキスト・ボックスで指定した IP アドレスまたはホスト DNS 名を持つプライマリ・フェイルオーバー・メンバのスーパーサーバ・ポート番号を入力します。

d. [ミラー接続] — このチェック・ボックスのチェックを付けます。

 


(3) ECP アプリケーションサーバで、リモートデータベースの作成を行います

[システム管理] > [構成] > [システム構成] > [リモートデータベース] より、[新規リモートデータベース作成] を選択して [データベースウィザード] を開始します。

 


(4) 動作確認&リダイレクトのテストを行います

現在のプライマリを適切にシャットダウンすることによってリダイレクト・テストを実施し、アプリケーション・サーバが目的のミラー・メンバに接続していることを確認します


【注意点】

ECPデータサーバ上のデータベースがミラーデータベースかどうか、非ミラーデータベースの場合はジャーナルされているかどうかで、リモートデータベースの 読み取り/書き込み(Read/Wrire)マウント状態が変わります。

*データ・サーバがフェイルオーバー・メンバの場合、

ミラーリングされているデータベースは、
 読み取り/書き込みとして追加され、

ミラーリングされていないデータベースは、
 ジャーナリングされている場合は読み取り専用
 ジャーナリングされていない場合は読み取り/書き込みとして追加されます。

*(通常のECP構成をポータルから設定する場合にはECPアプリケーションサーバがDR非同期に接続するように構成するオプションはありませんが)
 ECPデータ・サーバが DR 非同期メンバの場合

すべてのデータベースが読み取り専用として追加されます。
 

※データベースの読み取り/書き込みは、ECPアプリケーションサーバで、データベースをマウントしたタイミングで決定されます

詳細は以下のドキュメントをご覧ください。
ミラーへのアプリケーション・サーバ接続の構成

Comentarios (0)0
Inicie sesión o regístrese para continuar
Artículo
· 3 hr atrás Lectura de 1 min

ジャーナルファイルのリストア互換性について

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

バージョン2025.1以降では、ジャーナルファイルを作成したインスタンスと同じバージョン、またはそれ以降のバージョンへのジャーナルファイルのリストアは保証されていますが、2025.1以降で作成されたジャーナルファイルを2024.1以前のインスタンスにリストアできません。

ドキュメント:ジャーナル・リストアの互換性 (アップグレード関連)

2025.1以降のインスタンスのデータを、2024.1以前にリストアしたい場合、時間がかかる方法となりますが、2025.1以降のバージョンから対象グローバル変数をエクスポートし、2024.1以前のバージョンにインポートする方法を利用できます。

InterSystems 製品のミラーリングについては、全メンバー(プライマリ/バックアップ/非同期)で同一バージョンを使用する必要があります。

ミラーリングは、ジャーナルファイルのリストアを内部的に利用しているため、バージョン2025.1へアップグレードした場合、全メンバーのバージョンが2025.1以降である必要があります。ご注意ください。

ご参考「InterSystems IRIS インスタンスの互換性

Comentarios (0)1
Inicie sesión o regístrese para continuar
Artículo
· 5 hr atrás Lectura de 2 min

Conectar ao servidor SQL via Autenticação do Windows

Eu estava enfrentando o mesmo problema que o Jerry enfrentou ao conectar o IRIS ao SQL Server. Minha conexão ODBC está configurada para autenticar via autenticação do Windows.

Configure IRIS ODBC connection with Windows authentication using a
 

Como eu resolvi isso?

Causa raiz

  • O DSN do SQL Server estava configurado para Autenticação Integrada do Windows.
  • O IRIS abre a conexão ODBC via irisdb.exe, que é executado sob a conta de logon dos serviços do IRIS no Windows.
  • Meus serviços do IRIS estavam rodando como LocalSystem, então o SQL via a conta da máquina <ORGNAME>\<ASSETID>$. O SQL não tinha login para essa identidade → 18456 / 28000 “Login failed for user ‘…$’”.

Eu alterei ambos os serviços do IRIS para rodarem com uma identidade de domínio que o SQL Server confia: <WINDOWSACCOUNTUSERNAME> = <Orgname>\<Username>.

Comandos usados (CMD elevado):

"C:\InterSystems\IRIS\bin\iris" stop <instance> quietly "C:\InterSystems\IRIS\bin\IRISinstall.exe" setserviceusername <instance> "<YOURWINDOWSACCOUNTUSERNAME>" "<password>" "C:\InterSystems\IRIS\bin\iris" start <instance>

 

Essa utilidade atualiza:

  • InterSystems IRIS Controller para <instance>
  • InterSystems IRIS para <instance>
    …adiciona a conta aos grupos IRISServices eIRIS_Instance_<instance>, e concede os direitos NTFS necessários.

 

Por favor, me avise se houver uma forma melhor de fazer isso.

Comentarios (0)1
Inicie sesión o regístrese para continuar
Artículo
· 5 hr atrás Lectura de 3 min

Questionário Facilitado – com IRIS, FHIR SQL Builder e Pesquisa Vetorial

No cenário atual de dados de saúde, o FHIR se tornou o padrão para a troca de dados clínicos estruturados. No entanto, embora o FHIR se destaque em interoperabilidade, seu formato JSON torna a análise desafiadora — incluindo os FHIR QuestionnaireResponse.

Este projeto demonstra como transformar dados de FHIR QuestionnaireResponse de JSON aninhado em tabelas SQL relacionais e embeddings vetoriais. Ao integrar o InterSystems IRIS FHIR SQL Builder e Vector Search, desbloqueamos o significado semântico por trás das respostas dos pacientes.

Três Etapas para Construí-lo

1. Projetar e Coletar o Questionário

Comece projetando um questionário FHIR usando o National Library of Medicine(NLM) Form Builder. Esta ferramenta ajuda a criar formulários clínicos estruturados que seguem os padrões FHIR. Neste projeto, 100 respostas sintéticas de pacientes foram coletadas e salvas como arquivo JSON FHIR QuestionnaireResponse, prontas para serem importadas em um servidor FHIR.

 

2. Transformar e Consultar os Dados do Questionário via SQL

Após carregar os recursos FHIR QuestionnaireResponse no servidor, use o InterSystems IRIS FHIR SQL Builder para criar automaticamente tabelas SQL relacionais. Isso “achata” a estrutura JSON aninhada, permitindo uma análise fácil dos dados do questionário com SQL padrão — tudo configurável em apenas alguns cliques.

  • Consulte o README para a configuração completa do FHIR SQL Builder.
  • A tabela SQL gerada a partir dos dados do QuestionnaireResponse está pronta para consultas e análises.

 

3. Adicione Vector Search para Compreensão Semântica

Finalmente, integre o IRIS Vector Search para adicionar inteligência semântica sobre os dados estruturados do questionário. Isso permite que os usuários busquem e interajam com as respostas do questionário com base no significado e contexto, em vez de palavras exatas, transformando os dados em uma ferramenta mais intuitiva e inteligente.

       Exemplos:

  • Uma busca por “medicação para diabetes” recupera respostas que mencionam medicamentos como metformina, insulina glargina ou acarbose — mesmo que a frase exata não esteja presente. 
  • Quando um usuário pergunta: “Quais pacientes têm histórico familiar de doenças cardíacas e tomam medicação para reduzir o colesterol?”, o sistema conecta semanticamente os dados relacionados — associando condições cardíacas a medicamentos como propranolol, espironolactona ou atorvastatina — e produz um resumo conciso dos pacientes em risco.

Para explorar o fluxo completo de trabalho e a implementação do código, visite Open Exchange.

Principais Conclusões

Por meio de três etapas principais — projetar questionários com o NLM Form Builder, transformá-los em tabelas SQL e aprimorá-los com pesquisa vetorial — esse fluxo de trabalho transforma os dados de FHIR QuestionnaireResponse em uma ferramenta poderosa para compreensão clínica e suporte à decisão.

 

Referências

1. National Library of Medicine (NLM) Form Builder 

2. InterSystems IRIS For Health FHIR SQL Builder 

3. InterSystems IRIS Vector Search 

4. https://openexchange.intersystems.com/package/iris-fhirsqlbuilder

5. https://www.youtube.com/watch?v=ewxyh2XNLv0

Comentarios (0)1
Inicie sesión o regístrese para continuar
Artículo
· 6 hr atrás Lectura de 4 min

Criando FHIR responses com a produção de Interoperabilidade do IRIS

Quando criamos um repositório FHIR no IRIS, temos um endpoint para acessar informações, criar novos recursos, etc. Mas existem alguns recursos no FHIR que provavelmente não teremos em nosso repositório, por exemplo, o recurso Binary (esse recurso retorna um documento, como um PDF, por exemplo).

Criei um exemplo em que, quando um recurso Binary é solicitado, o endpoint FHIR retorna uma resposta como se ele existisse no repositório.

Antes de tudo, precisamos de um Namespace e de um endpoint FHIR. Depois disso, precisamos configurar uma produção de Interoperabilidade que será conectada ao endpoint FHIR. Essa produção deve ter estes itens:

  • Business Operations:
    • HS.Util.Trace.Operations (na verdade, isso é opcional, mas pode ser muito útil)
    • HS.FHIRServer.Interop.Operation, com a propriedade TraceOperations definida como *FULL*
  • Business Service:
    • HS.FHIRServer.Interop.Service, com a propriedade TraceOperations definida como *FULL* e o Target Config Name definido como o nome do HS.FHIRServer.Interop.Operation

Isso é como a produção irá se parecer:

Após criar essa produção, precisamos conectá-la ao endpoint FHIR. Então, edite o endpoint FHIR e defina o parâmetro Service Config Name com o nome do Business Service:

Agora, se começarmos a enviar requisições para o repositório FHIR, veremos todos os rastreamentos no Message Viewer:

Agora podemos ter um Business Process para controlar o que fazer com caminhos específicos.

Neste exemplo, temos um Business Process que recebe todas as requisições (agora o Business Service está conectado a esse Business Process, em vez do Business Operation) e 2 novos Business Operations que executam outras ações que serão explicadas depois:

Vamos das uma olhada no Business Process FHIRRouter:

Se olharmos com atenção, veremos que, se o RequestPath contiver "Binary/", então faremos algo com essa requisição: gerar nossa resposta Binary personalizada. Caso contrário, enviaremos a requisição diretamente para o repositório FHIR.

Vamos dar uma olhada na sequência chamada "Generate Binary":

Antes de tudo, criamos uma nova instância de HS.FHIRServer.Interop.Response. E obtemos o ID do documento a partir do Request Path. Como? Toda vez que alguém quiser um recurso Binary, ele deve ser solicitado com o ID do documento no caminho da URL, algo como: ..../fhir/r4/Binary/XXXXX. Então extraímos o ID do documento do Request Path com esta expressão:

$Replace(request.Request.RequestPath,"Binary/","")

(Não é muito elegante, mas funciona).

Se tivermos um ID de documento, então fazemos uma chamada a um Business Operation chamado Find para localizar o nome do arquivo associado a esse ID de documento:

 

Na verdade, esse Business Operation Find sempre retorna o mesmo nome de arquivo:

É um exemplo do que podemos fazer.

Se tivermos um nome de arquivo, então chamamos outro Business Operation chamado File para obter o conteúdo desse arquivo, codificado em base64:

E, finalmente, podemos retornar 2 tipos de respostas:

  • Se não tivermos o conteúdo do arquivo (porque não temos um ID de documento ou não encontramos o nome do arquivo ou conteúdo associado), retornamos uma resposta 404, com esta resposta personalizada:
 set json = {
    "resourceType": "OperationOutcome",
    "issue": [
        {
            "severity": "error",
            "code": "not-found",
            "diagnostics": "<HSFHIRErr>ResourceNotFound",
            "details": {
                "text": "No resource with type 'Binary'"
            }
        }
    ]
 }
 set json.issue.%Get(0).details.text = json.issue.%Get(0).details.text_" and id '"_context.docId_"'"
 set qs = ##class(HS.SDA3.QuickStream).%New()
 do qs.Write(json.%ToJSON())
 set response.QuickStreamId = qs.%Id()
 set response.ContentType = "application/fhir+json"
 set response.CharSet = "UTF-8"
  • Se tivermos o conteúdo do arquivo, então retornamos uma resposta 200 com esta resposta personalizada:
 set json = {
  "resourceType": "Binary",
  "id": "",
  "contentType": "application/pdf",
  "securityContext": {
    "reference": "DocumentReference/"
  },
  "data": ""
 }
 set json.id = context.docId
 set json.securityContext.reference = json.securityContext.reference_json.id
 set json.data = context.content.Read(context.content.Size)
 
 set qs = ##class(HS.SDA3.QuickStream).%New()
 do qs.Write(json.%ToJSON())
 set response.QuickStreamId = qs.%Id()
 set response.ContentType = "application/fhir+json"
 set response.CharSet = "UTF-8"

 

O ponto-chave aqui é criar um HS.SDA3.QuickStream, que contém o objeto JSON. E adicionar esse QuickStream à resposta.

E agora, se testarmos nosso endpoint, ao solicitar um documento Binary, veremos a resposta:

E se solicitarmos um documento Binary que não existe (você pode testar passando nenhum ID de documento), veremos a resposta 404:

Em resumo, conectando nosso endpoint FHIR com a interoperabilidade, podemos fazer o que quisermos, aproveitando todas as capacidades do InterSystems IRIS.

Comentarios (0)1
Inicie sesión o regístrese para continuar