I haven't spent any time doing anything with NACK's as of yet. I would suggest creating another post for that question to see if other Developers can help you out.
- Log in to post comments
I haven't spent any time doing anything with NACK's as of yet. I would suggest creating another post for that question to see if other Developers can help you out.
I maybe wrong... But since the native format of dates in Ensemble are not strings, unless you create a function to convert $HOROLOG into a string and set it equal to the variable of Today, I do not think this is possible.
http://intengtest:57772/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_vhorolog
ClassMethod getCurrentDateHL7() As %Numeric
{
quit $ZDATE($H,8)
}
ClassMethod DateCompare(DateString As %String) As %Boolean [ Final ]
{
Set CurDate=$PIECE($HOROLOG,",",1)
Set MyDate=$EXTRACT(DateString,1,8)
Set TestDate=$ZDATEH(MyDate,8) //Calculation example: 20150304 - 20150306 = -2, function returns '0'
If (TestDate - CurDate < 0)
{
quit 0
}
Else
{
quit 1
}
}
In a Business Rule, I have used...
.png)
Yes we have played around with that setting, to no avail. Its like the Vendor just pauses sending us data, never realizes it, or restarts their connection. Currently StayConnected is set to 120, but when they trigger this issue its like the connection is hung.
I am not quite sure I am following... osuwmc.Functions is the main class file, we store our custom functions. We have used it in many other Business rules before for other functions we have created. So doesn't that mean osuwmc property should exists? We store all of our files under the osuwmc schema.
It appears my first attempt didn't work as expected..
{
set:table'["." table=$$$DefaultSchema_"."_table // support unqualified names
set class = $$$GetClassNameFromIQN(table)
quit $classmethod(class, index _ "Exists", value)
}
.png)
ERROR <Ens>ErrBPTerminated: Terminating BP SIU949502CaseRoutingRule # due to error: ERROR <Ens>ErrException: <PROPERTY DOES NOT EXIST>zevaluateRuleDefinition+193 ^osuwmc.CaseSchedulingRoutingRule.1 *osuwmc,EnsLib.HL7.MsgRouter.RoutingEngine -- logged as '-'
number - @'
if (##class(osuwmc.Functions).CacheExists(((pContext.osuwmc)_(pContext.Tecsys)_(pContext.Unit.DataTable)),(pContext.UnitID),(pContext.HL7.GetValueAt("RGSgrp("_(1)_").AIL:LocationResourceID("_(1)_").Facility.NamespaceID")))) {'
> ERROR <Ens>ErrException: <PROPERTY DOES NOT EXIST>zevaluateRuleDefinition+193 ^osuwmc.CaseSchedulingRoutingRule.1 *osuwmc,EnsLib.HL7.MsgRouter.RoutingEngine -- logged as '-'
number - @'
if (##class(osuwmc.Functions).CacheExists(((pContext.osuwmc)_(pContext.Tecsys)_(pContext.Unit.DataTable)),(pContext.UnitID),(pContext.HL7.GetValueAt("RGSgrp("_(1)_").AIL:LocationResourceID("_(1)_").Facility.NamespaceID")))) {'
So it would be like this...
{
set:table'["." table=$$$DefaultSchema_"."_table // support unqualified names
set class = $$$GetClassNameFromIQN(table)
DO $classmethod(class, index _ "Exists", value)
}
So %Dictionary.CacheClassname would be my table name then? I don't have to use any :sql.... type code for it to do the lookup? What about the existing EXISTS function that already exists that is used for Data Lookup Tables (lut)?
I was able to replicate the issue this morning in our Test Interface engine. The syntax error was related to when typing in a when condition not putting the { after the HL7.

Clicked SAVE
Got…
Clicked OK
Got…
Clicked OK, screen went back to Business Rule Editor Screen
Click SAVE again and it repeats the process above
If I try to exit out of the Business Rule Editor I get… 
If I click CANCEL it goes back to the Business Rule Editor
If I click LEAVE it takes me back out to the Production Configuration Screen
I open that Business Rule again by clicking on the 
When the Business Rule Editor Opens…
The Syntax error is still appearing in the rule… 
I have HealthShare 2018.1.3, IRIS HealthShare 2020.1.0.197, and I just downloaded CACHE development 2018.1.3 for Windows installed on my machine. I am not able to find the cachejdbc.jar under C:\intersystems anywhere, am I miss something? Is there a separate install for the jdbc driver? I am looking to try to connect Squirrel SQL Client, so I can easily add data to a Cache table without using the Management Studio SQL.
I have created a Cache Operation that uses JDBC to connect to Oracle using the EnsLib.SQL.OutboundAdapter, if that is what you are looking for. I try keep the read, and write operations different as it can make it less confusing on which operation is doing what.
Here is just one example..
{ Parameter ADAPTER = "EnsLib.SQL.OutboundAdapter"; Parameter INVOCATION = "Queue"; Property InitDSN As %String; Method OnInit() As %Status
{
Set ..InitDSN = ..Adapter.DSN
//Set ..Adapter.ConnectAttrs = "QueryTimeout:45" ; try this too just in case...
Quit $$$OK
} Method SelectIWLinkedResults(pRequest As osuwmc.IWEnc.DataStructures.IWtoERSLTSLnk, Output pResponse As EnsLib.SQL.Snapshot) As %Status
{
set Select = "SELECT MRN,ACCOUNTNUM,SUMMARYID,ANCILLARY,DEPARTMENT,REPORTCODE,REPORTDESCRIPTION,DATEOFSERVICE,STATUS,INSERTDATE,"
set Select = Select_"TRANSMITAPP,TRANSMITDATE,RENDDRNUM "
set Select = Select_"FROM IW_TO_ERSLTS_LNK "
set Select = Select_"WHERE TRANSMITDATE IS NULL AND TEXTID = ?"
set tSC = ..Adapter.ExecuteQuery(.rs,Select,pRequest.TextID)
set tSC = rs.GetSnapshot(.pResponse)
Quit tSC
} Method UpdateIWLinkedResults(pRequest As osuwmc.IWEnc.DataStructures.UpdateIWtoERSLTSLnk, Output pResponse As Ens.Response) As %Status
{
set update = "UPDATE IWDINTF.IW_TO_ERSLTS_LNK SET TRANSMITDATE = SYSDATE WHERE SUMMARYID = '"_pRequest.SummaryID_"'"
set tSC = ..Adapter.ExecuteUpdate(.rows,update)
Quit tSC
} XData MessageMap
{
<MapItems>
<MapItem MessageType="osuwmc.IWEnc.DataStructures.IWtoERSLTSLnk">
<Method>SelectIWLinkedResults</Method>
</MapItem>
<MapItem MessageType="osuwmc.IWEnc.DataStructures.UpdateIWtoERSLTSLnk">
<Method>UpdateIWLinkedResults</Method>
</MapItem>
</MapItems>
}
I would believe the only way to put a schema filter in would be within your query and not in the connection string.
First start off by looking at the following documentation...
What you use for your connection string all depends on the driver you are using. In the past I have used Microsoft, Oracle, and jTDS JDBC drivers. Currently I am using jTDS because it allows me to use integrated Authentication. so my strings are a little long...
jdbc:jtds:sqlserver://(server name):(port)/(database);instance=xx;domain=xxxx;useNTLMv2=true;cacheMetaData=true;prepareSQL=2;
is just an example.
Scott
Try this link...
and look for Using Ens.Director to Start and Stop a Production
I found with create a Inbound BS, you can't really use the Delete query as an update statement. Either you place the update statement within your BPL, or truly make the Delete query a Delete query on your inbound service.
This maybe a silly question but what if you are not using a docker image? What is docker-compose?
Make sure you are also using EnsLib.RecordMap.Operation.BatchFileOperation as your operation and you define the header in it as well.
.png)
Everything I have read from Microsoft says this error has to do with a linked server. However where I am trying to select from is a view and has no linked server involved.
I am struggling with understanding how to display the table within the CSP page. In reading the document it mentions ZEN, but as we have been told not to use ZEN because ZEN is going away.
So how can I display the SQL table in a table format that could be updated instead of the form document mentioned above? Most of the examples are only 1 or 2 rows. I am looking at a 25 rows x 6 columns table to display and update.
I got the above to work, just trying to make it more friendly.
Thanks
Scott
Here is an interesting outcome from playing around. Before I could not open the osuwmc.TestClin in either studio or the Management portal after an upgrade/compile to 2019.1.1.
So I was wondering if I should just look at the file. So I exported it from studio, looked at it on my local desktop, then imported it locally from my desktop. I was able to compile it through studio without issues, and Management Portal was able to see the production as well.
Weird.....
I have tried UpgradeAll() also without any luck. Is it possible to just Show and Set qualifiers on just one production to tell me whats wrong with it? I can't open the production class in studio either.
Have you used JDBC drivers before? I have a couple of connections that I have created through JDBC to connect to Oracle to pull data from an Oracle table to create an HL7 message. Currently we are using the Oracle JDBC driver to connect to the Oracle system.
I figured it out on my own.
It did not like
<assign value='source.GetFieldStreamRaw(.tStream,"ORCgrp(1).OBRgrp(1).OBXgrp(k1).OBX:ObservationValue(1).AlternateText}",tRemainder)' property='tSC' action='set' />
I had to change it to
So far we have ended up with like 4 routing rules just for ADT alone to get it do the Ancillary systems.
When we were going through our conversion from egate to Ensemble, it was suggested not to have anymore that 25 rules within a Business Router. Anymore than that caused us severe performance issues when it came to making sure our downstream systems was receiving the messages in time.
Scott Roth
I am not aware that a CSV could be read in via EnsLib.File.PassthroughService. From what I was taught a CSV would have to be mapped to a RecordMap then you can parse out the CSV using EnsLib.RecordMap.Service.FileService.
https://docs.intersystems.com/healthconnect20191/csp/docbook/DocBook.UI.Page.cls?KEY=EGDV_recmap
Scott
I have opened a ticket with WRC regarding this issue.
From what I read is the basic purge does not take care of the orphaned messages. That's why there is this manual step we have to configure.
Not sure if this will answer your question or not, but we had to move to the jTDS JDBC driver in order to pass an AD account through a connection.
jdbc:jtds:sqlserver://(server name/port) ;instance=tp;domain=osumc;useNTLMv2=true;cacheMetaData=true;prepareSQL=2;
That was my mistake I needed to replace tVal with tFound.