Nueva publicación

Encontrar

Pregunta
· 28 mayo, 2025

Defining Schedule Specifications and "last" occurrences

Is there syntax in the schedule specifications for specifying the "last" occurrences?
e.g., instead of WEEK-01-04 (1st wed's of month), WEEK-LL-04 (last wed's of month) or
instead of *-*-01 (1st of every month), *-*-LL (last of every month)

I searched the documentation and community forum, but didn't see anything that addressed this question.

Comentarios (0)1
Inicie sesión o regístrese para continuar
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