Pesquisar

記事
· 2025年8月3日 1m read

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
ディスカッション (14)3
続けるにはログインするか新規登録を行ってください
記事
· 2025年8月3日 2m read

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
ディスカッション (1)2
続けるにはログインするか新規登録を行ってください
質問
· 2025年8月2日

How to Edit Photos Like a Pro: Quick Guide (2025)

How to Edit Photos Like a Pro: Quick Guide (2025)

Professional photo editing transforms ordinary images into compelling visual stories. In 2025, the gap between amateur and professional work lies not in expensive equipment, but in systematic post-processing skills and artistic vision not only that if you are in a hurry you can even use a photo enhancer free to transform image quality fast.

Why Photo Editing Matters

With billions of photos captured daily, editing separates snapshots from professional imagery. Modern consumers expect visually compelling content across all platforms—from real estate listings to social media posts. Professional editing creates images that stop viewers mid-scroll and evoke emotional responses.

The 8-Step Professional Method

1. Prepare Before Editing

Back Up Everything: Follow the 3-2-1 rule—three copies on two media types, one off-site.

Cull Ruthlessly: Select only your best shots. Wedding photographers might capture 3,000 images but deliver 800. AI tools like Aftershoot can speed this process by analyzing focus, expressions, and composition.

Organize Files: Use consistent folder structures (2025/01-January/Client_Name) and add metadata for searchability.

Set Up Workspace: Calibrate your monitor with tools like X-Rite ColorMunki for accurate colors. Edit in neutral lighting conditions.

2. Choose the Right Software

Beginners: Start with VSCO, Snapseed, or Afterlight for intuitive interfaces and quality results.

Professionals: Adobe Lightroom for RAW processing and organization; Photoshop for pixel-level editing and compositing.

AI-Powered: Luminar Neo offers one-click sky replacement and automatic masking, but maintain creative control over artistic decisions.

3. Basic Image Adjustments

Import Smart: Use Lightroom's copy function, apply presets during import, and add metadata automatically.

Crop and Straighten: Apply rule of thirds, ensure adequate breathing room around subjects, and straighten horizons using grid overlays.

Fix Exposure: Start with shadows, recover highlights, set white/black points, then adjust overall exposure. Use tone curves for film-like contrast.

Correct White Balance: Use the eyedropper on neutral areas, or adjust temperature/tint sliders. Remember white balance affects mood—warm tones feel cozy, cool tones suggest modernity.

4. Enhance Color & Tone

HSL Panel Mastery: Adjust specific color ranges without affecting others. Orange slider controls skin tones, blue adjusts skies.

Vibrance vs. Saturation: Vibrance protects skin tones and looks more natural; saturation affects all colors equally and can appear artificial.

Color Grading: Create signature looks—orange/teal for cinematic feel, lifted blacks for film aesthetic, or bright/airy for wedding photography.

5. Remove Unwanted Elements

Spot Removal: Use Lightroom's heal mode for blending, clone for exact replication. Work at 100% zoom with appropriately sized tools.

AI Object Removal: Photoshop's Generative Fill excels with simple backgrounds. Always refine AI results manually for professional quality.

6. Detail Enhancement

Sharpening Strategy:

  • Amount: 40-80 depending on subject
  • Radius: 0.8-1.8 for most applications
  • Detail: Lower for portraits, higher for landscapes
  • Masking: 60-80 to protect smooth areas

Noise Reduction: Address color noise first, then luminance. Balance detail preservation with smoothness based on output use.

7. Creative Effects & Export

Use Presets Wisely: Start with presets but always customize for each image. Create your own for consistency.

Subtle Effects: Light vignettes (-15 to -25), film grain (15-30 amount), and gentle glow effects enhance without overwhelming.

Export Smart:

  • Web: JPEG, sRGB, 1200px wide, 70-85% quality
  • Print: TIFF, Adobe RGB, 300 DPI
  • Social: Platform-specific dimensions, under 1MB

8. Develop Your Style

Study Professionals: Analyze work by Annie Leibovitz (dramatic contrast), Jimmy Chin (natural authenticity), or Peter McKinnon (cinematic grading).

Maintain Consistency: Develop coherent color temperature preferences, contrast characteristics, and saturation approaches across your portfolio.

Batch Efficiently: Edit one master image, then sync settings to similar photos. Use auto-sync for consistent lighting conditions.

AI vs. Manual Editing

Trust AI For:

  • Technical corrections (lens distortion, noise reduction)
  • Time-consuming tasks (sky replacement, basic object removal)
  • Batch processing initial adjustments

For more info visit Enhanceit

Maintain Human Control For:

  • Artistic vision and creative decisions
  • Brand consistency and personal style
  • Emotional storytelling through color and tone
  • Client-specific requirements

Best Practice: Use AI as a sophisticated assistant, not a creative replacement. Let AI handle technical work while you focus on artistic decisions.

Common Mistakes to Avoid

  • Over-editing: Excessive HDR, unnatural saturation, obvious sharpening
  • Poor organization: Losing files due to inadequate backup systems
  • Ignoring color management: Inconsistent colors across devices
  • Preset dependency: Relying on filters without customization
  • Skipping fundamentals: Jumping to effects before mastering basics

Quick Quality Checklist

Technical: Proper exposure, straight horizons, sharp focus ✓ Color: Natural skin tones, appropriate white balance ✓ Cleanup: Removed distracting elements, dust spots ✓ Style: Consistent with your aesthetic, appropriate for use ✓ Output: Correct format, resolution, and color space

Key Takeaways

Professional photo editing combines technical precision with artistic vision. Master the fundamentals before pursuing advanced effects. Develop a signature style while remaining adaptable to different subjects and client needs. Use AI image enhancing tools strategically but maintain creative control.

Most importantly, editing should enhance your photographic story, not replace it. The best edits feel invisible—they draw viewers into the image rather than calling attention to the processing.

Practice consistently, study professional work, and gradually develop your unique aesthetic. With systematic approach and patience, you'll transform from casual editor to professional storyteller whose images create lasting emotional impact.

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
記事
· 2025年8月2日 3m read

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.

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
お知らせ
· 2025年8月2日

InterSystems Open Exchange Applications Digest, July 2025

Hello and welcome to the July 2025 Open Exchange Recap.
General Stats:
26 new apps in July
527 downloads in July
1,116 applications all time
41,913 downloads all time
3,275 developers joined
New Applications
iristest-html
By Ashok Kumar T
toolqa
By André Dienes Friedrich
metabase-iris-driver
By Siddardha Reddy Sanagala
☤ Care 🩺 Compass 🧭
By Brad Nissenbaum
PyObjectscript Gen
By Antoine Dhollande
iris-python-article
By Guillaume Rongier
wsgi-to-zpm
By Eric Fortenberry
IrisTest
By Ashok Kumar T
dc-artisan
By Henrique Dias
ZPretty-upd
By Robert Cemper
Alchemit Laboratory
By Nancy Martinez
Global-Inspector
By Robert Cemper
typeorm-iris
By Dmitry Maslennikov
iris4word
By Yuri Marx
dataset-sample-split
By Luciano Kalatalo
iris-telemetry-sample
By Yuri Marx
iris-message-search
By sara aplin
snipforge
By Gabriel Santos
Alchemit Blood Bank
By Roksana Komolibio
IPM Explorer for VSCode
By John McBride
addsearchtable
By XINING MA
Testing Lab
By Roksana Komolibio
iris-user-management
By Evgeny Shvarov
templated_email
By Nikolay Solovyev
testcontainers-iris-node
By Dmitry Maslennikov
iris-mock-server
By Rodolfo Moreira dos Santos
New Releases
Interoperability REST API Template by Andrew Sklyarov
v1.0.1
Added performance sensors and failed/successful request counts. All metrics are provided in OpenMetrics format. So, you can grab it with Prometheus and visualize it in Grafana. Details about setting up monitoring in the IRIS can be found here. Don't forget to check the roles of api/monitor application and to enable custom sensors in the IRIS terminal:
zn "%SYS"
d ##class(SYS.Monitor.SAM.Config).AddApplicationClass("REST.Core.Monitor", "YOUR_NAMESPACE")
v1.0.2
Added simple implementation of rate limits. Now, you can set up the maximum number of requests per minute for your APIs. Just set the value by the route key in the lookup table RESTRateLimits, similar RESTRoutes table. Also, you can use a wildcard (*) as a method name: Sample.API:*
Tip: If you need a more flexible and enterprise solution, I advise you to look at API Manager
shvarov-persistent by Evgeny Shvarov
v1.0.2
property LastUser added
intersystems-iris-dev-template by Evgeny Shvarov
v2.1.1
Added system name
IRIS Dev Template
to the Management Portal via merge.CPF settings
objectscript-docker-template by Evgeny Shvarov
v1.2.1
Added System name ObjectScript Docker Template via merge.cpf Thanks to Dmitry Maslennikov
MDX2JSON by Eduard Lebedyuk
v3.2.44
FIX: fixed issue when series were processed even they filtered out
v3.2.47
Fixed 3.2.44
Embedded Git by Pravin Barton
v2.12.2

[2.12.2] - 2025-07-08

Fixed

  • Fixed importing Lookup Tables that do not already exist (#791)
  • Fix initial import of settings file that has yet to be imported (#794)
  • Fixed syncing IRIS with files after pull to diff in the intended direction (#802)
CubeEventMonitor by Samuel Duncan
v1.0.3
remove dsw dependency to prevent warnings on install - see https://github.com/intersystems-community/DeepSeeWeb/issues/443. Users who wish to use DeepSeeWeb should install that module separately
DeepSeeWeb by Anton Gnibeda
v4.0.22
  • now tuples limited for only ones that defined in data properties even for drilldown (#458)
v4.0.23
  • support multiple filters on widgets (#461)
v4.0.24
  • fixed issue with total function and pivot (#459)
iris-vector-rag by Thomas Dyar
v1.0.1
Minor update to docs
InterSystems Testing Manager for VS Code by John Murray
v2.0.0
Now able to use Test Coverage Tool to generate and display coverage of your tests.
v2.0.1
Now shows attribution of coverage to the test classes that ran lines in a class.
v2.0.2
  • Fix coverage marking when "objectscript.multilineMethodArgs": true
  • Improve method range highlighting accessed from coverage tree
IRIS internal WebSocket Client by Robert Cemper
v1.1.1
  • make timeouts longer
  • replace broken wenterminal by iTERM
SPOOL-demo by Robert Cemper
v1.0.5
  • replace broken webterminal by iterm
  • adjust docker-build
CPIPE by Robert Cemper
v1.1.3
  • broken webterminal replaced by iterm
  • docke-compose adjusted
character-slice-index by Robert Cemper
v0.0.3
  • replace broken webterminal with iterm
  • clean docker-compose
Collection-Indexing-and-Query by Robert Cemper
v1.0.7
  • replace broken webterminal with iterm
  • clean docker-compose
Row Storage vs. Columnar in IRIS native by Robert Cemper
v0.0.2
  • replace broken webterminal with iterm
  • clean docker-compose
  • adjust README
Code-Scanner by Robert Cemper
v0.0.6
  • replace broken webterminal with iterm
  • clean docker-compose
Vector-inside-IRIS by Robert Cemper
v0.0.2
  • replace broken webterminal with iterm
  • clean docker-compose
geo-vector-search by Robert Cemper
v0.0.2
  • replace broken webterminal with iterm
  • clean docker-compose
  • clean iris.script
foreign-tables by Robert Cemper
v0.0.2
  • replace broken webtermina with iterm
  • clean docker-compose
interoperability-embedded-python by Guillaume Rongier
v3.5.2
  • Bump version to match PyPI
v3.5.3

[3.5.3] - 2025-08-01

Fixed

  • Fix a regression test message interoperability where list of messages was not displayed correctly in the UI
    • This was caused by MessageHandler changes in version 3.5.1
  • Minor fixes for remote migration support
Light-weight-EXCEL-download by Robert Cemper
v1.1.2
Replace broken web terminal with iterm
M-N-external-JSON by Robert Cemper
v0.0.2
remove broken webterminal
Object-based-M-N-to-JSON by Robert Cemper
v1.0.2
Replace broken webterminal with iterm
Wsock-EmbeddedPy by Robert Cemper
v0.1.2
replace broken webterminal with iterm clean docker-compose
SSH-for-IRIS-container by Robert Cemper
v0.0.4
  • replace broken webterminal with iterm
  • verify operation
Native-API-for-ObjectScript by Robert Cemper
v1.0.4
  • replace broken webterminal by iterm
  • clean docker-copose
native-api-command-line-extension by Robert Cemper
v0.0.3
  • replace broken webterminal with iterm
  • clean docker-compose
native-api-command-line-py-client by Robert Cemper
v0.0.6
replace broken webterminal by iterm
Most downloaded
Intersystems-Monitoring
By Teunis Stolker
WebTerminal
By Nikita Savchenko
MDX2JSON
By Eduard Lebedyuk
iris-web-swagger-ui
By Semion Makarov
DeepSeeWeb
By Anton Gnibeda
zpm-registry
By Evgeny Shvarov
passwordless
By Sergey Mikhailenko
Test Coverage Tool
By Timothy Leavitt
ObjectScript-Math
By Peter Steiwer
July, 2025Month at a GlanceInterSystems Open Exchange
1 Comment
ディスカッション (1)1
続けるにはログインするか新規登録を行ってください