検索

Artigo
· 36min atrás 7min de leitura

"Vibe coding" towards IRIS implementations?

Keywords:  Vibe coding, Windsurf, IRIS, TIE

Why not? 

Has anyone not been trying "vibe coding" so far? Even merely 3 years ago, if anyone asked

  • "Could I do IRIS implementation for NHS TIE in English or Spanish just Chinese ?", or
  • "Can I just instruct TIE in English to build itself an e2e route, to pick up a PDF report then turn into ORU/MDM message and submit into the PAS ?",
  • "Could we query IRIS database in English only, and build up dashboard or ad hoc report of my own by English instructions?"

you would probably have laughed, tried not to be offended, found a chair and started to count how many man*days or man*weeks just those analysis/SoW/requirement/design/test/service docs would take, as well as hands-on engineering efforts. 

Yet as the foundation models leaping and progressing, it certainly gets more realistic by today.

I also wish to know how others are playing with it.  Below just a rushed-up casual note from myself.

Scope

  • IDE: Windsurf (yes it's still there) or Cursor etc (about 20+ popular/powerful ones now) or just VSCode with such extensions.
  • VSCode ExtensionIntersystems IRIS Extension Pack
  • TIE Server: IRIS Health Connect
  • CVS Repo: Github/Gitlab
  • OS: Windows or MacOS

Nothing unusual here. 

 

The proper approach?  

By end of 2025 the popular fashion would be "multi-agentic AI ecosystems", "Remote MCP with enterprise security", DSPy-alike features, LLMLite-alike gateways, legacy RAG or GAG, and "self-evolving systems" like AlphaEvlve style evaluators. We might need some feature engineering like them, however hope we can exchange such designs next time.

But in the meantime, is there also a lightweight approach with minimum engineering overhead, mostly surfing on LLM's evolving capabilities?

 

The minimalism approach?

Or, the short list in the scope might be sufficient to start with?

1. Download and install Windsurf

I happened to use Windsurf for a year now - no particular reason, but just was impressed by its auto-execution at very first try.

No - it's not fading away yet, I am still using its Pro subscription. But free version using its free models would work too.

Download Windsurf Editor and Plugins | Windsurf

When it runs 

2. Install Intersystems IRIS Extension Pack 

Various Intersystems extensions are all helpful but for this one this single pack would be sufficient to start with for all "vibe coding" needs.

3. Connect into IRIS server

Click the Intersystems icon on IDE's left toolbar, connect into an IRIS server.  Explore its namespaces, and open some Projects to explore.  

I happened to use IRIS 2022.x but newer version would all work.  

4. Move the IRIS project package(s) into workspace

Click the Explorer icon on left toolbar to open Workspace, then simply pick some IRIS project and drag-and-drop it into your local workspace within the IDE. 

This step is simple. But it helps - it would move those IRIS service items (classes, schema and lookup tables etc) into current local working folder being used by Windsurf etc, so it can find these files and start to work on them per your instructions in English etc on the right chat panel, called "Cascade" in Windsurf.

5. Start the vibe coding any tasks

Now, you can do anything with really simply or comprehensive instructions in any natural language, for any quick customer demands, brief demos, or real-world enterprise grade NHS clinical requirements. 

I normally just set the Cascade to "Code" mode instead of "Chat", then select a free LLM such as GPT5.1 ()

6. What could we try now?

Why don't we try some quick asks as listed in the initial "Why Not" use cases? Or any use case throughout the release life--cycle of a real-world requirements, such as

  • Analysis: Ask it to conduct a comprehensive code analysis and reverse it to a detailed design or implmentation guide in MD format?
  • Productisation and reusability: State your new clinical requirement, and ask it to search through all avilable project repo items to identify anything similar that could be reused or refactored?
  • Implementations: Ask it to do new TIE implmentation for you, by stating specific requirements, such as changing PAS or RIS providers by attaching the new vendor's interface specs and sample messages? 
  • Documentation - requierment spec, design spec, test spec, plans, and services specs: Ask it to do proper requirements or architecture deign docs with embedded drawings for you, per your organisation's template or outlines?
  • Development: Develop a new web app by CSP for a bespoke message search tool on IRIS, or display a nice dashboard in React them connect into IRIS?
  • Tests:  Ask to generate somce auto-executable Unit/System/Integration/RFO/NFR test script coverages for you.
  • Supports:  Ask it to look into the IRIS message logs and identify issues
  • Release Management and Version Control:  Ask it perdiodically to check in mini releases and versions into GitHub and Gitlab, or any legacy CVS you got. You don't even need Git experiences - you just use English.   
  • DevOps: Create a Gitlab CI pipeline that auto provision into EKS or AKS? It could assist well too.


You can add in your own MCP servers for IRIS DB or local resources etc, or even your local RAG and KAG etc APIs wrapped in remote MCPs,  but you don't have to.  Windsurf has its own built-in "agentic AI capabilities", which are actually more generalised than normal enterprises' in-house tools. 

In today's AI/GenAI world, minimalism is not less capabale than those heavily engineered or over-engineered in-house agntic AI solutions, in most cases, which are more costly and difficult to grow with the evolving fonudation models. It's somehow similar to investment probably - most of the actively managed funds actually perform worse than major indexes. 

6. Data Governanceds

Be aware of data compliance requirements as usual. A good practice is to start with your local dev instance outside controlled data environemnts, to make sure only codes, configs and docs are provisioned. Starts with some fun - why not. 
 

7. Outcome quality

The engineering quality depends on yourself, the engineer, more than the LLM. 

One frequent quote is:  Terrence Tao (a Satanford math professor) could use ChatGPT to assit him solving some real math challenges, can we? No, we can't.  We don't even understand the problem, let along solution approaches. 

The same is to Healthcare Interopreability or IRIS implementation. It won't replace anyone by today, (thank God), it only amplifies your specialty.  If you are en experienced archietct, it makes you a lot more efficient - deliver a few design docs with quality in a day, rather than each in a few days or weeks, because you know what the ourcome should look like. If you are a COS specialist, it can code in your style with much more productivity, because you have a lot reuable code repos of high quality from the past.  

Reflections?

  • Intelligence is being outsourced now, just like Computation was being oursourced 15 years ago. It sounds scary. It's another topic whether we trust a handful of unicorns really own the Intelligence as a Service for everybody. 
  • AI/GenAI starts to bridge up the abyss among human and machine languages. That opens all possibilities - some would sound crazy. 
  • This post doesn't touch on the self-evolving software yet. Yet again, it would still depend on our own optimisation targts; your own capability. 
  • By today it still doesn't do COS as well as you would hope (it's not LLM's fault - don't blame it). But LLM also turns out to be a pretty good logical abstractor, so if you have established code bases with good quality, ask it to reuse/refactor/refer to them.  It worked well for me. 
  • Don't over-engineer in-house solutions - think more about strategy while still diving-in for fun.  Minimulism is not necessarily less effective than over-engineered agentic solutions in AI/GenAI world. Sometimes we want to build the boats that surf the seas and get us somewhere, instead of creating rigid structures that stuck on the sea bed waiting for being submerged by rising sea levels, particualrly today's transfomer based LLMs are still bad at engineering certainty and consistency.   


Apologies in advance if anyone else mentioned the above already. It might look too simple, too bare and too basic to start with, without any fancy tricks, yet I had so many discussions on topics, so think it might be helpful to record them just in case some have to be repated all the time. Anyway.  It's pretty hard today to identify anything that can't be assited by AI at all; and it's certainly one of the few posts I typed in manually over the past 2-3 years.    


I assume the 10 means 10 year anniversary - congratulations. This is certainly one of my favorite community - found quick answers to so many issues, and a lot eaiser to edit/publish some quick notes than Medium. 

  

Discussão (0)1
Entre ou crie uma conta para continuar
Artigo
· 38min atrás 4min de leitura

Scripting com .Net Core 10 e IRIS SDK

Um dos recursos mais recentes do .Net Core 10 com C# 14 são os aplicativos baseados em arquivo. Este recurso permite que você execute código C# em um arquivo .cs simples, sem a necessidade de criar uma solution, um projeto ou qualquer uma das estruturas relacionadas.

Por exemplo, você pode criar um arquivo script.cs usando o bloco de notas com o seguinte conteúdo:

Console.WriteLine(“This is a script in c#.”);

Então, na linha de comando ou no terminal, você executa o comando:

dotnet run script.cs

Há muitas informações sobre este novo recurso do .Net 10. Para trabalhar com o IRIS, podemos usar a opção de adicionar referências de pacotes NuGet diretamente dentro do arquivo. Por exemplo, para adicionar o nuget para InterSystems IRIS, você inclui as seguintes linhas no topo:

#:package InterSystems.Data.IRISClient@2.5.0 

using InterSystems.Data.IRISClient;
using InterSystems.Data.IRISClient.ADO;

Isso permite que o arquivo inclua o pacote NuGet do IRIS e use o IRIS SDK. Por exemplo, abaixo está um arquivo .cs com um script para verificar o status de uma produção de Interoperabilidade do InterSystems:

#:package InterSystems.Data.IRISClient@2.5.0

using InterSystems.Data.IRISClient;
using InterSystems.Data.IRISClient.ADO;

// Este script espera o namespace para conectar
string irisNamespace = string.Empty;
if (args.Length > 0)
{
    irisNamespace = args[0];
}

if (string.IsNullOrEmpty(irisNamespace))
{
    Console.WriteLine("Please indicate the namespace to connect");
    return;
}

// Abre uma conexão com o InterSystems IRIS
IRISConnection conn;
IRIS iris;

try
{
    conn = new IRISConnection();
    conn.ConnectionString = $"Server = 127.0.0.1;Port = 1972; Namespace = {irisNamespace.ToUpper()}; Password = SYS; User ID = _system;";
    conn.Open();
    iris = IRIS.CreateIRIS(conn);
}
catch (Exception ex)
{
    Console.WriteLine($"Cannot connect to the interoperability server. Error message: {ex.Message} ");
    return;
}

try
{

    bool? isInteroperabilityEnabledNamespace = iris.ClassMethodBool("%Library.EnsembleMgr", "IsEnsembleNamespace");
    if (isInteroperabilityEnabledNamespace ?? false)
    {
        // Os valores válidos são especificados na documentação
        //https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic.cls?LIBRARY=ENSLIB&CLASSNAME=Ens.Director#METHOD_GetProductionStatus
        // E os valores numéricos podem ser encontrados no arquivo de inclusão EnsConstants.inc
        Func<decimal, string> GetStateDescription = state => state switch
        {
            0 => "Unknown",
            1 => "Running",
            2 => "Stopped",
            3 => "Suspended",
            4 => "Troubled",
            5 => "Network stopped",
            _ => "Unknown state"
        };
        string currentInteroperabilityProduction = string.Empty;
        decimal currentInteroperabilityProductionState = 0;

        IRISReference currentProductionName = new IRISReference("");
        IRISReference currentProductionState = new IRISReference("");

        var status = iris.ClassMethodObject("Ens.Director", "GetProductionStatus", currentProductionName, currentProductionState, 2, 1);

        if (status.ToString() == "1")
        {
            currentInteroperabilityProduction = currentProductionName.GetValue()?.ToString() ?? "";
            currentInteroperabilityProductionState = currentProductionState.GetDecimal() ?? 0;
        }
        if (string.IsNullOrEmpty(currentInteroperabilityProduction))
        {
            // Caso a produção esteja parada, a chamada a GetProductionStatus não retorna o nome da produção
            // neste caso tentamos obter o nome da produção ativa
            currentInteroperabilityProduction = iris.ClassMethodString("Ens.Director", "GetActiveProductionName");
        }

        Console.WriteLine($"Produção ativa neste namespace: {currentInteroperabilityProduction}");

        Console.WriteLine($"Estado da Produção: {GetStateDescription(currentInteroperabilityProductionState)}");

    }
    else
    {
        Console.WriteLine("O namespace não está habilitado para interoperabilidade");
    }
}
catch (Exception ex)
{
    Console.WriteLine($"Erro ao verificar o estado da produção no namespace{irisNamespace}:{ex.Message}");
}
finally
{
    iris.Dispose();
    conn.Close();
    conn.Dispose();
}

A execução deste arquivo com o parâmetro indicando o namespace no qual você deseja verificar o status da produção irá verificar se há alguma produção no namespace e seu status atual:

PS C:\IrisScripting> dotnet run ScriptTest.cs INTBUS
Produção ativa neste namespace: Integrations BUS
Estado da produção: Running
PS C:\IrisScripting>

Este novo recurso abre uma maneira nova e interessante de executar scripts ou pequenos programas para automatizar tarefas a partir da linha de comando.

Discussão (0)1
Entre ou crie uma conta para continuar
Resumo
· 1 hr atrás

Happy 10th Anniversary to the Developer Community

Dear Developer Community Member,

We'd like to congratulate you on the

🎉 10th Anniversary of the Developer Community! 🎉

This milestone marks ten incredible years of growth, collaboration, and shared discovery. And you have been an important part of that journey. Whether you’ve been part of the Community from the beginning or joined along the way, your presence has helped shape what the Developer Community is today.

Your articles, answers, ideas, projects, and conversations have created a dynamic space where developers learn from each other, tackle challenges together, and explore what can be achieved with InterSystems technologies. Your enthusiasm, expertise, and willingness to support others are what make this community truly special.

Here’s to the past decade and to many more years of building, learning, and innovating together. Thank you for being an essential part of this journey.

Visit the anniversary announcement to celebrate with your fellow members and share your birthday wishes for the Developer Community!

Warmest wishes,
The Developer Community Team

Pergunta
· 3 hr atrás

Buy Ozempic Online -Safe Shipping Guaranteed Worldwide

Buy Ozempic For Weight Loss Online USA,UK,CA - Safe Shipping Guaranteed USA,UK,CA- WhatsApp:+49163 0405954 - Website: www.eazmeds.com - Email: info@eazmeds.com

Eaz Meds USA,UK,CA is a trusted USA,UK,CA-based provider of high-quality wellness, personal care, and lifestyle products. We offer a wide range of solutions including pain relief, focus support, sleep aids, weight-management items, skincare essentials, and more.
We provide fast, discreet delivery across the United Kingdom and Europe, with customer satisfaction as our top priority. Browse our collection today and experience professional service, reliable shipping, and premium products from a supplier you can trust.
Treatments for Pain, ADD / ADHD , Erectile Dysfunction, Sleeping, Weight Loss, Urinary Tract Infection, STI Treatment, Hair loss Treatment, Low Fertility Treatment, Benzodiazepines & Skin Care Product all available at www.eazmeds.com

Discussão (0)1
Entre ou crie uma conta para continuar
Artigo
· 4 hr atrás 4min de leitura

IRIS IO Utility: A Complete Guide to Smart Importing in VS Code

Hello Community! 👋
Welcome to the second part of the IRIS IO Utility series. This extension represents my submission for the InterSystems "Bringing Ideas to Reality" Contest 2025 and offers you an intuitive and powerful interface for importing and exporting data directly inside VS Code.

If you find this extension useful, please consider voting for me at the contest!


In the previous article, we covered:

  • Extension overview
  • ODBC driver configuration
  • Export capabilities

Now it’s time to dive into the Import Engine — designed to support:

  • CSV
  • TXT (with any delimiter)
  • JSON
  • XLSX

The extension features a smart inference layer that analyzes the input file and automatically suggests the optimal IRIS table data formats, providing guided, assisted data modeling.


Import Modes — Two Distinct Workflows

The extension supports two distinct scenarios:

  • Create New Table
  • Load into Existing Table

Option A — Import to New Table

This is ideal when:

  • You’re loading a new dataset
  • You want a clean start, with a fresh table and schema
  • You’re in a prototyping or exploratory phase

What happens:

  • The extension reads the file’s data and infers column types automatically
  • You can customize the types if needed
  • You choose a schema and table name
  • You optionally define indexes
  • Then data gets imported — all in a safe, atomic operation

Option B — Import into Existing Table

Perfect for:

  • Updating a table
  • Adding new rows
  • Replacing outdated data

Two actions are available:

  • Append — simply adds new rows from the file
  • Replace — clears the current table data and replaces it with the new data

Before importing, the extension validates that the file’s columns match the target table’s structure. If there are mismatches, it will notify you and abort — protecting you from schema drift or data corruption.


Creating a new table by the IRIS IO utility

Step 1 — Open the Import View and select a file

After connecting to an IRIS instance:

  1. Click the cloud-up arrow icon
  2. Click on the "Create New Table" tab
  3. Choose the file to import

Supported formats are CSV, JSON, TXT and XLSX.

Step 2 — File Analysis & Type Inference

After loading a file, the import engine automatically:

  • Samples the file’s values to guess column types
  • Determines the most likely SQL types
  • Converts them to valid IRIS SQL types
  • Shows sample data beneath each column 
  • Lets you manually override the type if needed

Detected types include:

  • INTEGER
  • BIGINT
  • NUMERIC
  • DOUBLE
  • VARCHAR (255 or 4000 characters)
  • CLOB
  • DATE
  • TIMESTAMP
  • BIT

The result of the analysis is shown in the "Column Type Mapping" section at the bottom of the import webview.

You can change the data type and look at a sample of the data:

Step 3 — Create custom indexes

The extension supports index creation while creating a new table. 

For each column, you can:

  • Check an “Index” checkbox if you know you’ll often query or filter by that column
  • Select index type. Available types are:
    • INDEX
    • BITSLICE
    • BITMAP
    • COLUMNAR (IRIS Analytics)
  • You can edit the index name — if left empty, the extension auto-generates one

Step 4 — Select Schema

When selecting a schema for the new table, you can choose to use a previously existing schema or to create a new schema.

When using a previously existing schema:

  • You can either specify a schema filter (optional) or just hitting the "Load Schemas" button to load all the available schemas within the selected namespace. 

When creating a new schema:

  • You can specify a new schema name in the format MySchemaName_SubSchemaName

Step 5 — Select Table Name

Once schema has been selected, you can specify a new table name. If a table with the same schema and table name already exists, the import will be aborted to prevent accidental overwriting.

Step 6 — Create Table & Import

Click on the Create button to create a new table and import data. 

The extension logs progress in the Output panel, and shows a popup notification when done. 


Loading data into an existing table by the IRIS IO utility

To inject new data into an existing table:

  1. Switch to the “Load into Existing Table” tab
  2. Select your file
  3. Choose target schema and table name
  4. Select import action: Append or Replace

The extension validates that the file’s columns align with the existing table schema and aborts if there are mismatches — safeguarding your data integrity.


Special case of TXT files: define the correct delimiter

When importing TXT files, the extension allows you to specify a custom delimiter to ensure the file is parsed correctly. This is especially useful when working with unconventional separators such as pipes (|), semicolons (;), tabs, or multi-character delimiters. Selecting the correct delimiter guarantees proper column detection and prevents misaligned or corrupted data during the import process.


Final Thoughts

The Import engine transforms IRIS IO Utility from a simple helper into a real data engineering tool.

It handles:

  • Type inference
  • Schema building
  • Index creation
  • Data loading
  • Diagnostic logging

All inside VS Code — clean, discoverable, and convenient.

Together with the Export engine, IRIS IO Utility provides a complete, modern, developer-friendly IO workflow for InterSystems IRIS.

If you enjoyed this feature and find IRIS IO Utility useful, please vote for it in the InterSystems Contest!🚀

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