New post

Pesquisar

Question
· Dec 12, 2024

Mirror entered trouble state

Dear community, my company use intersystems iris, a old version of 2019 and centos 7.9

At the moment, we are faced with a rather strange luck of iris.

Every day during working hours, we receive a error that iris primary cannot transfer the journal to the backup node.

We have availability monitoring, these errors do not affect availability in any way, but I still wanted to analyze this error.

I understand that the severity of this error is only 1, but Can someone share a diagnostic method this error?

12/12/24-15:48:43:705 (20263) 1 MirrorServer: Unlinking with journal daemon at 0x09db5294, returning to catchup state.

12/12/24-15:48:43:705 (15734) 1 MirrorServer: Mirror entered trouble state (backupjrnend = 138522624)

12/12/24-15:48:43:705 (15734) 1 MirrorServer: Mirror id #0 set trouble state. Failed to send journal data through 138555856 for file #51647 (cur = 51647/138522624)within timeout period. Disconnected from journal system

12/12/24-15:48:43:762 (20288) 0 MirrorServer: Ping ack received from unlinked backup...(repeated 1 times)

12/12/24-15:48:43:762 (20288) 0 MirrorServer: Mirror trouble state cleared. Switched to Agent Controlled failover.

12/12/24-15:48:43:763 (20288) 0 MirrorServer: Ping ack received from unlinked backup

12/12/24-15:48:43:805 (20263) 0 MirrorServer: Client up to date, linking with journal daemon @ 0x09db5294

12/12/24-15:48:43:806 (20263) 0 MirrorServer: Sending Prepare to Switch Modes

12/12/24-15:48:43:807 (20263) 0 MirrorServer: Switched from Agent Controlled to Arbiter Controlled failover

1 Comment
Discussion (1)2
Log in or sign up to continue
Question
· Dec 12, 2024

%ExistsId and %OpenId methods for linked tables in FHIR Facade do not work

My IRIS instance is connected to a Postgres database using SQL Gateway and linked tables.
One of these tables is projected to the Patient class. I want to select a record from this table by ID and convert it to a FHIR resource using the %ExistsId and %OpenId methods.
I noticed that if I call these two methods from the console, the record is always found.

1 Comment
Discussion (1)1
Log in or sign up to continue
Article
· Dec 12, 2024 2m read

Lookup Data Tables with TTL per entry and Purge Cleanup Task

Like many others probably find themselves, we were stuck doing live data mapping in our Interface Engine that we really didn't want to do, but had no good alternative choice. We want to only keep mappings for as long as possibly needed and then purge expired rows based upon a TTL value. We actually had 4 use cases for it ourselves before we built this. Use cases:

1. First ORU result with unique OBR-21 gets converted to a MDM^T02 event, any later ORU with the same OBR-21 value within 30 days (max workflow possible) gets sent as MDM^T08 to replace the existing document link.
2. CPOE ORM gets generated from an ORU result. The resulting vendor does not accept Filler Order Numbers, and the Interface Engine must clear the field. The CPOE interface must have the Filler Order Number. Cannot replace Placer Order Number with Filler Order Number as Clinician techs need to reference the Placer Order Number inside the vendor devices. Interface Engine then needs to map Placer Order Numbers to Filler Order Numbers to add in the missing values required for CPOE
3. Resulting vendor cannot change procedure after exam begun, and results filing back must be for the latest procedure. To avoid manually working these every time they happen, the Interface Engine needs to create a map for any new procedures after Exam Begun notification and map results to the new procedure. Max time to keep these procedure mappings is 72 hours.
4. Vendor cannot handle XO order update for change procedure ORM message. Instead they expect a cancel (CA) for the old procedure and a new (NW) or update (XO) for the new procedure. To create the cancel message, the Interface Engine needs to persist a map of the order number to procedure. When a procedure update message comes through, the Engine will lookup the previous procedure, send out the cancel order, then update the persisted mapping and send out the order update with the new procedure. There will be a max time that should usually be possible between the new order, and a change procedure later.

Since these scenarios will maintain live dynamic keys and values, we want to only keep mappings for as long as possibly needed and then purge expired rows. I looked at the LookupTable class, but it does not provide any kind of TTL functionality. So we wrote our own class dubbed LookupData.

https://codefile.io/f/vEgnWzafOx

This is my first class I developed from a blank slate. I am open to constructive criticism on how this can be made better. I am sure there are better ways to do some of the methods, so I welcome your feedback.

Discussion (0)1
Log in or sign up to continue
Question
· Dec 12, 2024

Permanently Deletes all the commands shows inline recall History (:h[istory] )

Hello Community,

Is there any way to permanently clear all the commands displayed in the line recall History. The :clear deletes all the commands in that particular process/recall buffer.

Thanks!

4 Comments
Discussion (4)1
Log in or sign up to continue
Article
· Dec 11, 2024 2m read

第四十七章 终端输入 输出 - DTM PC 控制台的助记符空间

第四十七章 终端输入 输出 - DTM PC 控制台的助记符空间

DTM PC 控制台的助记符空间

IRIS 提供 IRIS 例程 %XDTM 来匹配开发 DTM 应用程序时使用的助记符。该助记词空间可用,但未设置为终端默认助记词空间。如果您将为 DTM 创建的应用程序移植到 IRIS,可以:

Discussion (0)1
Log in or sign up to continue