Scott Roth · Oct 12, 2018 go to post

The majority of my Ancillary billing files in HL7 are batch. In the structure I have just made FHS, BHS,FTS,FHS all optional. In my DTL, I am only processing those messages that truly begin with a MSH segment.

Scott Roth · Nov 15, 2018 go to post

Yes the JDBC Gateways within the Production do stop and start when Cache' is going down and coming back up, but I am talking at the %SYS level,

Without the JDBC Gateway Server running a lot of the JDBC Gateway's (Services) start failing in the production which causes us issues.

ZSTART and ZSTOP are kind of vague, how does that fit into ccontrol start and ccontrol stop. Is there any setting where this can be set to automatic?

Scott

Scott Roth · Nov 18, 2018 go to post

Eduard, where can I see the code for ZSTART AND ZSTOP?

Thanks

Scott

Scott Roth · Dec 3, 2018 go to post

Sean,

I tried running through your example above. When I got to set results={} ,I got the following error. Does this mean I could not get a connection outside my firewall at the Hospital?

USER>set req=##class(%Net.HttpRequest).%New()
 USER>set req.SSLConfiguration="npiregistry"
 USER>set sc=req.Get("https://npiregistry.cms.hhs.gov/api?city=balimore&postal_code=212")
 USER>set results={}.%FromJSON(req.HttpResponse.Data)
 <THROW>%FromJSON+37^%Library.DynamicAbstractObject.1 *%Exception.General Premature end of data 12 Line 1 Offset 0
USER 2e1>write results.%Get("result_count")
 WRITE results.%Get("result_count")
^
<UNDEFINED>^%Library.DynamicAbstractObject.1 *results
USER 2e1>set results={}.%FromJSON(req.HttpResponse.Data)
 <THROW>%FromJSON+37^%Library.DynamicAbstractObject.1 *%Exception.General Premature end of data 12 Line 1 Offset 0

Thanks

Scott

Scott Roth · Dec 5, 2018 go to post

Yes I created a blank SSL/TLS confirguration called npireigstry just like you mentioned above.

I wrote out sc after executing the GET and got the following...

write sc0  [Š%<WRITE>zSend+199^%Net.HttpRequest.1 'USER #$^zSend+199^%Net.HttpRequest.1 +1 $^zGet+1^%Net.HttpRequest.1 +1X^@ +1$D^zExecute+15^%Studio.General.1 +1X^@ +1 D^runMtdLow+22^%SYS.BINDSRV +1 D^popFrame+199^%SYS.BINDSRV +1!D^ServerLoop+23^%SYS.BINDSRV +2!D^SuperConnect+34^%SYS.DBSRV +1"D^SuperServer+112^%SYS.SERVER +1

Any Idea on what this error could be?

Scott Roth · Dec 7, 2018 go to post

Does this only work on certain Ensemble versions? I tried it on 2015.2.2 and was getting SYNTAX errors.

Scott Roth · Dec 10, 2018 go to post

I think I am definately being blocked along the process somewhere. I tried the above commands as Sean mentioned with a proxy and without one, but I keep running into issues.

USER>set req=##class(%Net.HttpRequest).%New()
USER>set req.SSLConfiguration="npiregistry"
USER>set req.Server="npiregistry.cms.hhs.gov"
USER>set req.Https=1
USER>set req.Port=443
USER>set sc=req.Get("/api?city=baltimore&postal_code=212")
USER>write req.HttpResponse.Data.Read(300000)
WRITE req.HttpResponse.Data.Read(300000)
^
<INVALID OREF>

USER>set req=##class(%Net.HttpRequest).%New()
USER>set req.ProxyServer="10.127.20.41"
USER>set req.ProxyPort="8080"
USER>set req.SSLConfiguration="npiregistry"
USER>set req.Server="npiregistry.cms.hhs.gov"
USER>set req.Https=1
USER>set req.Port=443
USER>set sc=req.Get("/api?city=baltimore&postall_code=212")
USER>write req.HttpResponse.Data.Read(300000)
WRITE req.HttpResponse.Data.Read(300000)
^
<INVALID OREF>

Scott Roth · Dec 10, 2018 go to post

Without Proxy...

0 +«npiregistry.cms.hhs.gov:443

With Proxy

0 3Â %<WRITE>zSend+179^%Net.HttpRequest.1

Scott Roth · Dec 20, 2018 go to post

Here is the same code but from the Studio (class view)

<assign value='##class(%Stream.GlobalCharacter).%New()' property='tStream' action='set' />
<assign value='source.GetFieldStreamRaw(.tStream,"ORCgrp(1).OBRgrp(1).OBXgrp(1).OBX:ObservationValue(1).AlternateText",.tRemainder)' property='tSC' action='set' />
<if condition='..Length($get(tSC))&gt;0' >
<true>
<assign value='"1"' property='target.{ORCgrp(1).OBRgrp(1).OBXgrp(1).OBX:SetIDOBX}' action='set' />
<assign value='"ED"' property='target.{ORCgrp(1).OBRgrp(1).OBXgrp(1).OBX:ValueType}' action='set' />
<assign value='"7"' property='target.{ORCgrp(1).OBRgrp(1).OBXgrp(1).OBX:ObservationIdentifier.Identifier}' action='set' />
<assign value='"URL"' property='target.{ORCgrp(1).OBRgrp(1).OBXgrp(1).OBX:ObservationIdentifier.Text}' action='set' />
<assign value='"EXTLRR"' property='target.{ORCgrp(1).OBRgrp(1).OBXgrp(1).OBX:ObservationIdentifier.NameofCodingSystem}' action='set' />
<assign value='"1"' property='target.{ORCgrp(1).OBRgrp(1).OBXgrp(1).OBX:ObservationSubID}' action='set' />
<assign value='"PDF"' property='target.{ORCgrp(1).OBRgrp(1).OBXgrp(1).OBX:ObservationValue(1).Identifier}' action='set' />
<assign value='"TMSAUDIO"' property='target.{ORCgrp(1).OBRgrp(1).OBXgrp(1).OBX:ObservationValue(1).Text}' action='set' />
<assign value='"PDF"' property='target.{ORCgrp(1).OBRgrp(1).OBXgrp(1).OBX:ObservationValue(1).NameofCodingSystem}' action='set' />
<assign value='"Base64"' property='target.{ORCgrp(1).OBRgrp(1).OBXgrp(1).OBX:ObservationValue(1).AlternateIdentifier}' action='set' />
<assign value='target.StoreFieldStreamRaw(tStream,"ORCgrp(1).OBRgrp(1).OBXgrp(1).OBX:ObservationValue(1).AlternateText", tRemainder)' property='tSC' action='set' />
<assign value='""' property='$P(tRemainder,"|",11)' action='set' />
</true>
</if>

Scott Roth · Dec 26, 2018 go to post

I haven't really dove into Node,js, but I will look into it.

Thanks

Scott

Scott Roth · Jan 3, 2019 go to post

I guess I am not following. I have created class files in the past through Studio to call those globals I referenced before. I am not familiar with the CRUD method, but a simple SET ^PERSON(1) = "MIKE|MALE|Developer" should be able to set your global, and when you do a GET to pull the information out of the global you can use PIECE to split the string apart by the | . Someone out here in the development community might have a better answer for you.

Scott Roth · Jan 4, 2019 go to post

It seems Node .js is not going to be a viable option. My systems folks said it was compliled with a different GCC than what we have loaded on our AIX Server. If we were to load Node.js it would mess up the rest of the scripting (PERL, Shell) we do on the server.

Javascript was just one idea, I bet there are many other types of code that can be used to adjust an image resolution. Is there anything that can be called from Atelier without having to install a bunch of software on the server?

Scott Roth · Jan 10, 2019 go to post

I didn't originally write the code but it works. My guess is my teammate who wrote it was trying to compensate for partial values, as in decimals.

Scott Roth · Feb 6, 2019 go to post

Suggest that WRC is probably the best option to help you troubleshoot this issue. It can be numerous things from Security, or the system not running like it should.

Scott Roth · Feb 6, 2019 go to post

We are still somewhat old school eGate folks in this sense. We send all of our transactions to flat files, then we can use those files to feed in data into the test system if needed. We did this when we moved from eGate to Ensemble to make sure we were getting the same transactions and counts.

Scott Roth · Feb 19, 2019 go to post

I do something simular to what you asking. But my AD Group matches a Role that I had built within Ensemble. I give certain users access to modify their own data lookup tables, by creating individual pages for them and locking it down so they can not access the rest of Ensemble. It works pretty well.

Scott Roth · Feb 20, 2019 go to post

I have Field Test 2019.1 loaded on another PC. If I export 2.8.HL7 from it, can I, or will it work in version 2015.2.2??

Are schemas backwards compatible within Ensemble?

Scott Roth · Apr 10, 2019 go to post

I read the instructions on how to create a custom header, however how do I specify the sub element of Epic-Client-ID, if we aren't allowed to use "-" Parameter, Property names?

Scott Roth · Apr 10, 2019 go to post

When I add my method to my operation I am getting an error on ..HeadersOut . I am running 2015.2.2

Method AddCustomHeaderElement(mustUnderstand = 0)
{
set h=##class(osuwmc.Epic.CustomHeader).%New()
set h."Epic-Client-ID" = "Test"
if mustUnderstand{set h.mustUnderstand = 1}
Do ..HeadersOut.SetAt(h,"osuwmc.Epic.CustomHeader")
}

Scott Roth · Apr 10, 2019 go to post

What do you mean by "After that you need to create an instance of this class and add it to HeaderOut property of your WS client."

I created the custom header as suggested above

Class osuwmc.Epic.CustomHeader Extends %SOAP.Header
{
Parameter XMLFORMAT = "literal";
Parameter XMLIGNORENULL = "RUNTIME";
Parameter NAMESPACE = "urn:epic-com.2013.Interconnect.Headers";
Parameter XMLTYPE = "Epic-Client-ID";
Property Value As %String(MAXLEN = 36, XMLPROJECTION = "CONTENT") [ InitialExpression = "12349fe5-2ff8-4b79-b723-e69efbabcdef" ];
}
 

then in my operation I did the following...

Method AddCustomHeaderElement(mustUnderstand = 0)
{
set h=##class(osuwmc.Epic.CustomHeader).%New()
if mustUnderstand{set h.mustUnderstand = 1}
Do ..HeadersOut.SetAt(h,"osuwmc.Epic.CustomHeader")
}
 

but still got an error on HeadersOut.

What is HeadersOut and where do I set it?

Scott Roth · Apr 16, 2019 go to post

so how would the code block look like for the following... How do I return the EnsLib.SQL.Snapshot?

Thanks

Scott

Scott Roth · Sep 5, 2019 go to post

I should of explained this a bit better.

We have 3 servers, 2 (A,B) Locally, 1 (C) offsite.

Currently we are running on Server B. If I do a backup of Server B on 2015.2.2, can I restore it on Server C after it has been upgraded to 2019.1. 

I was wondering if the Full System Backups were compatible across versions of Health Share/Health Connect, since 2019.1 everything changed from ccontrol to iris.

I thought I would give this a shot before bugging WRC, but I'll go ahead and ask them.

Thanks

Scott

Scott Roth · Sep 9, 2019 go to post

When I feed a lab result through with OBX:3.1 valued, it is not being identified in this WHEN statement. Any other suggestions?