Nova postagem

Pesquisar

Discussão
· jan 25

Global Masters - Random Coffee Chat - Asia & Pacific

Hi Community! 👋

You’ve asked for easier ways to connect with other Global Masters and we heard you!
Random Coffee Chat is an easy way for Global Masters to connect and have an informal 1:1 conversation. ☕

🗓 When: January 26 – February 9

This thread is for participants based in Asia, Australia and New Zealand who’d like to connect and schedule a short coffee chat directly with each other.

 
☕ How it works

  • Leave a comment in this thread to join
  • Reply to someone’s comment if you’d like to connect
  • Continue the conversation in Direct Messages and schedule a 30-minute quick call

You choose who to connect with and when.

Participants connect directly with each other via Direct Messages on the Developer Community and choose a time that works best for both sides.

☕ After your coffee chat, share a quick screenshot from your call in the Random Coffee Chat ASK on Global Masters, and earn 1000 Global Masters points as a thank-you for participating.

💬 Example comment (copy & paste)

Hi! I’m in for a random coffee chat ☕
Location: Australia
Availability: Wed–Fri, 10:00–13:00
Happy to chat about: getting to know each other, AI & automation, READY 2026 plans

🧠 Suggested topics & ice breakers

  • Just getting to know each other and what you enjoy outside of work 
  • AI, automation, and agent-based solutions
  • Developer tools, productivity, and workflows
  • Community contributions and favorite DC topics
  • InterSystems READY plans and past event experiences

⏱ Format

  • 30-minute informal video or audio call
  • Any tool that works for both of you

Looking forward to seeing new connections happen here 🚀

Discussão (0)1
Entre ou crie uma conta para continuar
Discussão
· jan 25

Global Masters - Random Coffee Chat - Americas

Hi Community! 👋

You’ve asked for easier ways to connect with other Global Masters and we heard you!
Random Coffee Chat is an easy way for Global Masters to connect and have an informal 1:1 conversation. ☕

🗓 When: January 26 – February 9

This thread is for participants based in North, Central, and South America who’d like to connect and schedule a short coffee chat directly with each other.

 
☕ How it works

  • Leave a comment in this thread to join
  • Reply to someone’s comment if you’d like to connect
  • Continue the conversation in Direct Messages and schedule a 30-minute quick call

You choose who to connect with and when.

Participants connect directly with each other via Direct Messages on the Developer Community and choose a time that works best for both sides.

☕ After your coffee chat, share a quick screenshot from your call in the Random Coffee Chat ASK on Global Masters, and earn 1000 Global Masters points as a thank-you for participating.

💬 Example comment (copy & paste)

Hi! I’m in for a random coffee chat ☕
Location: USA
Availability: Wed–Fri, 10:00–13:00
Happy to chat about: getting to know each other, AI & automation, READY 2026 plans

🧠 Suggested topics & ice breakers

  • Just getting to know each other and what you enjoy outside of work 
  • AI, automation, and agent-based solutions
  • Developer tools, productivity, and workflows
  • Community contributions and favorite DC topics
  • InterSystems READY plans and past event experiences

⏱ Format

  • 30-minute informal video or audio call
  • Any tool that works for both of you

Looking forward to seeing new connections happen here 🚀

1 novo comentário
Discussão (1)2
Entre ou crie uma conta para continuar
Discussão
· jan 25

Global Masters - Random Coffee Chat - Europe & UK

Hi Community! 👋

You’ve asked for easier ways to connect with other Global Masters and we heard you!
Random Coffee Chat is an easy way for Global Masters to connect and have an informal 1:1 conversation. ☕

🗓 When: January 26 – February 9

This thread is for participants in Europe & UK time zones who’d like to connect and schedule a short coffee chat directly with each other.

 
☕ How it works

  • Leave a comment in this thread to join
  • Reply to someone’s comment if you’d like to connect
  • Continue the conversation in Direct Messages on the Developer Community and schedule a 30-minute quick call

You choose who to connect with and when.

Participants connect directly with each other via Direct Messages on the Developer Community and choose a time that works best for both sides.

☕ After your coffee chat, share a quick screenshot from your call in the Random Coffee Chat ASK on Global Masters, and earn 1000 Global Masters points as a thank-you for participating.

💬 Example comment (copy & paste)

Hi! I’m in for a random coffee chat ☕
Location: UK
Availability: Wed–Fri, 10:00–13:00
Happy to chat about: getting to know each other, AI & automation, READY 2026 plans

🧠 Suggested topics & ice breakers

  • Just getting to know each other and what you enjoy outside of work 
  • AI, automation, and agent-based solutions
  • Developer tools, productivity, and workflows
  • Community contributions and favorite DC topics
  • InterSystems READY plans and past event experiences

⏱ Format

  • 30-minute informal video or audio call
  • Any tool that works for both of you

Looking forward to seeing new connections happen here 🚀

3 novos comentários
Discussão (3)2
Entre ou crie uma conta para continuar
Artigo
· jan 25 7min de leitura

Destaque de Busca FHIR 2025.1 - Suporte a Buscas Relacionadas a Listas (_List, $find, Listas Funcionais/"Atuais")

Às vezes é mais conveniente, eficiente e seguro limitar as Buscas FHIR por "Listas" de Recursos pré-definidas.

Desde a v2025.1, suportamos vários recursos relacionados a Listas em nosso Servidor FHIR.

Vou destacar estes recursos aqui e fornecer alguns exemplos.

Em geral, você pode ver os detalhes sobre o Recurso List na documentação oficial do FHIR.

Mas aqui está uma breve descrição baseada no link acima:

O Recurso FHIR List representa uma coleção plana (opcionalmente ordenada) de registros usados para listas clínicas (ex: alergias, medicamentos, alertas, históricos) e gerenciamento de fluxo de trabalho (ex: rastreamento de pacientes, casos de ensino).
Listas podem ser homogêneas (tipo de recurso único) ou heterogêneas (tipos mistos, ex: uma lista de problemas abrangendo Conditions, AllergyIntolerances e Procedures).
Use List quando precisar de um conjunto curado/filtrado que não pode ser obtido via uma consulta simples (ex: alergias “atuais” vs. todas as alergias registradas).
Consultar uma List produz um snapshot de um ponto no tempo curado por humanos, enquanto consultar o endpoint do recurso geralmente retorna um conjunto de dados mais amplo, não curado, “no estado atual”.

Em nossas versões mais recentes (2025.1+), você pode encontrar novos suportes para trabalhar com Listas:

  • O Parâmetro de Busca _list

Veja a documentação FHIR relacionada para uma descrição completa. Veja nossa Documentação relacionada para detalhes sobre o suporte disponível (especificamente sobre buscas em nível de Tipo vs. nível de Sistema).

Usando este recurso, você pode definir, por exemplo, uma Lista de certos Recursos (como Encounters ou Patients, etc.) pelos quais você deseja buscar, sem ter que detalhar todos eles como múltiplos Parâmetros de Busca.

Por exemplo, eu poderia definir uma Lista de Pacientes:

 
Snippet cURL PUT /List

E então buscá-los desta forma:

 
Snippet cURL GET /Patient?_list

E receber de volta uma lista curada dos Pacientes que eu queria, em vez de ter que "mencionar" todos eles em vários Parâmetros de Busca.

E, claro, existem muitos outros casos de uso.

  • Listas Funcionais (incluindo a Operação Customizada $update-functional)

Um tipo especial de listas são as Listas Funcionais (ou Listas de "Recursos Atuais").

Veja a documentação FHIR relacionada para uma descrição completa.

Para sua conveniência, aqui está uma breve descrição baseada no link acima:

Muitos sistemas clínicos mantêm listas de pacientes “atuais” (por exemplo, uma lista de problemas atual e uma lista de medicamentos atual), mas o FHIR não pode inferir com segurança a “atualidade” inspecionando uma única instância de recurso. Usando Condition como exemplo, o mesmo tipo de recurso pode ser postado para múltiplos propósitos legítimos (entrada de lista de problemas curada, queixa/diagnóstico de encontro, contexto de fluxo de trabalho diagnóstico ou dados de encaminhamento de entrada), e a Condition não possui nenhum elemento que distingua claramente esses usos. Como distinguir o atual vs. o passado exigiria alteração retrospectiva (criando preocupações de integridade e assinatura digital), uma busca normal em Condition para um paciente retornará mais do que apenas os “problemas atuais” curados, e limitá-la apenas ao “atual” ocultaria outros registros importantes de Condition. Portanto, se uma Condition (ou registro similar) está na “lista atual” de um paciente pode ser determinado pelo fato de estar ou não referenciada na List apropriada. Via API REST, isso é expresso através do mecanismo de busca de lista usando _list com nomes de listas funcionais padrão (ex: GET [base]/AllergyIntolerance?patient=42&_list=$current-allergies), e o servidor pode suportar isso sem necessariamente expor uma instância de List independente. Existem vários nomes de listas funcionais "comuns", como $current-problems, $current-medications, $current-allergies e $current-drug-allergies (um subconjunto de alergias).

Para permitir a manutenção dessas Listas Funcionais, definimos uma Operação Customizada, chamada $update-functional, que permite a criação e atualização desses tipos de listas. Veja mais detalhes em nossa Documentação.

Você pode definir uma lista de alergias atuais, por exemplo, assim:

 
Snippet cURL POST /List/$update-functional?for=...&name=$current-allergies

Isso criará/atualizará a Lista $current-allergies, para um paciente específico (ID 34 no exemplo acima)

Note que eu incluí o 'for=' na URL apontando ao ID do paciente, e na liste eu tenho o 'subject' referenciando o paciente.

(Note também que para o cifrão ($) eu usei uma barra invertida antes (\), ou seja: \$)

E agora, posso solicitar o Recurso AllergyIntolerance deste Paciente e, em vez de receber todos eles, posso pedir apenas os "atuais", conforme definido na Lista acima.

Isso ficaria assim:

 
Snippet cURL GET /AllergyIntolerance?patient=...&_list=$current-allergies

E isso retornaria um subconjunto das alergias deste Paciente, conforme a lista de alergias atuais.

Note que estamos usando o mesmo Parâmetro de Busca _list mencionado anteriormente, apenas desta vez com uma "Lista Funcional" em vez de uma "Lista Customizada".

Note que você pode controlar os nomes das listas funcionais (e para cada lista, seu Parâmetro de Busca subject e o Tipo de Recurso subject; por exemplo, no exemplo acima, o parâmetro de busca subject foi patient e o Tipo de Recurso subject foi Patient), através da configuração do Endpoint FHIR, especificamente em "Interactions Strategy Settings", veja a documentação relacionada aqui. A aparência é esta:

  • Operação $find

Além disso, se você simplesmente quiser obter a própria Lista Funcional (para um assunto específico e de um tipo específico), pode usar a operação $find.

Veja a documentação FHIR relacionada para uma descrição completa. E veja também nossa Documentação relacionada.

Aqui está um exemplo, seguindo o anterior:

 
Snippet cURL /List/$find?patient=...&name=$current-allergies

Isso retornará a lista $current-allergies relacionada para este Paciente, conforme definido acima via a função $update-functional.

 

Veja o aplicativo relacionado no Open Exchange que inclui uma Postman Collection com os exemplos acima (e um pouco mais) e instruções sobre como executar isso no container docker do FHIR server template de @Evgeny Shvarov (de fato, o exemplo acima foi criado com base neste modelo; com uma pequena alteração... veja detalhes nas instruções de uso do meu app).

Uma nota geral - toda essa funcionalidade assume que você está usando a Estratégia de Armazenamento JsonAdvSQL, que é relativamente nova e o padrão atual para o seu Endpoint. (Se relevante, veja aqui sobre a migração de uma Estratégia legada)
Discussão (0)1
Entre ou crie uma conta para continuar
Artigo
· jan 25 5min de leitura

Vibecoding Full Stack Applications With IRIS Backend in January 2026

How I Vibecoded a Backend (and Frontend) on InterSystems IRIS

I wanted to try vibecoding a real backend + frontend setup on InterSystems IRIS, ideally using something realistic rather than a toy example. The goal was simple: take an existing, well-known persistent package in IRIS and quickly build a usable UI and API around it — letting AI handle as much of the boilerplate as possible. Here is the result of the experiments.

Choosing the Data Model

For this experiment, I picked the Samples BI Demo. It’s good for vibecoding:

  • Contains several well-designed persistent classes
  • It’s widely known and easy to install
  • It already works nicely with IRIS BI

Installation is trivial using IPM:

zpm "install samples-bi-demo"

Once installed, I verified that everything worked correctly in IRIS BI. For convenience and a better browsing experience, I also installed DSW (DeepSee Web). and made sure that data is there and all works perfectly - here is the screenshot of installed data viwed by DSW:

Sampels Bi Demo shows the sales of an imaginary company HoleFoods that produces and sells products with Holes. The setup goes with HoleFoods package of persistent classes:

  • Product
  • Outlet
  • Country
  • Region
  • Transaction

Quite a match for a CRUD demo.

Vibecoding Setup

Here is my "vibecoding with IRIS" setup:

That’s it. No heavy scaffolding, no custom frameworks.

The UI Recipe

The architecture I followed is straightforward and repeatable:

  1. A frontend UI
  2. Communicating with IRIS via a REST API
  3. Defined by a Swagger (OpenAPI) specification
  4. Implemented natively in InterSystems IRIS ObjectScript and IRIS SQL.

Generating the Swagger API

In this approach, OpenAPI spec or Swagger is the middleman that both the frontend UI and IRIS understand. IRIS 2025.3 supports Swagger / OpenAPI 2.0 so I asked Codex to generate a CRUD-style API for one of the persistent classes — starting with Product. To make this easier for the AI, I exported the source code of the persistent classes from my local IRIS instance and shared them with Codex.

I decided to begin with a simple requirement:

A page to create, edit, list, and delete Products

To support this, I asked Codex to:

  • Generate a spec.cls Swagger definition
  • Make Product derive from %JSON.Adaptor
  • Follow the conventions and preferences described in my AGENTS.md file
    (basically accumulated “wisdom” from previous interactions)

I also chose a base API path:

/holefoods/api

Codex generated the class:

Holefoods.api.spec After compiling it, IRIS automatically produced two additional classes:

  • Holefoods.api.disp
    Always generated by IRIS and responsible for endpoint routing and request/response plumbing
  • Holefoods.api.impl
    Where the actual business logic lives - it goes with method stubs initially.

This is one of those IRIS features that feels almost magical when paired with vibecoding. Being thoughtful (or maybe cautious 😄), Codex asked:

  • Whether the web application should be registered in module.xml
  • What dispatch class name should be used

I confirmed both — which means the API is automatically created when IRIS starts - and it added web app setup in module.xml so the web app appears in IRIS with next docker rebuild or manual module load:

<CSPApplication
Url="/holefoods/api"
DispatchClass="HoleFoods.api.disp"
MatchRoles=":{$dbrole}"
PasswordAuthEnabled="0"
UnauthenticatedEnabled="1"
Recurse="1"
UseCookies="2"
CookiePath="/holefoods/api/"
CorsAllowlist="*"
CorsCredentialsAllowed="1"
CorsHeadersList="Content-Type,Authorization,Accept-Language,X-Requested-With,session"
/>

Security Setup

Anyone who has worked with IRIS knows that web applications + security can sometimes be… eventful. So I explicitly asked Codex to generate:

Holefoods.api.security.cls

, following the instructions in AGENTS.md

This class introduced the required security adjustments to enable the API development phase to run smoothly, but also clearly and easily escalatable to any higher security level, mostly focusing on all the security relations to a special role that is given to an application and thus projected to everyone who is logged into this application.

Implementing the API

Next step: implementation.

I asked Codex to fully implement the CRUD logic inside:

Holefoods.api.impl And it just did. At this point, everything was ready to test.

Testing with Swagger UI

To quickly validate the API, I installed Swagger UI:

zpm "install swagger-ui"

Important note (learned the hard way earlier):
Swagger UI requires a _spec endpoint, which must always be implemented in the impl class. Once that’s in place, Swagger UI works perfectly.

After restarting IRIS, I could see the full API definition exposed — and test it interactively.

The request:

GET /holefoods/api/products

returned some meaningful data. At this stage, the backend was essentially “done”.

Vibecoding the Frontend

With a working API and a clean Swagger spec, building the frontend becomes trivial. You have options:

  • Ask Codex to generate the frontend
  • Use tools like Lovable to scaffold a UI directly from the spec

I chose the latter — and within minutes had a working local UI connected to IRIS. After some testing (and fixing a small issue with deletion), the full round-trip experience was there: UI → API → IRIS → persistent storage. Here is the screenshot of the first result (It can be viewed locally at http://localhost:5174/ ):

 

Adding Unit Tests (Because Adults Do That)

The last missing piece was unit testing. I asked Codex to generate:

HoleFoods.api.Unittests.cls

covering all endpoints defined in the Swagger spec.

Once generated, I added the test class to the module configuration so tests could be run via IPM with this line

<UnitTest Name="/tests" Package="HoleFoods.api.tests" Phase="test"/>

so tests can be called as:

zpm "test esh-vibe-back-demo" 

And just like that, all API endpoints were covered and visible in the IRIS unit test portal:

Later I asked to add /transactions endpoint and Codex introduced code into spec class, has built the implementation in impl and introduced unit-tests. And has built a UI the result of which you can see here:

Final Thoughts

InterSystems IRIS + Swagger + vibecoding looks like a powerful and effective combination.

Yes, the result is a prototype —but almost real, and testable, built shockingly fast.

Here is the repository.

Leveraging AGENTS.md and conducting open source examples with best practices on dealing with the IRIS backend can boost the leverage of IRIS as a robust backend for comprehensive full-stack applications.

The coachable code-generation capability of OpenAI Codex or Claude Code opens the opportunity of building superperformant backends on IRIS, as the nature of any SQL on IRIS backend is no other than code generation over the globals traversing. 

P.S.

This article is written by a human and reviewed by AI for better English :)

P.P.S.

And as a bonus track - built the UI on Lovable too - so you can play with the online demo:

Discussão (0)1
Entre ou crie uma conta para continuar