The answer was obvious, I was just over-thinking it.
key = rowData.key;
value = rowData.value;
- Log in to post comments
The answer was obvious, I was just over-thinking it.
key = rowData.key;
value = rowData.value;
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 :) )
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...
Thanks! I think this would have gotten me there too!
Thanks! I was almost there... I think this will work nicely!
I think this has the same problem I describe in my reply above.
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"
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!
Thank you Sir! I could not for the life of me remember this simple callout. I think that is exactly what I need.
I do this via a DTL, but I would think it would work here. I use $char(13).
Good luck,
Brian
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 :)
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".
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.
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
}
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!!
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.
Is there any syntax for using pipe delimited alternations with $match()?
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
}