Question Julian Matthews · Apr 11

Hey everyone.

I'm currently looking at a process where we're utilising the Class Ens.StreamContainer, and was looking to do some deletions outside of any purge routines.

Having been burned before, I wanted to make sure that deleting the container also deletes the contents within.

From looking in the class, the  %OnDelete ClassMethod appears to be removing an index from a search table and nothing more.

Am I looking in the right place, or is there a extended class for Ens.StreamContainer that does in fact delete the %Stream.Object
contained within the Ens.StreamContainer?

0
0 0
Question Julian Matthews · Jul 16, 2024

Hi all.

Recently, I have noticed Scott Roth's mission to resolve issues with Orphaned messages with a lot of focus on prevention, and I envy that level of dedication.

Not wanting to be left out, this has sparked an interest in checking my environments for orphaned messages. Amongst a few different posts on the subject, I came across this post from Suriya Murugan in 2016 that included an interesting class in a Github Gist that seems to be built to do a deep dive into the identification and cleanup of Orphaned Messages.

0
0 0
Question Julian Matthews · Apr 18, 2024

Hi everyone.

I have a function that may end up being called from a number of transformations at the same time, and within the function there's some Embedded SQL to first check if a local table has an entry, and then adds the entry if it doesn't exist.

To prevent a race condition where the function is called by two transformations and they both end up attempting to insert the same value, I'm looking to use the table hint "WITH TABLOCK" on the insert, but this seems to be failing the syntax checks within vscode.

Are table hints supported with embedded sql?

0
0 144
Question Julian Matthews · Apr 8, 2024

Hi everyone.

Is there a sensible approach to having a lookup table in Namespace A, and then accessing this from Namespaces B, C, D (etc)?

I'm trying to avoid creating a Global mapping of the lookup table global (^Ens.LookupTable) as I fear that it would then link all other lookups in that global and lead to some unexpected behaviour, but would be open to trying something in this realm if it's the best option.

Another approach I have considered is creating a custom lookup function that is run from the secondary namespaces that does some namespace hopping, but it feels messy. Something like:

0
0 288
Question Julian Matthews · Dec 21, 2023

Hi everyone.

I have a few processes where I rely on them being triggered by a schedule to run, and in the past I have relied on the following setup:

The Scheduled Task is a custom class that runs a minimal amount of code to simply create and send the specified service an Ens.Request, and equally the Service is also a custom class that simply passes the Ens.Request to the Process for it to kick the process off.

8
0 543
Discussion Julian Matthews · Mar 23, 2023

Hi everyone!

If you are working with IRIS 2021+ and you remove all of the built in entries for External Language Servers, there is an unexpected consequence that may prevent you from running an installer to upgrade your version of IRIS. This does appear to be a bug which has been raised with WRC, however there are some people that may have recently removed these settings and then will soon be upgrading their environment and could face this same issue.

1
0 288
Article Julian Matthews · Mar 17, 2023 7m read

Introduction

Say you have a receiving system that accepts HL7 and provides error messages in field ERR:3.9 in the ACK it returns. You require a different reply code action depending on the error message, however the Reply Code Actions settings for the operation do not provide this level of granularity. One option could be to create a process that takes the ACK and then completes the action you were expecting, however things can get a bit messy if the action is to retry the message, especially when trying to view a message trace.

2
1 788
Question Julian Matthews · Jan 16, 2023

Hi everyone.

I have a use case where I'm using embedded SQL within a Business Process to interact with a SQL table. However, when it comes to deployment into our production, the table wont form part of the deployment package created from the production.

Beyond manually creating the table on the production system, is there a standard way of ensuring that a table needed for a class is created during deployment?

2
0 195
Question Julian Matthews · Oct 25, 2022

Hi all.

I have a scenario where I am receiving NACKs and I'd like to adjust the error handing of the operation based on the content of the NACK.

For example, I could receive the following and want to move onto the next message:

MSH| ^~\&|||||20221025083135.489+0100||ACK ^A02^ACK|9271|D|2.5.1
MSA|AE|1664378390234
ERR|||207 ^Application internal error ^HL70357^^^^^^Cannot transfer patient, encounter is cancelled.|E

However, I could also receive the following and want to keep retrying:

1
0 354
Question Julian Matthews · Sep 28, 2022

Hi all.

I have setup a HL7 Operation using the HTTP adapter, and I'm getting what seems to me as an unusual response. When sending a sample message to the operation, I am getting a nested ACK. For example:

MSH|^~\&|||xxx|xxx|202209230806||ACK^HTTP^200|00|D|2.1|1
MSA|AA|RWSD7V5iuEC5F6zscDWz|HTTP ACK 'HTTP/1.1 200 OK' : MSH|^~\&|yyy|yyyy|xxx|xxx|20220923080633||ACK^A01|1663916793965||2.3||||||
MSA|CR|RWSD7V5iuEC5F6zscDWz|Error Message Goes Here. 

The adapter is spotting the positive ACK in the first part of the message, but the second part is the actual response I need the adapter to be evaluating.

1
0 189
Question Julian Matthews · Sep 16, 2022

Hi all.

I'm currently looking at a use case where I need to take a Stream, and then encode the contents as a Base64 Stream. This is currently achieved with a snippet of code that has previously been placed in multiple classes within this particular environment, and relied on the dotnet gateway (which suffers with a bug in 2022.1, corrected 2022.1.1).

4
0 1918
Question Julian Matthews · Apr 1, 2022

Hi everyone.

I was wondering how people manage viewing messages that use a character encoding incompatible with the Management Portals use of UTF-8.

For example, a message that looks like this in Windows-1252/Latin1:

Will display as this under the message "Full Contents"

and this under the "Raw Contents"

*EDIT*

I tripped myself up early on, but this covers how I went wrong - https://www.i18nqa.com/debug/table-iso8859-1-vs-windows-1252.html

6
0 940
Question Julian Matthews · Nov 3, 2021

Hey everyone.

I was wondering if anyone had come across a way of reformatting ObjectScript within VSCode.

I have the various Intersystems Extensions installed (InterSystems Language Pack,  InterSystems ObjectScript,  InterSystems ObjectScript Extension Pack,  InterSystems Server Manager) but a formatter does not seem to be something included within this variety of extensions.

16
0 932
Question Julian Matthews · Sep 17, 2021

Hey everyone.

I was curious if anyone had any success/tips with regards to using a global or a system parameter/property to control the behavior of a transform or process/operation.

Is there a parameter I can currently reference from the system that can be used for an if/else, or am I best off creating a simple Global and setting it according to the environment I am in?

2
0 182
Article Julian Matthews · Jul 21, 2021 4m read

Over the years, I have found myself needing to create multiple HL7 messages based on a single inbound message. Usually these take the form of an order or result from a lab. Each time I have approached it, I have tried to start from scratch under the belief that the previous attempt could have been done better.

Recently, the need arose again and I was able to create a solution that I wasn't ashamed of. My main concern was that I would always either find myself getting buried in a BPL, or use ObjectScript and attempt to edit messages using the SetValueAt Method for the HL7 Message Class.

Problem

1
1 1344
Article Julian Matthews · Apr 14, 2021 3m read

Hey everyone.

I came across some issues when setting up Freeze and Thaw batch scripts for use with VMWare in a Windows ecosystem, and I wanted to share what I found in the hopes it can help others. This was undertaken in an environment using Healthconnect 2019.1.x.

IRIS not up (2)

It seems that the sample script from the documentation in my my case would tell me that the environment was not running (despite it running). To correct this, I provided the filepath to the Mgr location as so:

2
0 1278
Question Julian Matthews · Apr 9, 2021

Hey everyone.

I have been revisiting our backup strategy, and spotted that IRIS supports VSS (Volume Shadow Copy Service) in Windows. This is quite attractive as an approach, as it automatically calls the external freeze and thaw commands.

However when calling these manually, there's quite a few parameters that can be set, and the documentation around VSS only states that the freeze/thaw commands are called.

Is there a way of controlling the parameters used, or at the very least know what the defaults are?

1
0 544
Question Julian Matthews · Apr 1, 2021

Hey everyone.

I'm attempting to convert a date from UTC to my locale, and for some reason I can't seem to get the Ensemble ConvertDateTime Utility Function to detect the timezone to then convert. I'm hoping it's just a syntax issue, and that someone can show me the error of my ways.

2
0 538
Question Julian Matthews · Mar 17, 2021

Hey everyone.

I have a process where I create a new %Stream.FileCharacter object, specify the filename (including it's path), write data to the stream, and then save. However for some reason, if the user account does not have write access to the directory, the %Save method is still returning true even though it was unable to actually write the file to the folder.

The location is a UNC path, and I'm wondering if this is tripping me up?

3
0 389
Article Julian Matthews · Feb 9, 2021 2m read

Hey everyone!

I recently learnt something new while working with WRC on an issue, and I wanted to share with everyone on the off chance it could help someone else.

Scenario:

Files are being inexplicably written to a folder on your server and, due to the number of files in the folder and general system throughput, it is not possible to work through the files to track down the source.

0
0 419
Question Julian Matthews · Nov 11, 2020

Hey everyone.

It seems that my email address being updated with Intersystems has created a new account on here, and when I attempt to login with the old email address it logs into the new account meaning it looks like I have no post history.

Has anyone else faced this and have any advice on how to resolve it or any thoughts on if this is likely to affect other services like Learning and Global Masters?

3
0 165
Question Julian Matthews · Nov 5, 2020

Hey everyone.

I have noticed that my backup mirror is warning that the MirrorDatabaseLatencyTime is having a bad time (time in ms is 3000, and warnvalue is 3000). While I look into what may be causing this latency between the two servers, I was considering if reducing the size of the journal files would improve this value in any way.

My assumption is that reducing the file size would mean that the frequency of the journal files being created would be increased, but the reduced size would mean that the transfer and application of each file would be reduced.

Has anyone had experience in this area?

2
0 855
Question Julian Matthews · Jul 7, 2020

Hey everyone.

I have a use case where I need to write files to a handful of locations, and 2-3 subfolders in each location.

My plan was to extend EnsLib.File.PassthroughOperation and then pass  that operation the file and the subfolder details, and then have an operation per destination.

Has anyone done anything similar and can highlight any pitfalls I may be about to make?

3
0 344
Question Julian Matthews · Apr 27, 2020

Hi all.

A long time ago I enabled Activity Monitoring to be able to save myself headaches in the future when looking at the performance of various message routes through our productions.  It's served it's purpose of answering questions on how many messages we process a week etc but I had not had the chance to really dig down into the stats for specific message types or destinations to pin point issues.

That time has come, as I have an outbound that periodically queues up without much rhyme or reason.

3
0 326
Question Julian Matthews · Apr 17, 2020

Hi all.

I working with ORU messages where I'm only interested in routing the message to an operation where any of the contained OBR:UniversalServiceIdentifier.identifier segments contains certain values.

The problem I'm facing is that the OBRs are nested within a repeating ORCgrp, which is then nested in a repeating PIDgrpgrp (although the source only ever uses a single PIDgrpgrp).

Is there a simple way of achieving this without a massive OR for each possible ORCgrp value?

4
0 675
Question Julian Matthews · Nov 20, 2019

Hi all.

I'm currently working with a system needing results from a lab system, and they can only accept a single OBR per R01 message.

The R01s from the source have multiple OBRs, so I need to be able to send a message per OBR.

I found a similar post where the example was using a BPL, however there's some additional trickery processing that I already have working within an ObjectScript Business Process and would like to avoid trying to recreate in a BPL.

Any sample code will be greatly received smiley

4
2 1225
Question Julian Matthews · Jul 31, 2019

Has anyone had any success receiving a DICOM TCP in, and then using a process to write to a file while responding to the sender correctly? I'm pulling my hair out, and would love to know where I'm going wrong. 

2
0 322