検索

記事
· 2024年5月28日 6m read

FHIR アダプターを使ってレガシーシステムに FHIR サービスを提供 - リソースの投稿編

前回の記事では特定の HIS のデータベースに格納されたリソースを取得する方法を確認したので、今回は、HIS に、システムで受け取る FHIR リソースを起点とする新しいレコードを追加する方法を説明します。

FHIR の CRUD 操作

FHIR の主な機能の 1 つに、Rest API による CRUD 操作のサポートがあります。つまり、FHIR と連携するすべてのシステムには、GET、POST、PUT、および DELETE タイプの HTTP 呼び出しがサポートされていなければなりません。 この記事では、FHIR アダプターをインストールした際に自動的に構成されたエンドポイントへの POST 呼び出しを処理する方法を見てみましょう。

FHIR のリソースストレージ呼び出しに関する仕様を確認すると、呼び出しに使用する URL は、以下のフォーマットを使用している必要があります。

http(s)://server_url/{endpoint}/{Resource}

この記事の例では、セキュリティで保護された呼び出しは行わないため、以下のような URL になります。

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
記事
· 2024年5月27日 4m read

Linuxで SSL/TLS を使用して ODBC 接続を行う方法

こちら の記事では、LinuxでODBC接続を行う方法  をご紹介しました。

今回は、SSL/TLS を使用するように InterSystems IRIS スーパーサーバを構成 した IRIS に対して、ODBCで SSL/TLS 接続をする方法をご紹介します。

LinuxでODBC接続を行う方法 の記事で紹介している手順で、SSL/TLS なしでODBC接続できる環境を用意していることを前提にご説明します。

手順は以下のようになります。手順の詳細は、この後で説明します。


1.CA証明書を用意します

2.TLS 構成ファイルの設定を行います

3.TLS 構成ファイル odbcssl.ini を作成します

4.環境変数 ISC_SSLconfigurations で <path>/odbcssl.ini を指定します

5.IRISへのODBC接続確認をします



1.CA証明書を用意します

CA証明書に問題がないか証明書情報を確認します。
※ ***.***.***.*** :接続先IRISサーバのIPアドレス

# openssl s_client -connect ***.***.***.***:1972 -showcerts -CAfile /home/ec2-user/ca_certificate.crt < /dev/null
CONNECTED(00000003)
:
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
DONE

「Verify return code: 0 (ok)」が返れば、CA証明書に問題はありません。


2.TLS 構成ファイルの設定を行います

最初に、ODBCドライバインストール情報を確認します。

# odbcinst -j
unixODBC 2.3.9
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /etc/odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8


/etc/odbc.ini に、SSL/TLS 接続を定義する [SampleTLS] という名前の、以下のエントリを追加します。

# /etc/odbc.ini
[ODBC Data Sources]
SampleTLS = SampleTLS

[SampleTLS]
Description=InterSystems ODBC
Driver = /intersystems/iris/bin/libirisodbcur6435.so
Host=***.***.***.***
Namespace=USER
UID=_SYSTEM
Password=SYS
Port=1972
Protocol = TCP

Authentication Method = 2
Security Level = 10
SSL Server Name = SampleTLS


3.TLS 構成ファイル odbcssl.ini を作成します

# /etc/odbcssl.ini
[SampleTLS]
CAFile=/home/ec2-user/ca_certificate.crt
CertFile=
KeyFile=
Password=
KeyType=2
VerifyPeer=0
TLSMinVersion=16
TLSMaxVersion=32
CipherList=ALL:!aNULL:!eNULL:!EXP:!SSLv2


各項目の内容については、以下のドキュメントを参照してください。
TLS 構成ファイルの設定

また、設定ファイルのサンプルは、IRISクライアントインストールディレクトリ下の \dev\odbc\redist\ssl に、
 irisodbc.ini.template
 odbcssl.ini.template
​​​がありますので、参考になさってください。


4.環境変数 ISC_SSLconfigurations で <path>/odbcssl.ini を指定します

# export ISC_SSLconfigurations=/etc/odbcssl.ini

# echo $ISC_SSLconfigurations
/etc/odbcssl.ini

※すべてのユーザで使用できるようにする場合は、環境変数を永続化させます。

# vi /etc/profile

# ---- 以下を追加
export ISC_SSLconfigurations=/etc/odbcssl.ini

 

5.IRISへのODBC接続確認をします

%SuperServer の設定 をした接続先のIRISでは、「スーパーサーバSSL/TLSサポート」を「有効」または「必須」に設定してください。

# isql -v SampleTLS
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> SELECT count(*) FROM INFORMATION_SCHEMA.TABLES
+---------------------+
| Aggregate_1         |
+---------------------+
| 430                 |
+---------------------+
SQLRowCount returns 1
1 rows fetched
SQL>


※(2024/5/27現在)2024.1までのバージョンについて

Failed to load irisconnect executable!
のエラーとなる場合、irisconnect.so ファイルを /usr/lib64/ ディレクトリにリンクする必要があります。
クライアントインストールディレクトリのbin下に、irisconnect.so ファイルがありますので、そちらをリンクするようにしてください。

ln /intersystems/iris/bin/irisconnect.so /usr/lib64/irisconnect.so


詳細は以下のドキュメントをご覧ください。
UNIX® での ODBC データ・ソースの定義

ディスカッション (0)0
続けるにはログインするか新規登録を行ってください
記事
· 2024年5月27日 4m read

Unir bases de datos de excel con IRIS

¡Hola a todos! 

Llevo muchos años trabajando con Excel y, últimamente, lo he enfocado al tratamiento de bases de datos.

Realmente mi experiencia con Excel ha sido para labores financieras, no tanto analíticas de datos en sí, pero en un proyecto reciente he podido trabajar mucho con SQL y me he interesado un poco por el tema (no soy para nada una experta, ¡aviso!)

Me he preguntado cómo podría unir varios excels en uno para, por ejemplo, entregárselo al Data Análisis utilizando la tecnología InterSystems. He recopilado la información en un pequeño artículo. Espero que sea útil y por supuesto estoy abierta a correcciones. 

Vamos a utilizar InterSystems IRIS. Lo que buscaremos es leer los archivos Excel, procesarlos y por último fusionarlos. 

PRIMERO: Qué necesitaremos

Vale, para empezar, deberíamos tener instalado InterSystems IRIS.

Necesitaremos instalar las librerías de Python pandas y openpyxl para poder trabajar con Excel.

Importarte: hay que asegurarse de tener InterSystems Embedded Python habilitado en el entorno IRIS.

SEGUNDA: Lectura de un Excel con Python

Como InterSystems IRIS soporta la integración con Python, podemos leer/manipular archivos Excel. Por ejemplo podríamos usar este script: 

import pandas as pd

def merge_excels(file_paths, output_path):

    dataframes = []

    

    for file in file_paths:

        df = pd.read_excel(file)

        dataframes.append(df)

    

    merged_df = pd.concat(dataframes, ignore_index=True)

    merged_df.to_excel(output_path, index=False)

    

    return output_path

# Ejemplo de uso:

files = ['file1.xlsx', 'file2.xlsx', 'file3.xlsx']

output_file = 'merged_output.xlsx'

merge_excels(files, output_file)

Tercero: integración en IRIS

Vamos a ejecutar dicho script de Python desde InterSystems IRIS. Para ello recurriremos al soporte de Embedded Python. Lo que tendríamos que hacer es crear una class (o clase, vaya) en ObjectScript para llamar a dicho Script.

Class ExcelApp.ExcelMerger Extends %RegisteredObject

{

    ClassMethod MergeExcelFiles(filePaths As %String, outputFile As %String) As %String [ Language = python ]

    {

        import pandas as pd

        def merge_excels(file_paths, output_path):

            dataframes = []

            

            for file in file_paths:

                df = pd.read_excel(file)

                dataframes.append(df)

            

            merged_df = pd.concat(dataframes, ignore_index=True)

            merged_df.to_excel(output_path, index=False)

            

            return output_path

        files = filePaths.split(",")

        result = merge_excels(files, outputFile)

        return result

    }

}

CUARTO: fusionar desde IRIS

Por último, con el método MergeExcelFiles desde InterSystems IRIS podríamos fusionar los archivos Excel.

Set filePaths = "file1.xlsx,file2.xlsx,file3.xlsx"

Set outputFile = "merged_output.xlsx"

Set result = ##class(ExcelApp.ExcelMerger).MergeExcelFiles(filePaths, outputFile)

Write "Archivos fusionados y guardados en: ", result

EN DEFINITIVA:

No sé si esto sería lo más eficiente o útil, como digo, soy bastante novata en tratamiento de datos. Si conocéis algún tutorial para potenciar el uso de excel en este sentido es bien recibido.

Si sigo entrando en proyectos donde me pidan este aspecto seguiré indagando poco a poco ¡Gracias!

1 Comment
ディスカッション (1)2
続けるにはログインするか新規登録を行ってください
Job
· 2024年5月27日

MUMPS / CACHE developer

Hi,

I have over 36 years of experience developing solutions with MUMPS and Cache.    Additionally, I also develop in Python and HTML.

I have no experience in Vista or PSL, but I would be very happy to have the opportunity to learn it. I'm looking for a job opportunity.

Best,

Carlos

2 Comments
ディスカッション (2)1
続けるにはログインするか新規登録を行ってください
お知らせ
· 2024年5月27日

Desenvolvedor MUMPS / CACHE

Olá grupo.

Tenho mais de 36 anos de experiência desenvolvendo soluções com MUMPS e Cache.  Além disso também desenvolvo em Python e HTML. Estou procurando uma oportunidade de emprego. 

Muito Obrigado,

Carlos
 

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