go to post Scott Roth · Feb 6, 2019 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.
go to post Scott Roth · Feb 6, 2019 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.
go to post Scott Roth · Feb 5, 2019 You can use split on ZC02, get the length, then for each number that it split you create a separate DFT message.
go to post Scott Roth · Jan 10, 2019 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.
go to post Scott Roth · Jan 10, 2019 Here is a method we built for our use.ClassMethod IsNumeric(value As %String) As %Boolean{//Load value into local var tNumberset tNumber = value//Use $extract to get the FULL VALUE into an internal format for $isvalidnumset tFullValue = $EXTRACT(tNumber,1,$length(tNumber))//Use $isvalidnum to check if the full value is numeric (ex: 123456789 = true, 123456789x = false)set tNumberIsValid = $ISVALIDNUM(tFullValue)//At this point, we simply return tNumberIsValid (it will either be 1, true or 0, false)quit tNumberIsValid}
go to post Scott Roth · Jan 4, 2019 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?
go to post Scott Roth · Jan 3, 2019 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.
go to post Scott Roth · Jan 3, 2019 Others can correct me if I am wrong, but everything Intersystems is moving to under the IRIS name. Think of IRIS as a container with everything running under it. Health Information Exchange (HIE), Cache Object Script, Globals, Ensemble, and etc run under what they call IRIS.Zen is Intersystems way of creating Web Pages that talk directly with Cache.You can use and call globals from any one of the products that you might be using. Globals works across the board, and is just another way of storing the data. In your above example think of the Person global as a variable you can call and retrieve the dataI have a global called OSUWMCLDAP that has various properties I use in some of my class files. I call this global from my class file ie like the following...Here is examples I use in my class files to retrieve the data from the global.#define LDAPServer $Get(^OSUMCLDAP("Server"))Or $Get(^OSUMCLDAP("Domain"))
go to post Scott Roth · Dec 26, 2018 I haven't really dove into Node,js, but I will look into it.ThanksScott
go to post Scott Roth · Dec 20, 2018 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))>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>
go to post Scott Roth · Dec 19, 2018 With the help from WRC we converted the OBX stream to a GlobalCharacter Stream. See below as an example.
go to post Scott Roth · Dec 10, 2018 Without Proxy...0 +«npiregistry.cms.hhs.gov:443With Proxy0 3 %<WRITE>zSend+179^%Net.HttpRequest.1
go to post Scott Roth · Dec 10, 2018 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=1USER>set req.Port=443USER>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=1USER>set req.Port=443USER>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>
go to post Scott Roth · Dec 7, 2018 Does this only work on certain Ensemble versions? I tried it on 2015.2.2 and was getting SYNTAX errors.
go to post Scott Roth · Dec 5, 2018 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 +1Any Idea on what this error could be?
go to post Scott Roth · Dec 3, 2018 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 0USER 2e1>write results.%Get("result_count") WRITE results.%Get("result_count")^<UNDEFINED>^%Library.DynamicAbstractObject.1 *resultsUSER 2e1>set results={}.%FromJSON(req.HttpResponse.Data) <THROW>%FromJSON+37^%Library.DynamicAbstractObject.1 *%Exception.General Premature end of data 12 Line 1 Offset 0ThanksScott
go to post Scott Roth · Nov 19, 2018 Yes I would think the easiest way would be to create a record mapper structure, then use the DTL to map your HL7 fields to where they need to be, then send it to a EnsLib.RecordMap.Operation.FileOperation.Record MapperDTL
go to post Scott Roth · Nov 18, 2018 Eduard, where can I see the code for ZSTART AND ZSTOP?ThanksScott