Brian Schoen · Feb 21, 2024 go to post

The answer was obvious, I was just over-thinking it.  

key = rowData.key;

value = rowData.value;

var ThisRow rowData.key ' > ' rowData.value;

Brian Schoen · Jan 18, 2024 go to post

Thanks all.  I ended up creating an ObjectScript Method that used $ZDATETIME and then called that method from within my Javascript routine..  (Which I should have thought of before I posted in the first place :)  )

Brian Schoen · May 14, 2021 go to post

Honestly,  I'm trying to figure out under what conditions the Production gets recompiled.  The only fix is to stop and restart the Production, which obviously is not ideal in a live environment...

Brian Schoen · Nov 6, 2020 go to post

Unfortunately, Vendorname is just a placeholder for the section of the String I need to extract.  I'm trying to find a way to pull that section (i.e. the 2nd Capitalized word) from the string without naming it.

i.e.:

FromEpicADT  > "Epic"

ToHealthshareNorthADT  > "Healthshare"

Brian Schoen · Aug 1, 2019 go to post

Apparently, calling Ens.Director from an Ensemble Class can cause errors :)

I was able to accomplish my goal of resetting the job status by using a Schedule on the Service.

START:*-*-*T07:01:00,STOP:*-*-*T07:00:59   

Essentially, stopping and restarting the Service each day at 7am. 

Thanks!

Brian Schoen · Jul 23, 2019 go to post

Thank you Sir!   I could not for the life of me remember this simple callout.  I think that is exactly what I need.

Brian Schoen · Jul 23, 2019 go to post

I do this via a DTL, but I would think it would work here.  I use $char(13).

Good luck,

Brian

Brian Schoen · Jul 23, 2019 go to post

I've thought about that as well.  I think my issue will be the customer wanting the ability to send data at any time, even though they typically don't have (much) data over night.  

I also have considered sending in a bogus message every 30 min to keep the connection "active"...  but I was really hoping to find some code to reset the status :)

Brian Schoen · Jul 23, 2019 go to post

Thanks.  Yeah, I actually have a BO that sends non-critical alerts the next business day.  The specific problem here is that this Service goes Inactivity Every night... so they would always get an alert.    I tried to set the Stay Connected to 1800, but it when the connection disconnects and re-connects, the Job still stays "Inactive".

Brian Schoen · Jul 22, 2019 go to post

Follow up Question....   We currently use a Rule similar to Jeff's; however, if the Service does not have further activity after we suppress the Alert, the status can remain "inactive" well into normal business hours.

Is there a way to "reset" the connection status?  (Or to programmatically restart the Service?), specifically to be called from the Rule.

Brian Schoen · Sep 12, 2016 go to post

Thanks.  Didn't like the "set RawContent = ##class(EnsLib.HL7.Message).%OpenId(pID).OutputToString()" piece for some reason, so ended up with a seoncd SQL statement to pull the data.  Here is my custom function code:

ClassMethod CHNwGetRawMessageForAlerts(
pSessionID As %String = "",
pTargetName As %String = "") As %String
{
    set HL7RawContent= "Message Not Found: Contact Interface Team"
    set pID = ""
    
         &sql(
            SELECT TOP 1 MessageBodyId INTO :pID
            FROM Ens.MessageHeader
            WHERE (TargetConfigName=:pTargetName AND SessionId=:pSessionID)
            OR (SourceConfigName=:pTargetName AND SessionId=:pSessionID)
        )
        if SQLCODE '= 0 {
            set HL7RawContent = "SQL1 Message Not Found: Contact Interface Team"
        }
        else
        {
            &sql(
            SELECT RawContent INTO :HL7RawContent
            FROM EnsLib_HL7.Message
            WHERE ID=:pID
           
        )
        if SQLCODE '= 0 {
            set HL7RawContent = "SQL2 Message Not Found: Contact Interface Team"
        }
        }
    
       Quit HL7RawContent
}

Brian Schoen · Aug 2, 2016 go to post

Yes,  it looks like that it works after all, I just needed the correct wildcards:

HSDEV>set tester = $match("FindABCaa", "(.*ABC.*)|(.*abc.*)")

HSDEV>write tester
1

HSDEV>set tester = $match("Findabcaa", "(.*ABC.*)|(.*abc.*)")

HSDEV>write tester
1

Thanks!!

Brian Schoen · Aug 2, 2016 go to post

specifically, I am trying to replicate Datagate TRE regex functionality (regex "findABC" "abc\|ABC\|Abc")

So, $Match("Find String ABC","abc|ABC")    looks for either "ABC" or "abc" in the string.

(We use this for facility/department matching:  regex PV1:3.4 "NORTH\|SOUTH\|EAST")

 

Thanks.

Brian Schoen · Jul 21, 2016 go to post

Thanks for the suggestions.  Here's what I have in place.  Added two global variables to track last Alert Text & Date/Time sent out (updated as part of the DTL for alerts sent to outbound smtp).  Created a custom function to call as part of the Ens.Alert rule (which takes in the current Alerts text & Date/Time).

 

Function:

ClassMethod CHNwCheckLastErrorAlert(
CurrentAlertText As %String,
CurrentAlertTime As %String) As %Boolean [ Final ]
{
Set SkipAlert = 0
Set AlertSeconds = 0
If CurrentAlertText = $GET(^LastErrorAlertText)
{
    Set AlertSeconds = $SYSTEM.SQL.DATEDIFF("s",$GET(^LastErrorAlertTime),CurrentAlertTime)
    If AlertSeconds < 300
        // If the Alert Text is the same as previous alert amd time stamp is less than 5 minutes, set to true (do not process alert)
         {
          Set SkipAlert = 1
         }
}
 quit SkipAlert
}