検索

お知らせ
· 2025年3月12日

[Video] A better way of buidling index for IRIS

Hey Community,

Enjoy the new video on InterSystems Developers YouTube:

⏯ A better way of buidling index for IRIS

In the recent version, IRIS provides an easy way to add a new index with the combination of CREATE INDEX with the DEFER option and BUILD INDEX. And IRIS provides an easy way to confirm whether or not the index is selectable.
This video will show you how to use it.

🗣  Presenter: @Mihoko Iijima, Training Sales Engineer, InterSystems

Enjoy watching, and look for more videos! 👍

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

OMOP Odyssey - BroadSea (The Sirens)

BroadSea - Core OHDSI Walkthrough with InterSystems OMOP

So the DatabaseConnector now supports InterSystems IRIS and the Journey thus far now brings us to the OHDSI ecosystem of powerful open source  apps , targeted at deriving value from large scale analytics from Healthcare data.  A good starting point is the OHDSI/Broadsea solution, which puts core OHDSI technologies like Atlas, R and Hades to work for you locally or on a dedicated instance of your choice.  Here we will walk through the Broadsea solution and how to get to it to work with the InterSystems OMOP Cloud Service.  Being able to carry out these steps on the OHDSI/BroadSea repository is proof of the step forward to inclusion of the `iris` dialect in OHDSI Tools.
 

There are efforts on the way to make this more seamless from ISC ( https://github.com/isc-krakshith/InterSystems-Broadsea ), but in the spirit of impatience and expiring trials, this walkthrough can get you to the same spot.

Clone

First up, clone the github.com/OHDSI/Broadsea  repository locally, review the requirements.

OHDSI/Broadsea from github.com

git clone https://github.com/OHDSI/Broadsea.git
cd Broadsea

 

ℹ Attention Windows Users

The containers in Broadsea have issues with CTRL characters in the secrets file, to alleviate this issue, ensure after cloning the following:

git add --renormalize .
git config --global core.autocrlf false
dos2unix secrets/webapi/

 

Modify

The repo is very accommodating to customization, but there were some things either I had to work around to get to the point (I did mention I was impatient).

In the `.env` file, we need to use the latest build from github for the new IRIS inclusion in the webapi, to do this, change the following environment variable as shown.  

- WEBAPI_GITHUB_URL="https://github.com/OHDSI/WebAPI.git#rc-2.13.0"
+ WEBAPI_GITHUB_URL="https://github.com/OHDSI/WebAPI.git"

Next, we need to set our sights on compose/ohdsi-webapi.yml in the repo and make a couple of changes.

Add the environment variable for spring to include the classpath and SSLConfig.properties like below in JAVA_OPTS

    environment:
      + JAVA_OPTS: "-Dcom.intersystems.SSLConfigFile=/tmp/SSLConfig.properties"
      CLASSPATH: ":/var/lib/ohdsi/webapi/lib/additional/broadsea_mounted.jar"
      DATASOURCE_DRIVERCLASSNAME: org.postgresql.Driver
      DATASOURCE_URL: ${WEBAPI_DATASOURCE_URL}

I also set the container to be privileged and set read_only to false to make my life a little easier in post configuration.


Get InterSystems JDBC Driver

The webapi profile has a built in mechanism for including a third party driver by downloading it to `jdbc/none.jar` in the repository.  So from the root of the repo, run the following to get the latest iris driver from maven.  With this bit of Harry Potter wizardry from @Stefan Wittmann you can always get the latest.

cat << 'EOF' > pom.xml
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.sandbox</groupId>
  <artifactId>pull-artifacts</artifactId>
  <version>1</version>
  <dependencies>
    <dependency>
        <groupId>com.intersystems</groupId>
        <artifactId>intersystems-jdbc</artifactId>
        <version>[3.10.3,4.0.0)</version>
    </dependency>
  </dependencies>
</project>
EOF
mvn dependency:copy-dependencies -DoutputDirectory=.
cp intersystems-jdbc-3.10.3.jar jdbc/none.jar

Provision

We are good to provision Broadsea by using the following docker compose profile string.  The thing to note here is that we are using the `webapi-from-git` profile as the ohdsi/webapi container has not been built in a year and will not have IRIS goodness baked in. 

To launch BroadSea, execute the following compose profiles in the repo.

docker-compose --env-file .env --profile webapi-from-git --profile content --profile hades --profile atlasdb --profile atlas-from-image up -d

Break

Take a break and let the containers come up for the solution.


Now, navigate to your localhost through the traefik router, and you should see your BroadSea Applications launch portal...

Next lets put IRIS inside of Hades and Atlas so we can join the OHDSI party.

Post Configuration

Now that Broadsea is up and running, lets add a connection to InterSystems OMOP Cloud service and take it for a spin.  Ill break up the pieces here and include the post configuration script in a teaser at the end for clarity on what needs to be done and what its doing.

Grab the details from your InterSystems OMOP Deployment and set those as variables; this includes the endpoint url, user/pass, description, and certificate.

export IRIS_USER="SQLAdmin"
export IRIS_PASS="REDACTED"
export IRIS_JDBC="jdbc:IRIS://k8s-0a6bc2ca-a2668ebb-2be01ed66b-df29055c4af0630d.elb.us-east-2.amazonaws.com:443/USER/:::true"
export IRIS_DESCRIPTION="InterSystems OMOP Stage"
cat << 'EOF' > certificateSQLaaS.pem
-----BEGIN CERTIFICATE-----
HBLABLAHBLAHBLA
-----END CERTIFICATE-----
EOF

The next block will add the source to AtlasDB for use with Atlas.

cat << EOF > 200_populate_iris_source_daimon.sql
INSERT INTO webapi.source( source_id, source_name, source_key, source_connection, source_dialect, username, password)
VALUES (2, '$IRIS_DESCRIPTION', 'IRIS', '$IRIS_JDBC', 'iris', '$IRIS_USER', '$IRIS_PASS');
INSERT INTO webapi.source_daimon( source_daimon_id, source_id, daimon_type, table_qualifier, priority) VALUES (4, 2, 0, 'OMOPCDM54', 0);
INSERT INTO webapi.source_daimon( source_daimon_id, source_id, daimon_type, table_qualifier, priority) VALUES (5, 2, 1, 'OMOPCDM54', 10);
INSERT INTO webapi.source_daimon( source_daimon_id, source_id, daimon_type, table_qualifier, priority) VALUES (6, 2, 2, 'OMOPCDM54_RESULTS', 0);
EOF

docker cp 200_populate_iris_source_daimon.sql broadsea-atlasdb:/docker-entrypoint-initdb.d/200_populate_iris_source_daimon.sql
docker-compose exec broadsea-atlasdb psql -U postgres -f "/docker-entrypoint-initdb.d/200_populate_iris_source_daimon.sql"

The next steps here add the certificate to the Hades and land the appropriate SSLConfig.properties.

docker cp certificateSQLaaS.pem broadsea-hades:/home/ohdsi/
docker cp SSLConfigHades.properties broadsea-hades:/home/ohdsi/SSLConfig.properties

docker-compose exec broadsea-hades bash -c "/usr/bin/keytool -importcert -file /home/ohdsi/certificateSQLaaS.pem -keystore /home/ohdsi/keystore.jks -alias IRIScert -storepass changeit -noprompt"

Moving right along to post configuring the web api for TLS connectivity to our InterSystems OMOP deployment, execute the following to generate the keystore, and to hit the refresh api on the webapi container for the source to be activated.

docker exec ohdsi-webapi bash -c "keytool -importcert -file /tmp/certificateSQLaaS.pem -alias IRIScert2 -keystore /tmp/keystore.jks -storepass changeit -noprompt"
wget http://127.0.0.1/WebAPI/source/refresh/

Probably the most invasive post configuration step is the creation of two TLS/SSL dependent files inside of the container.  The previous instructions require the SSLProperties.config and manually paste the certiicate as well in the `/tmp` folder.

docker exec --user root -it ohdsi-webapi bash
cat > /tmp/certificateSQLaaS.pem
-----BEGIN CERTIFICATE-----
HBLABLAHBLAHBLA
-----END CERTIFICATE-----
<CTRL-D>

cat > /tmp/SSLConfig.properties
trustStore=/tmp/keystore.jks
trustStorePassword=changeit
<CTRL-D>

If you can get `docker cp` or a volume mount to work with this container, please let me know.
 

Finally, add the driver to Hades, navigate to Hades on http://127.0.0.1/hades and in RStudio, run updates.

This might fire up some fans on your system and take a little bit, but when you are all done, you should be able to get the driver via the DatabaseConnector package inside Hades using R Studio.

library(DatabaseConnector)
downloadJdbcDrivers("iris", pathToDriver = Sys.getenv("DATABASECONNECTOR_JAR_FOLDER"), method = "auto")

👣🔫 You will notice that we used OHDSI tools to get the IRIS driver, and for webapi we uploaded it manually through the use of compose services, and through Hades we used the DatabaseConnector package... this may differ versions for those components. If you want to stay in sync, you can skip using OHDSI DatabaseConnector tools for the driver and just cp it up instead so they match.  

docker cp intersystems-jdbc-3.10.3.jar broadsea-hades:/opt/hades/jdbc_drivers/

 

Smoke

Hades

Lets see if Hades can connect to our InterSystems OMOP deployment

cd <- DatabaseConnector::createConnectionDetails(dbms = "iris", connectionString = "jdbc:IRIS://k8s-0a6bc2ca-adb040ad-c7bf2ee7c6-e6b05ee242f76bf2.elb.us-east-1.amazonaws.com:443/USER/:::true", user = "SQLAdmin", port = "443", password = "REDACTED", pathToDriver = "./jars")
conn <- connect(cd)
querySql(conn, "SELECT TOP 3 * FROM OMOPCDM54.care_site")

boom.

Atlas

Next, lets go over to atlas and confirm we are talking to our InterSystems OMOP deployment at http://127.0.0.1.

Immediately, head to the configuration section, and set the vocabulary and record counts to defaults.

Next, select the "InterSystems OMOP Stage" option in the Profiles section and select a known practitioner id.

boom.

Head to the search screen and search for something medical, here I am searching the InterSystems OMOP deployment for "lung"

boom.

 
postconfiguration.sh

Welcome to BroadSea against the InterSystems OMOP server and the OHDSI Community!

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
InterSystems公式
· 2025年3月12日

Programa de Acesso Antecipado para novo Recurso de Particionamento de Tabela

Olá, 

Estamos lançando um Programa de Acesso Antecipado para um futuro recurso de Particionamento de Tabela que ajudará os clientes do IRIS a gerenciar tabelas muito grandes e distribuir dados de linha e índices associados entre bancos de dados e camadas de armazenamento.O particionamento de tabelas atinge profundamente o cerne do gerenciamento de dados relacionais do IRIS, por isso queremos ter certeza de que faremos tudo certo trabalhando com alguns clientes engajados que podem fornecer feedback sobre os resultados iniciais e fazer ajustes conforme necessário.

Se você estiver trabalhando com conjuntos de dados relacionais muito grandes, buscando mais eficiência operacional e disposto a arregaçar as mangas para testar o novo recurso, registre-se em https://www.intersystems.com/early-access-program/. Você receberá um e-mail de boas-vindas que o direcionará ao portal de avaliação, onde encontrará uma licença de desenvolvimento temporária, kits recentes e imagens de contêiner que contêm o novo recurso, além de um tutorial para começar.

Pretendemos entrar em contato com os participantes registrados periodicamente quando tivermos atualizações relevantes para compartilhar e, claro, estamos disponíveis para ajudar diretamente em suas explorações, conforme necessário.

Obrigado,
benjamin

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

Swagger API para FHIR com InterSystems IRIS For Health

Olá Colegas! 

Muitas vezes, durante o desenvolvimento de um frontend de aplicação ou qualquer outra comunicação com API REST, vale a pena usar o Swagger UI -  uma IU de teste para aplicações REST que segue a especificação Open API 2.0. Geralmente, é bem trabalhoso, pois permite testes manuais rápidos em relação à API REST, suas respostas e os dados contidos nela.

Recentemente eu introduzi o suporte ao Swagger para o modelo InterSystems IRIS FHIR para API FHIR R4: 

 

Como fazê-lo funcionar. 

Certifique-se de ter o docker instalado. 

Clone o repositorio:

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

e inicie:

docker compose up -d

Uma vez que tudo esteja montado abra o swagger em:

http://localhost:32783/swagger-ui/index.html

Ou se você puxá-lo no VS Code, você pode abrir através do menu InterSystems:

To get it tested for example proceed to Patient entry and request for the patient id=3:

Espero que gostem! 

Comentários, feedback e solicitações de pull são muito apreciados!

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
質問
· 2025年3月12日

Convert HTML to PDF

Hi Guys,

We currently use wkhtmltopdf to convert our html based Zen page reports to PDF using in windows, but because we are now moving to IRIS running in a container we can use that anymore and I've been told that IRIS does have some kind of tool kit or utility that can do similar job and I'm not talking about  GenerateReport() methond in zen reports?

 

Thanks 

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