# Integration with OpenELIS

**URL:** <https://community.open-emr.org/t/integration-with-openelis/21493>\
**Category:** Help Wanted\
**Tags:** question\
**Created:** [November 10, 2023, 6:17am UTC](https://community.open-emr.org/t/integration-with-openelis/21493 "2023-11-10T06:17:40Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![parag-thoughti](https://community.open-emr.org/letter_avatar_proxy/v4/letter/p/a6a055/32.png) [@parag-thoughti](https://community.open-emr.org/u/parag-thoughti)\
**Post date:** [November 10, 2023, 6:17am UTC](https://community.open-emr.org/t/integration-with-openelis/21493/1 "2023-11-10T06:17:40Z")

</div>

I am trying to integrate OpenEMR and [OpenELIS](https://openelis-global.org/) for lab orders.  
Can anyone guide me on how to implement it?

---

<div class="post-metadata">

**Author:** ![juggernautsei](https://community.open-emr.org/user_avatar/community.open-emr.org/juggernautsei/32/10764_2.png) [@juggernautsei](https://community.open-emr.org/u/juggernautsei)\
**Post date:** [November 10, 2023, 4:14pm UTC](https://community.open-emr.org/t/integration-with-openelis/21493/2 "2023-11-10T16:14:40Z")

</div>

What are you trying to accomplish in details please.

---

<div class="post-metadata">

**Author:** ![parag-thoughti](https://community.open-emr.org/letter_avatar_proxy/v4/letter/p/a6a055/32.png) [@parag-thoughti](https://community.open-emr.org/u/parag-thoughti)\
**Post date:** [November 13, 2023, 7:07am UTC](https://community.open-emr.org/t/integration-with-openelis/21493/3 "2023-11-13T07:07:19Z")

</div>

I am trying to create orders in OpenELIS via OpenEMR.  
I have read in OpenELIS documentation that it supports Electronic orders.  
Not sure how it will integrate with OpenEMR.

---

<div class="post-metadata">

**Author:** ![learnhl7-arun](https://community.open-emr.org/user_avatar/community.open-emr.org/learnhl7-arun/32/15818_2.png) [@learnhl7-arun](https://community.open-emr.org/u/learnhl7-arun)\
**Post date:** [November 14, 2023, 2:39pm UTC](https://community.open-emr.org/t/integration-with-openelis/21493/4 "2023-11-14T14:39:08Z")

</div>

@parag-thoughti

Questions:

1. Are you looking at integrating Orders only or Orders and Results?
2. Do you want to integrate using HL7 v2 or HL7 FHIR

---

<div class="post-metadata">

**Author:** ![Warren](https://community.open-emr.org/letter_avatar_proxy/v4/letter/w/97f17d/32.png) [@Warren](https://community.open-emr.org/u/Warren)\
**Post date:** [December 20, 2025, 5:30pm UTC](https://community.open-emr.org/t/integration-with-openelis/21493/5 "2025-12-20T17:30:41Z")

</div>

Hello, I was curious your results in your endeavour of OpenElis and Openemr.

---

<div class="post-metadata">

**Author:** ![luisuriarte](https://community.open-emr.org/user_avatar/community.open-emr.org/luisuriarte/32/15503_2.png) [@luisuriarte](https://community.open-emr.org/u/luisuriarte)\
**Post date:** [September 18, 2026, 12:03am UTC](https://community.open-emr.org/t/integration-with-openelis/21493/6 "2026-09-18T00:03:53Z")

</div>

### English version

**[Module Release] OpenEMR ↔ OpenELIS Integration Module (LIS interface)**

Hi all,

I’d like to share a module I’ve been building that integrates **OpenEMR** with **OpenELIS** as a full laboratory information system (LIS) interface, aimed primarily at clinics using OpenELIS as their lab backend.

**Repo:** [GitHub - luisuriarte/oe-module-openelis-interface · GitHub](https://github.com/luisuriarte/oe-module-openelis-interface)

**What it does:**

- **Outbound order flow:** sends lab orders from OpenEMR’s native Procedures form (`procedure_order`) to OpenELIS via FHIR (`ServiceRequest`), tracking the returned lab order ID for traceability.
- **Inbound results flow:** a webhook receives results back from OpenELIS and inserts them into `procedure_report`/`procedure_result`, updating order status automatically.
- **Automatic catalog import:** pulls OpenELIS’s real test/panel catalog via its REST API and auto-generates the corresponding `procedure_type` entries and code mappings — no manual code mapping needed for the initial setup. Panels and tests are organized hierarchically (matching OpenELIS’s own panel structure), with support for **multiple labs/providers** coexisting without code collisions.
- **Patient sync:** patients are matched/created in OpenELIS using OpenEMR’s `pubpid` as the external/national ID, with a manual search-and-link tool for cases without an exact match.
- **Import of prior external studies:** a “Search OpenELIS history” button on the patient chart to pull in lab work done before the patient was linked.
- Uses OpenEMR’s native `procedure_providers` table for per-lab configuration (multi-lab support out of the box, no custom config screen).

**Status:** the core loop (order → OpenELIS → results → back into OpenEMR) is working end-to-end. There are still a few rough edges being polished (documented as known issues in the repo).

**Demo environment** , if you’d like to try it:

- OpenEMR: [https://demo.origen.ar](https://demo.origen.ar) — user `clinician1` / pass `4rG3ntin4`
- OpenELIS: [https://elis.origen.ar](https://elis.origen.ar) — user `openelis` / pass `4rG3ntin4`

Feedback, issues, and PRs are very welcome — especially from anyone else running OpenELIS as their LIS. Happy to answer questions about the FHIR/REST integration approach.

* * *

### Versión en español

**[Nuevo módulo] Integración OpenEMR ↔ OpenELIS (interfaz de laboratorio LIS)**

Hola a todos,

Quiero compartir un módulo que estuve desarrollando para integrar **OpenEMR** con **OpenELIS** como interfaz completa de laboratorio (LIS), pensado para clínicas que usan OpenELIS como sistema de laboratorio.

**Repositorio:** [GitHub - luisuriarte/oe-module-openelis-interface · GitHub](https://github.com/luisuriarte/oe-module-openelis-interface)

**Qué hace:**

- **Flujo de solicitud (outbound):** envía órdenes de laboratorio desde el formulario nativo de Procedimientos de OpenEMR (`procedure_order`) hacia OpenELIS vía FHIR (`ServiceRequest`), guardando el ID de orden retornado para trazabilidad.
- **Flujo de resultados (inbound):** un webhook recibe los resultados desde OpenELIS y los carga en `procedure_report`/`procedure_result`, actualizando el estado de la orden automáticamente.
- **Importación automática de catálogo:** trae el catálogo real de tests/paneles de OpenELIS vía su API REST y genera automáticamente los `procedure_type` correspondientes junto con el mapeo de códigos — sin necesidad de mapear a mano en la puesta en marcha inicial. Los paneles y tests se organizan jerárquicamente (igual que en OpenELIS), con soporte para **múltiples laboratorios/proveedores** conviviendo sin colisión de códigos.
- **Sincronización de pacientes:** los pacientes se buscan/crean en OpenELIS usando el `pubpid` de OpenEMR como identificador externo/nacional, con una herramienta de búsqueda y vinculación manual para los casos sin coincidencia exacta.
- **Importación de estudios externos previos:** botón “Buscar historial en OpenELIS” en la ficha del paciente, para traer estudios hechos antes de vincular al paciente.
- Usa la tabla nativa `procedure_providers` de OpenEMR para la configuración de cada laboratorio (soporte multi-laboratorio nativo, sin pantalla de configuración custom).

**Estado actual:** el ciclo completo (orden → OpenELIS → resultado → vuelta a OpenEMR) ya funciona de punta a punta. Quedan algunos detalles por pulir (documentados como issues conocidos en el repo).

**Entorno de demo** , por si quieren probarlo:

- OpenEMR: [https://demo.origen.ar](https://demo.origen.ar) — usuario `clinician1` / contraseña `4rG3ntin4`
- OpenELIS: [https://elis.origen.ar](https://elis.origen.ar) — usuario `openelis` / contraseña `4rG3ntin4`

Feedback, issues y PRs son bienvenidos — especialmente de quienes también usen OpenELIS como LIS. Con gusto respondo preguntas sobre el enfoque de integración FHIR/REST.

---

<div class="post-metadata">

**Author:** ![juggernautsei](https://community.open-emr.org/user_avatar/community.open-emr.org/juggernautsei/32/10764_2.png) [@juggernautsei](https://community.open-emr.org/u/juggernautsei)\
**Post date:** [September 18, 2026, 9:23am UTC](https://community.open-emr.org/t/integration-with-openelis/21493/7 "2026-09-18T09:23:15Z")

</div>

@luisuriarte This is a great addition to OpenEMR. Don’t leave this buried here in a thread. It needs to be posted on this page also. If you don’t have access to edit the page.

> **[OpenEMR Modules - OpenEMR Project Wiki](https://www.open-emr.org/wiki/index.php/OpenEMR_Modules)**

Write to @brady.miller or @stephenwaite to gain access. Link the listing on the wiki page to here. If you prefer. I can list it for you on the wiki page.

---

<div class="post-metadata">

**Author:** ![Nilesh\_Hake](https://community.open-emr.org/user_avatar/community.open-emr.org/nilesh_hake/32/13927_2.png) [@Nilesh\_Hake](https://community.open-emr.org/u/Nilesh_Hake)\
**Post date:** [September 18, 2026, 10:05am UTC](https://community.open-emr.org/t/integration-with-openelis/21493/8 "2026-09-18T10:05:51Z")

</div>

@luisuriarte Great work.

---

<div class="post-metadata">

**Author:** ![luisuriarte](https://community.open-emr.org/user_avatar/community.open-emr.org/luisuriarte/32/15503_2.png) [@luisuriarte](https://community.open-emr.org/u/luisuriarte)\
**Post date:** [September 18, 2026, 8:31pm UTC](https://community.open-emr.org/t/integration-with-openelis/21493/9 "2026-09-18T20:31:19Z")

</div>

**Quick Guide: Setting Up and Using the OpenEMR ↔ OpenELIS Integration**

This is not a manual, just a short guide.

The Providers form has been modified. The diffs and full files are in the `patch` folder.

The OpenEMR version I’m using is 8.2.0.

Something I already posted about on the OpenELIS forum: to be used as an API user for importing the test catalog, the account needs administrator privileges (I’m not thrilled about that, but I assume it’ll be addressed eventually).

So, in Providers, you enter the catalog import user and password ( **OpenELIS Catalog Login** ). You also enter the operational API user ( **Login** ).

There are other fields I added, but those are for a PACS server — I’ll write up the same kind of explanation for that separately.

Both of these users need to be requested from the lab service running OpenELIS.

 ![providers](https://discourse-uploads-openemr.s3.dualstack.us-east-1.amazonaws.com/original/3X/e/a/ea8d3c19da0a5fcea82d9b8159f21a2a5c630f9e.png)

In the menu, it’s under Procedures / OpenELIS.

 ![openelis1](https://discourse-uploads-openemr.s3.dualstack.us-east-1.amazonaws.com/original/3X/b/4/b4fac1429ede3ca1d563ab8700aa0a6eae614aaa.png)

First you run a preview, then you import the catalog. That catalog gets saved into OpenEMR’s `procedure_type` table.

 ![openelis2](https://discourse-uploads-openemr.s3.dualstack.us-east-1.amazonaws.com/original/3X/4/0/4056a525cd1c087670dc16e83a29b518c0540c26.png)

LOINC and SNOMED are set/adjusted in Code Mapping.

 ![openelis6](https://discourse-uploads-openemr.s3.dualstack.us-east-1.amazonaws.com/original/3X/5/f/5f0b273b2ebba019533696dd23dc77c0a07f51c6.png)

Then you create a normal procedure order, making sure to select the lab and the procedure type — you need to choose **Lab Test**.

In the procedure search, it only shows tests that are lab tests:

 ![openelis7](https://discourse-uploads-openemr.s3.dualstack.us-east-1.amazonaws.com/original/3X/3/a/3a5a577f59d5dfc155a6fc5dd12b5e732051d873.png)

First press **Save and Continue** , then **Send to OpenELIS**.

 ![openelis5](https://discourse-uploads-openemr.s3.dualstack.us-east-1.amazonaws.com/original/3X/e/f/ef11a317495754fcae53a747b1784e6f3da3c0cf.png)

 ![openelis8](https://discourse-uploads-openemr.s3.dualstack.us-east-1.amazonaws.com/original/3X/b/8/b817eed8bf1b38f6f1f4620747e46698f21a069b.png)

Then, under Procedures / OpenELIS / Pending Orders, the sent orders will appear.

 ![openelis3](https://discourse-uploads-openemr.s3.dualstack.us-east-1.amazonaws.com/original/3X/6/c/6cdd041d762177071576293c25b64375f8723b14.png)

These orders will show up on the OpenELIS dashboard (demo = [https://elis.origen.ar](https://elis.origen.ar), user `openelis` / pass `4rG3ntin4$`).

From there, let it follow its normal course in OpenELIS.

Back in OpenEMR, in Pending Orders, press the **Check Results (All)** button, and it will show if results were imported (with a count).

Then check the patient’s dashboard as you normally would.

---

<div class="post-metadata">

**Author:** ![Mohammad](https://community.open-emr.org/letter_avatar_proxy/v4/letter/m/e274bd/32.png) [@Mohammad](https://community.open-emr.org/u/Mohammad)\
**Post date:** [September 19, 2026, 10:28am UTC](https://community.open-emr.org/t/integration-with-openelis/21493/11 "2026-09-19T10:28:24Z")

</div>

Demo access to your openemr above does not work ( [https://demo.origen.ar/](https://demo.origen.ar/) clinitian1/`4rG3ntin4`, to your openelis it does, is it possible to give access to your openemr demo so i can take a look at your forms for intake/PE? if you modified it would you plz link to github?

---

<div class="post-metadata">

**Author:** ![luisuriarte](https://community.open-emr.org/user_avatar/community.open-emr.org/luisuriarte/32/15503_2.png) [@luisuriarte](https://community.open-emr.org/u/luisuriarte)\
**Post date:** [September 19, 2026, 11:03am UTC](https://community.open-emr.org/t/integration-with-openelis/21493/12 "2026-09-19T11:03:26Z")

</div>

> [@Mohammad](#):
>
> clinitian1/`4rG3ntin4`

Is clinician1/4rG3ntin4

Regards

Luis

---

<div class="post-metadata">

**Author:** ![Mohammad](https://community.open-emr.org/letter_avatar_proxy/v4/letter/m/e274bd/32.png) [@Mohammad](https://community.open-emr.org/u/Mohammad)\
**Post date:** [September 19, 2026, 6:07pm UTC](https://community.open-emr.org/t/integration-with-openelis/21493/13 "2026-09-19T18:07:42Z")

</div>

> [@luisuriarte](#):
>
> 4rG3ntin4

Thank you, pretty much same forms , again thanks for offering the link to your demo.

Amazing usage of CAMOS especially with medications , would you please elaborate?

---

<div class="post-metadata">

**Author:** ![luisuriarte](https://community.open-emr.org/user_avatar/community.open-emr.org/luisuriarte/32/15503_2.png) [@luisuriarte](https://community.open-emr.org/u/luisuriarte)\
**Post date:** [September 19, 2026, 6:31pm UTC](https://community.open-emr.org/t/integration-with-openelis/21493/14 "2026-09-19T18:31:52Z")

</div>

CAMOS has been a native OpenEMR form for years. You can view it here: [CAMOS module - OpenEMR Project Wiki](https://www.open-emr.org/wiki/index.php/CAMOS_module) .

In my demo, I have customized hospital management, notifications, telehealth, home-based care (HBC), the dental chart, the Express Portal, and SDOH (maternity monitoring, in Latin America).

---

<div class="post-metadata">

**Author:** ![Warren](https://community.open-emr.org/letter_avatar_proxy/v4/letter/w/97f17d/32.png) [@Warren](https://community.open-emr.org/u/Warren)\
**Post date:** [September 25, 2026, 3:36pm UTC](https://community.open-emr.org/t/integration-with-openelis/21493/15 "2026-09-25T15:36:47Z")

</div>

Wow you did it Luis!! I’ve been messing with this for months now. Congratulations! I will be in contact with you!
