发布新帖

查找

公告
· 四月 15

[Vídeo] Introdução à Plataforma OMOP

Olá Comunidade,

Aproveite o novo vídeo no canal InterSystems Developers YouTube:

⏯ Introdução à Plataforma OMOP 

Este vídeo apresenta a Plataforma OMOP, um novo serviço da InterSystems desenvolvido para auxiliar pesquisadores na transformação de dados de EHR para o formato OMOP. A plataforma conta com um pipeline de transformação de FHIR para OMOP e um repositório OMOP hospedado no Intersystems IRIS Cloud SQL. Ela automatiza o mapeamento de dados, o mapeamento de terminologia e o relatório de erros, processando dados FHIR em massa a partir de um bucket S3. A plataforma simplifica a conversão e o acesso a dados sem exigir experiência em programação.

🗣  Apresentador: @Qi Li, Physician Executive, InterSystems

Divirta-se assistindo e aguarde mais vídeos! 👍

讨论 (0)1
登录或注册以继续
文章
· 四月 15 阅读大约需 6 分钟

FHIR environment setup guide

I know that people who are completely new to VS Code, Git, Docker, FHIR, and other tools can sometimes struggle with setting up the environment. So I decided to write an article that walks through the entire setup process step by step to make it easier to get started.

I’d really appreciate it if you could leave a comment at the end - let me know if the instructions were clear, if anything was missing, or if there’s anything else you'd find helpful.

The setup includes:

✅ VS Code – Code editor
✅ Git – Version control system
✅ Docker – Runs an instance of IRIS for Health Community
✅ VS Code REST Client Extension – For running FHIR API queries
✅ Python – For writing FHIR-based scripts
✅ Jupyter Notebooks – For AI and FHIR assignments

Before you begin: Ensure you have administrator privileges on your system.

In addition to reading the guide, you can also follow the steps in the videos:

For Windows

For macOS

There's a poll at the end of the article, please share your progress. Your feedback is highly appreciated.

So, let's begin!

1. Install Visual Studio Code (VS Code)

VS Code will be the primary editor for development.

Windows & macOS

  1. Go to the VS Code download page: https://code.visualstudio.com/
  2. Download the installer for your OS:
    • Windows: .exe file
    • macOS: .dmg file
  3. Run the installer and follow the prompts.
  4. (Windows only): During installation, check the box for "Add to PATH".
  5. Verify installation:
  • Open a terminal (Command Prompt, PowerShell, or macOS Terminal)
  • Run:
code --version
  • You should see the version number.

2. Install Git

Git is required for version control, cloning, and managing code repositories.

Windows

  1. Download the latest version from: https://git-scm.com/downloads
  2. Run the installer:
    • Choose "Use Git from the Windows Command Prompt".
    • Keep the default settings and finish the installation.
  3. Verify installation:
git --version

macOS

  1. Open Terminal and run:
git --version

If Git is not installed, macOS will prompt you to install Command Line Tools. Follow the instructions.

3. Install Docker

Docker is required to run InterSystems IRIS for Health Community.

Windows

1.    Download Docker Desktop from: https://www.docker.com/products/docker-desktop
2.    Run the installer and follow the setup.
3.    Restart your computer after installation.
4.    Enable WSL 2 Backend (if prompted).
5.    Verify installation

Note well: Installing Docker requires admin privileges on your machine and at least one restart.

macOS

1.    Download Docker Desktop for Mac from: https://www.docker.com/products/docker-desktop
2.    Install it by dragging the Docker.app to the Applications folder.
3.    Open Docker from the Applications menu.

To ensure the Docker Desktop engine is running on Windows or macOS, follow these steps:

Start Docker Desktop

Windows: Open Docker Desktop from the Start menu. The Docker whale icon should appear in your system tray.

Mac: Launch Docker Desktop from the Applications folder. You’ll see the Docker whale icon in the menu bar once it’s running.

Wait for Initialization

Once you launch Docker Desktop, the engine may take a moment to start. Look for a status message indicating that Docker is “running” or “started.”

Verify via Terminal/Command Prompt:

Open a terminal (or Command Prompt/PowerShell on Windows) and run:

docker --version

or

docker info

Troubleshooting

If the engine isn’t running, try restarting Docker Desktop or check for any error messages in the Docker Desktop UI. Also, ensure your system meets Docker Desktop’s requirements. You may see confusing error messages that reference pipes in you try to build a Docker image without Docker desktop running.

4. Building the IRIS for Health image and Running It using Docker

Before we can start a Docker container running IRIS for Health Community (which includes our FHIR server), we must build it.

  1. Clone the FHIR repository to a convenient directory on your file system. Open a terminal in VS code and clone this repository with the following command:
    git clone https://github.com/pjamiesointersystems/Dockerfhir.git
     
  2. Navigate to that directory and open the folder in VS Code. Follow the directions in the readme file to build and run the container. One critical step is ensuring the base repository is available in your Docker store. You can do this through the command at the VS Code terminal:
    docker pull containers.intersystems.com/intersystems/irishealth-community:latest-em
    You should see confirmation after a few minutes.
  3. Navigate to the directory in VS Code where you see the file docker-compose.yaml and then issue the command:
    docker-compose build 
    This will launch the build process, which may take as long as 10 minutes, during which time a complete FHIR repository is built and loaded with sample patients. 
  4. After the build process is complete, launch the container with the command
    docker-compose up -d
    followed by
    docker ps
    You should see a container named **iris-fhir** running. If the container fails to start, check the logs:
    docker logs iris-fhir
     

5. Install VS Code REST Client Extension

This extension allows you to send FHIR API requests from VS Code.

  1. Open VS Code.
  2. Go to Extensions (Ctrl + Shift + X or Cmd + Shift + X on macOS).
  3. Search for "REST Client". There are several REST Clients, please install this one:
  4. Click Install.

6. Install Python

Python is required for FHIR-related programming tasks.

Windows

1.    Download Python from: https://www.python.org/downloads/
2.    Run the installer and check the box for "Add Python to PATH". You will need administrative credentials to make modifications to the Path
3.    Complete the installation.
4.    Verify installation:

python --version

macOS

  1. Open Terminal and install Python via Homebrew:
    Brew install python
    If you don't have Homebrew, install it first:
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
     
  2. Verify installation:
python3 --version

7. Install Jupyter Notebooks

Jupyter Notebooks are used for AI and FHIR, and FHIR SQL  assignments.

Windows & macOS

  1. Open a terminal (Command Prompt, PowerShell, or macOS Terminal).
  2. Install Jupyter using pip:
    pip install jupyter
    jupyter --version
     
  3. Run Jupyter Notebook:
jupyter notebook

This will open Jupyter in your web browser.

8.  Validation

Run your container by navigating to your docker compose file in the shell. Execute the command 

docker compose up -d
docker ps

Access the IRIS Management Portal:

Username: _SYSTEM
Password: ISCDEMO

Access the FHIR API:

Final Checks

Run these commands to verify all installations:

code --version       # VS Code
git --version        # Git
docker --version     # Docker
python --version     # Python
jupyter --version    # Jupyter

If everything works, you've successfully installed all the software above.

Troubleshooting

Issue Solution
"Command not found" for any tool Ensure it's added to PATH (reinstall if needed).
Docker not running on Windows Restart Docker Desktop and ensure WSL 2 backend is enabled.
IRIS container fails to start Run docker logs iris-fhir to check errors.
Can't access FHIR API  Ensure the container is running (docker ps).

Thank you for your time. I look forward to reading your comments!

2 条新评论
讨论 (2)3
登录或注册以继续
文章
· 四月 15 阅读大约需 4 分钟

When to account for useIrisFsGroup in your IKO Deployments

If you look at the values.yaml of the IKO's Helm chart you'll find:

useIrisFsGroup: false 

Let's break down what it is and in what situations you may want to set it to true.

FsGroup refers to the file system group.

By default, Kubernetes volumes are owned by root, but we need IRIS to own its files (IRIS in containers is installed under irisowner user). To get around this we employ one of two methods:

1) initContainers

The initContainers run before app containers (like IRIS) in a pod. They generally set up the environment for the application and then run to completion/terminate. The initContainer runs as root before IRIS and executes:

chown irisowner:irisowner /irissys/*

The SecurityContext is by default set to:

RunAsUser: 51773
RunAsGroup: 51773
RunAsNonRoot: true

for the pod. And we see that 51773 is is the user and group id for irisowner:

$ id
uid=51773(irisowner) gid=51773(irisowner) groups=51773(irisowner)

2) Mount volumes with a given group ownership

Some environments can restrict any containers from running as root, for example via Security Context Constraints in OpenShift. In this case we cannot even run an initContainer as root and will need to have the volumes given the correct file system ownership at mount time. To do so, deploy the InterSystems Kubernetes Operator with 

useIrisFsGroup: true 

in the /chart/iris-operator/values.yaml file.

Now your pods will deploy without initContainers.

A caveat, if you wish to set up sidecars then an extra step is required. You cannot use the regular Apache/NGINX sidecar. You will run into this problem:

>> kubectl get pods
NAME                                              READY   STATUS    RESTARTS      AGE
intersystems-iris-operator-amd-76b75f6b48-7lnw2   1/1     Running   0             43m
iris-data-0-0                                     1/2     Error     2 (22s ago)   2m

which will turn into a CrashLoopBackOff. A deeper look shows us that when the regular Apache/NGINX web gateway sidecar is present, the useIrisFsGroup is not taken into consideration. This is because these Apache/NGINX containers, in this case the sidecar, run as root. IRIS does not run as root and is unable to access its directories, causing our issue.

irisowner@iris-data-0-0:/irissys$ ls -l
total 16
drwxrwxrwx 3 root root  107 Mar 31 14:28 cpf
drwxr-xr-x 3 root root 4096 Mar 31 14:21 data
drwxr-xr-x 3 root root 4096 Mar 31 14:21 journal1
drwxr-xr-x 3 root root 4096 Mar 31 14:21 journal2
drwxrwxrwt 3 root root  100 Mar 31 14:28 key
drwxr-xr-x 3 root root 4096 Mar 31 14:21 wij

IRIS fails with the error:

[ERROR] Command "iris start IRIS quietly" exited with status 256
03/31/25-14:41:06:870 (795) 3 [Utility.Event] Error while moving data directories ERROR #5001: Cannot create target: /irissys/data/IRIS/

Instead, we should use the non-root web gateway image (since we want all our images to run as non-root supposedly). This would imply a locked-down web gateway. We need to also make sure to add the security context to enforce this condition. We need to explicitly state:

securityContext:
  runAsUser: 51773
  runAsGroup: 51773
  runAsNonRoot: true
  fsGroup: 51773

in your data/compute nodes.

An example YAML for our IrisCluster CRD putting this all together can be seen below.

apiVersion: intersystems.com/v1alpha1
kind: IrisCluster
metadata:
  name: iris
spec:
  licenseKeySecret:
    name: iris-key-secret
  configSource:
    name: iris-cpf
  imagePullSecrets:
    - name: intersystems-pull-secret
  topology:
    data:
      image: containers.intersystems.com/intersystems/irishealth:2025.1
      compatibilityVersion: "2025.1.0"
      mirrored: true
      podTemplate:
        spec:
          resources:
            requests:
              memory: "4Gi"
              cpu: "2"
            limits:
              memory: "4Gi"
              cpu: "2"
          securityContext:
            runAsUser: 51773
            runAsGroup: 51773
            runAsNonRoot: true
            fsGroup: 51773
      webgateway:
        image: containers.intersystems.com/intersystems/webgateway-lockeddown:2025.1
        type: apache-lockeddown
        applicationPaths:
          - /csp/sys
          - /csp/user
          - /csp/broker
          - /api
          - /isc
          - /oauth2
          - /ui
          - /csp/healthshare
        loginSecret:
          name: iris-webgateway-secret
    webgateway:
      replicas: 1
      image: containers.intersystems.com/intersystems/webgateway-lockeddown:2025.1
      type: apache-lockeddown
      podTemplate:
        spec:
          resources:
            requests:
              memory: "2Gi"
              cpu: "1"
            limits:
              memory: "2Gi"
              cpu: "1"
      applicationPaths:
        - /csp/sys
        - /csp/user
        - /csp/broker
        - /api
        - /isc
        - /oauth2
        - /ui
        - /csp/healthshare
      alternativeServers: LoadBalancing
      loginSecret:
        name: iris-webgateway-secret
    arbiter:
      image: containers.intersystems.com/intersystems/arbiter:2025.1
  serviceTemplate:
    spec:
      type: ClusterIP

Happy YAMLing

讨论 (0)1
登录或注册以继续
问题
· 四月 15

Call Girl in Rishikesh

To book a Call Girl in Rishikesh, you must first contact the phone number or WhatsApp number provided in the call girl's profile. Once you initiate the conversation, you will have the opportunity to speak directly with the call girl, but you will need to share your personal details beforehand

讨论 (0)1
登录或注册以继续
讨论 (0)1
登录或注册以继续