Pesquisar

Resumo
· Ago. 4

【週間ダイジェスト】 7/28 ~ 8/03 の開発者コミュニティへの投稿

Artigo
· Ago. 3 5min de leitura

Do Barro à Obra-Prima: Conheça o dc-artisan e Crie Prompts com Qualidade

artisan cover

Se você já viu um artesão em ação — seja um ceramista moldando o barro até virar arte ou um luthier transformando madeira bruta em um violão extraordinário — sabe que a mágica não está nos materiais, e sim no cuidado, na técnica e no processo. Tenho uma guitarra feita por um luthier que me inspira todos os dias. Mas, vou confessar, criar algo assim é um talento que não tenho.

2 Comments
Discussão (2)2
Entre ou crie uma conta para continuar
Artigo
· Ago. 3 1min de leitura

WARNING: Bug in IRIS Native API

Reviewing my published packages, I identified a nasty bug in IRIS Native API

  • There is a method in  %Net.DB.Iris named function ()
  • It's equivalent to  ObjectScript $$label^routine(param) 
  • It used to work fine 2 years ago, when I published my command-line-extension packages
  • Now it is broken since at least 1 year and throws <PROTECT>
  • I identified it for ObjecScript, Java, Python, Node.js
  • It is reported as WRC# 1002589
  • For all 4 cases, I also verified a workaround
    • Instead of calling an ObjectScript Function you call a Classmethod
    • It's by %Net.DB.Iris ClassMethodValue(...)
    • And you have to wrap your ObjectScript Function into some Class 
    • Might look simple, but quite some effort related to IPM versions and other

I wish you were not infected by that surprise.
 

14 Comments
Discussão (14)3
Entre ou crie uma conta para continuar
Artigo
· Ago. 3 2min de leitura

Why It's Time for a TrakCare Techno-Functional Application Specialist Certification

Working in healthcare IT as a young developer, especially on InterSystems TrakCare, you quickly realize one thing: it’s not just about HL7 messages or backend integrations. A huge part of making TrakCare work smoothly for hospitals comes down to how it’s configured, customized, and supported on the application side.

That’s where people like me come in—techno-functional developers who understand both the tech and how it impacts actual hospital workflows.

We’re Not Just Techies (or Functional Consultants)

Our role sits right in the middle. We're the ones:

  • Customizing modules like Pharmacy, Billing, and EMR to fit how hospitals actually run
  • Writing ObjectScript logic to add validations or automation
  • Enhancing front-end screens using CSP, Zen, or IRIS
  • Mapping workflows with clinical and billing teams to reflect real-life processes
  • Troubleshooting day-to-day issues that aren't always about interfaces—they're about experience

And yet… there is currently no dedicated certification pathway to recognize it.

The Certification Gap

The current TrakCare Technical Integration Specialist exam is great if you’re working on HL7v2, FHIR, SDA3, etc.—basically anything interoperability-related. But it doesn’t really reflect the work we do in application config, front-end behavior, or module workflows.

So despite being hands-on with TrakCare every day, people in roles like mine aren’t recognized or certified. That makes it harder for hospitals to find skilled talent and for us to show our value.

Why a New Track Just Makes Sense

A TrakCare Application Specialist certification would be a game-changer for those of us who:

  • Have at least 3 years of hands-on experience with TrakCare modules
  • Can configure workflows, understand module dependencies, and speak both clinical and tech
  • Are comfortable with ObjectScript, CSP, and tweaking UI behaviors
  • Act as the bridge between IT and real users

The valuable work of techno-functional specialists deserves formal recognition within the TrakCare ecosystem.

TrakCare is growing fast, and so is the demand for developers who get both the tech and the healthcare side. A dedicated certification for Techno-Functional Application Specialists would fill a real gap—and help highlight the critical work we do every day to keep systems running and users happy.

1 Comment
Discussão (1)1
Entre ou crie uma conta para continuar
Artigo
· Ago. 2 3min de leitura

Criando documentos avançados do Word com IRIS

Documentos Word são amplamente utilizados no mercado. Os usuários frequentemente criam contratos, memorandos, currículos, relatórios, análises e outros documentos que podem exigir dados de ou capturados pelo InterSystems IRIS. No entanto, o IRIS não possui uma API, SDK, biblioteca ou adaptador para isso. Essa limitação não existe mais. 

A nova biblioteca Open Exchange iris4wordd (https://openexchange.intersystems.com/package/iris4word)oferece um SDK ObjectScript onde o desenvolvedor passa qualquer %DynamicObject como parâmetro, um arquivo de template Word e, em seguida, recebe um documento pronto, com a estrutura e formatação definidas em seu template.


Para usar o iris4word

Este artigo usará uma API REST para obter o conteúdo, mas também é possível consultar o banco de dados. Para instalar o iris4word e o exemplo que o utiliza, siga estas etapas:

  1. Se você usa IPM/ZPM: zpm:USER>install iris4word
  2. Se você usa Docker: 
    1. git clone https://github.com/yurimarx/iris4word.git
    2. docker-compose up -d --build
  3. Abra o Postman (para executar o exemplo da API REST)
  4. Importe a coleção de exemplos de (https://raw.githubusercontent.com/yurimarx/iris4word/refs/heads/master/iris4word.postman_collection.json): 
  5. Faça o upload do arquivo de template template.docx (no caminho sample/template.docx deste repositório ou de https://raw.githubusercontent.com/yurimarx/iris4word/refs/heads/master/sample/template.docx). Para fazer o upload, preencha o campo file na aba Body:
  6. O processo de upload enviará o template para o servidor para ser usado pelo iris4word.
  7. Abra o "2. Download Word Document" e copie e cole no corpo este conteúdo JSON:
    {
      "company": {
        "name": "ACM Ltda.",
        "address": "Main Street, 123",
        "city": "New York",
        "state": "NY"
      },
      "projects": [
        {
          "name": "System Development X",
          "beginDate": "2024-01-01",
          "endDate": "2024-06-06",
          "team": [
            {"name": "John Star", "role": "Senior Developer"},
            {"name": "Marie Loo", "role": "BDM"}
          ],
          "tasks": [
            {"description": "Requirements", "status": "Done"},
            {"description": "Development", "status": "Doing"}
          ]
        },
        {
          "name": "ERP Development Y",
          "beginDate": "2024-03-03",
          "endDate": "2025-12-12",
          "team": [
            {"name": "Peter Rogers", "role": "Project Manager"},
            {"name": "Robert Plant", "role": "ERP Specialist"}
          ],
          "tasks": [
            {"description": "ERP configuration", "status": "Done"},
            {"description": "User training", "status": "Doing"}
          ]
        }
      ],
      "principalContact": {
        "name": "Carlos Olivera",
        "email": "carlos.olivera@company.com",
        "phone": "+1 555 555-555"
      }
    }
     
  8. No botão Send, selecione a opção "Send and Download":
  9. Veja os resultados:
  10. Compare o conteúdo JSON com o template.docx e veja as marcas e tags usadas.

Nos bastidores

É muito fácil, com o arquivo de template salvo em /tmp/template.docx, basta chamá-lo:

ClassMethod DownloadDoc(template As %String) As %Status
{
    Set tUUID = $System.Util.CreateGUID() 
    Set filePath = "/tmp/"_tUUID_".docx"
    Set jsonContentString = {}.%FromJSON(%request.Content)
    Set sc = ##class(dc.iris4word.WordUtil).GenerateWordFileFromJSON(jsonContentString.%ToJSON(), "/tmp/"_template_".docx", filePath)

    Set %response.NoCharSetConvert=1
    Set %response.Headers("Access-Control-Allow-Origin")="*"
    Do %response.SetHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document")
    Do %response.SetHeader("Content-Disposition","attachment;filename="""_tUUID_".docx"_"""")
    
    Set stream=##class(%Stream.FileBinary).%New()
    Set sc=stream.LinkToFile(filePath)
    Do stream.OutputToDevice()
    
    Return sc
}

O ClassMethod ##class(dc.iris4word.WordUtil).GenerateWordFileFromJSON recebe os dados na forma de um %DynamicObject, o caminho do template do Word e o caminho do arquivo onde o documento Word final deve ser criado. Agora você tem um arquivo Word para enviar ao usuário como resposta. Muito fácil!!

No próximo artigo, explicarei as tecnologias usadas para criar o iris4word e como criar templates complexos para gerar qualquer tipo de documento Word. Até breve.

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