Nueva publicación

Pesquisar

Artículo
· 28 mayo, 2025 Lectura de 4 min

From Legacy to FHIR: Bridging Healthcare Data with IRIS-FHIR-Bridge


Hi Community,

In this article, I will introduce my application iris-fhir-bridge 

IRIS-FHIR-Bridge is a robust interoperability engine built on InterSystems IRIS for Health, designed to transform healthcare data across multiple formats into FHIR and vice versa. It leverages the InterSystems FHIR Object Model (HS.FHIRModel.R4.*) to enable smooth data standardization and exchange across modern and legacy healthcare systems.

🚀 Key Features

  • 🧾 CSV → FHIR Transformation

Convert structured legacy data in CSV format into FHIR resources using InterSystems' native FHIR object model.

Currently supported FHIR resources:

  • Patient
  • Encounter
  • Observation
  • Practitioner
  • Organization

✅ Can be easily extended to support other FHIR resource types.

  • 🔁 HL7 v2 → FHIR Conversion

  • 📝 CCDA → FHIR Conversion

  • 🔄 FHIR → HL7 v2 Conversion 


🔧 Conversion Workflows

CSV to FHIR (Using FHIR Object Model)
 

Parses structured CSV data and transforms it into valid FHIR resources using the InterSystems FHIR Object Model (HS.FHIRModel.R4.). Designed for production environments, this service reads structured CSV files, maps each row to corresponding FHIR resources (e.g., Patient, Encounter, Observation, etc.), and assembles them into a fully compliant FHIR Bundle. The generated FHIR Bundle is ready to be posted directly to a FHIR server, enabling seamless integration and automated ingestion of legacy tabular data into modern healthcare systems.

  • CSV_File_Service: Business service that transforms structured CSV data (patient demographics, observations, practitioners, Encounters, Organizations) into valid FHIR resources using InterSystems FHIR Object Model.

Code snippet

ClassMethod CreatePatientResource(headers As %String, line As %String) As HS.FHIRModel.R4.Patient
{
    // Get columns from header array
    set headerArray = $listfromstring(headers, ",")
    set values = $listfromstring(line, ",")
    
    //Create patient resource
    #dim patient As HS.FHIRModel.R4.Patient
    set patient = ##class(HS.FHIRModel.R4.Patient).%New()

    //Set id and identifier
    SET position = $LISTFIND(headerArray, "patientid")    
    if (position > 0)
    { 
        set patient.fhirID = $listget(values,position)
        do patient.IncludeIdentifier()
        set identifier = ##class(HS.FHIRModel.R4.Identifier).%New()
        set identifier.system = "http://irisfhirbridge.com/patient-id"
        set identifier.value = $listget(values, position)
        do patient.identifier.add(identifier) 
    }

    //Set Patient name
    SET positionfirstName= $LISTFIND(headerArray, "firstname")    
    SET positionfamilyName= $LISTFIND(headerArray, "familyname")    

    if (positionfirstName > 0)
    {          
        Do patient.IncludeName()
        set name = patient.name.MakeEntry()
        Do name.IncludeGiven()
        Do name.given.add($listget(values, positionfirstName))           
        if (positionfamilyName > 0 ) {set name.family = $listget(values, positionfamilyName) }  
        Do patient.name.add(name)       
    }
    //set gender
    SET position = $LISTFIND(headerArray, "gender")    
    if (position > 0)
    {
        set patient.gender = $listget(values,position)     
    }
    //set birth date
    SET position = $LISTFIND(headerArray, "birthdate")    
    if (position > 0)
    {
        set patient.birthDate = $listget(values,position)     
    }
    
    Return patient
}


The related Business Operation generates a JSON file containing the FHIR Bundle, which can be directly posted to any FHIR-compliant server.
image


HL7 v2 ↔ FHIR Conversion

Supports REST and file-based ingestion of HL7 v2 messages and converts them into standardized FHIR resources.

  • HL7_File_Service: Monitors a folder for HL7 v2 message files and automatically converts them into FHIR JSON files.
  • HL7_Http_Service: Monitors a folder for HL7 v2 message files and automatically converts them into FHIR JSON files.
  • image image
  • HS.FHIRServer.interop.Service: A business service responsible for converting FHIR resources back into HL7 v2 messages, ensuring two-way compatibility. image

CCDA to FHIR Conversion

Conversion Accepts CCDA XML documents via a RESTful API and outputs structured FHIR JSON.

  • HL7_Http_Service: Processes structured CSV data, such as patient demographics and observations, and uses the InterSystems FHIR Object Model to construct valid FHIR resources. image

 

🧰 Additional Features

  • Sample Data Files: The repository includes example HL7, CCDA, FHIR, and CSV files to help users get started.
  • Postman Collection: A ready-to-use Postman collection is available for testing all exposed REST endpoints.


🤝 Join the Innovation

As part of the InterSystems FHIR and Digital Health Interoperability Contest, IRIS-FHIR Bridget aims to contribute meaningful innovation to the healthcare community. We welcome feedback, collaboration, and ideas to evolve this tool further.

Please find a video demonstration of the application below:


For more details, please visit iris-fhir-bridge open exchange application page.

Thanks

2 comentarios
Comentarios (2)1
Inicie sesión o regístrese para continuar
Comentarios
· 28 mayo, 2025

Hello, my name is... | Introduce Yourself!

Here’s a special thread where you can tell a bit about yourself — because connecting and learning more about each other is what makes this community great 💬✨

We had a similar discussion on our old Global Masters platform — you might remember! We’re excited to bring that networking opportunity back to the community.

💬 Here’s a simple format to help you get started:

  • Name
  • Where you’re from / based
  • What you do (your role / company / areas of interest)
  • Expertise – What are your key areas of expertise or main tech topics? How can you help other community members?
  • Fun Fact or Hobbies – Optional, but always fun to share!
  • LinkedIn – Optional, but very welcome!

💡 Also — if you’re attending READY 2025, let other Developer Community members know in the comments below! It’s a great way to connect in advance, meet new people, and find your conference crew.

🌟 Don’t forget: if you’re coming from Global Masters, your activity here also earns you bonus points. So post, react, comment — and grow your network! 🎉

31 comentarios
Comentarios (31)13
Inicie sesión o regístrese para continuar
Artículo
· 28 mayo, 2025 Lectura de 2 min

El Repositorio FHIR de IRIS for Health deja de responder tras la actualización a la versión 2023.6.1.809. ¿Cómo solucionarlo?

Después de que desplegáramos un nuevo contenedor basado en containers.intersystems.com/intersystems/irishealth:2023.1 esta semana, notasteis de repente que el Repositorio FHIR empezó a responder con un Error 500. Esto se debe a violaciones de PROTECT en el nuevo espacio de nombres y base de datos HSSYSLOCALTEMP, utilizado por esta versión de los componentes FHIR de IRIS for Health.

Comentarios (0)1
Inicie sesión o regístrese para continuar
Artículo
· 28 mayo, 2025 Lectura de 2 min

Multilingual GenerativeAI Pattern Match WorkBench Utility

Audience

Those curious in exploring new GenerativeAI usecases.

Developers and analysts looking for a quick way to tame the Pattern Match operator.

In both ObjectScript and SQL this has a quite visually dense format.

 if booking?2A1"-"1(1"CARD",1"RAD")1.5N
SELECT DISTINCT PatientRef
FROM APPOINTMENT.BOOKING
WHERE Active='Y' AND
LocationCode %PATTERN '2A1"-"1(1"CARD",1"RAD")1.5N'

Challenge

Use generative AI to assist create and modify pattern match code from different natural language input.

English Description French Description Spanish Description
module A
  one of String "CARD"
   or
  one of String "RAD"
the main pattern is as follows:
  two of alphabetic characters
  followed by one of Character minus
  followed by one of module A
  followed by one to five of numeric characters
module A
  un de Corde "CARD"
   ou
  un de Corde "RAD"
le motif principal est le suivant:
  deux de caractères alphabétique
  suite par un de caractère moins
  suite par un de module A
  suite par un à cinq de caractères numériques
módulo A
  uno de Cadena "CARD"
   o
  uno de Cadena "RAD"
el patrón principal es la siguiente:
  dos de caracteres alfabéticos
  seguido de uno de carácter menos
  seguido de uno de módulo A
  seguido de uno para cinco de caracteres numéricos

 

Link to online demo

Pattern Match WorkBench ( Hosted on HuggingFace  )

Existing Features

  • A multilingual display
  • Self Documented application. Shows where patterns are used in the IRIS product.
  • Transform English, French and Spanish description input, into new pattern match code.
  • Describe an existing pattern match code in plain English, French or Spanish
  • Generates lists of matching and non-matching sample values
  • Validates a table batch of matching values to an existing pattern match expression in code.
  • Extracts patterns from Object Script and SQL. ie: Just paste a line of code and the demo will detect the pattern 

Pending further model training

  • Generate suggested generalized new patterns from a given list of matching values
  • Shortcuts for common information types. For example "email", "web address"

Technologies used

  • Python for Serverside logic, model training and dataset creation
  • Gradio - web page framework
  • Huggingface - for Training models and application Deployment

Appreciate any feedback.

Thank you

Comentarios (0)1
Inicie sesión o regístrese para continuar
Anuncio
· 28 mayo, 2025

Conoced a los ganadores del Concurso de Programación con IA en InterSystems READY 2025 @ Tech Exchange.

¡Hola, comunidad!

¡Estamos encantados de anunciar que varios ganadores del Concurso de Programación con IA de InterSystems han sido invitados a presentar sus proyectos en el Tech Exchange durante InterSystems Ready 2025!

Acompañadnos el miércoles 25 de junio para descubrir soluciones innovadoras y reales creadas con InterSystems IRIS, IA, LLMs y tecnologías de agentes inteligentes, directamente de la mano de los desarrolladores que las hicieron posibles.

Ponente Demo
@Muhammad Waseem, Consultor técnico, Traverse Health

Próxima generación de aplicaciones autónomas de IA 

iris-AgenticAI

@Yuri Marx, Director, YM Services

Gestión del código fuente con IA privada e IRIS

langchain-iris-tool

@Eric Fortenberry, Analista Senior de Integración, AdventHealth

Una visión minimalista de la IA: exploración de incrustaciones y búsqueda vectorial con EasyBot

iris-easybot 

@Alena Krasinskiene, Responsable de Calidad y Experiencia del Cliente, Banksia Global

Agentes de IA como ciudadanos de primera clase en InterSystems IRIS

bg-iris-agent

@Henry Pereira, Tech Leader en BPlus tecnology
@Henrique Dias, Arquitecto sénior de plataformas, AI en Zendesk
@José Pereira, Ingeniero de datos en Shift

Comanda la tripulación: crea una tripulación de IA para automatizar tu trabajo

Facilis

Estos desarrolladores han creado soluciones innovadoras utilizando tecnologías de InterSystems IRIS, integrando IA, LLMs y agentes inteligentes para resolver desafíos reales.

No perdáis la oportunidad de ver estas demostraciones en vivo y conectar con las mentes que las hicieron posibles en Ready 2025.

Comentarios (0)1
Inicie sesión o regístrese para continuar