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.
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.
Keep the default settings and finish the installation.
Verify installation:
git --version
macOS
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.
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:
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:
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.
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.
Open VS Code.
Go to Extensions (Ctrl + Shift + X or Cmd + Shift + X on macOS).
Search for "REST Client". There are several REST Clients, please install this one:
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:
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:
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:
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 043m
iris-data-0-01/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:
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