Not as many as I hoped... Six
- Log in to post comments
Not as many as I hoped... Six
This is how i solved the issue
Set tSC = pRequest.NewResponse(.tResponse) Quit:$$$ISERR(tSC) tSC
Set tResponse.encodedMessage = $get(encodedMessage)
set dMsg = $SYSTEM.Encryption.Base64Decode(tResponse.encodedMessage)
set pResponse = ##class(EnsLib.HL7.Message).%New()
set pResponse = ##class(EnsLib.HL7.Message).ImportFromString($Get(dMsg))
set pResponse.DocType = ##class(EnsLib.HL7.Schema).ResolveSchemaTypeToDocType(pResponse.TypeVersion,pResponse.Name)This is how I solved the issue...
Set tSC = pRequest.NewResponse(.tResponse) Quit:$$$ISERR(tSC) tSC
Set tResponse.encodedMessage = $get(encodedMessage)
set dMsg = $SYSTEM.Encryption.Base64Decode(tResponse.encodedMessage)
set pResponse = ##class(EnsLib.HL7.Message).%New()
set pResponse = ##class(EnsLib.HL7.Message).ImportFromString($Get(dMsg))
set pResponse.DocType = ##class(EnsLib.HL7.Schema).ResolveSchemaTypeToDocType(pResponse.TypeVersion,pResponse.Name)How would I do nested iterations if I need to get something from say example "external Positions"
"externalPositions": [
{
"pureId": 0,
"appointment": {
"uri": "string",
"term": {
"en_GB": "Some text"
}
},
"appointmentString": {
"en_GB": "Some text"
},
"period": {
"startDate": {
"year": 0,
"month": 1,
"day": 1
},
"endDate": {
"year": 0,
"month": 1,
"day": 1
}
},Does ImportFromString automatically Decode Base64 HL7 messages?
Not sure I am following, the idea was to take the HL7 message, encode it, and put it into the osuwmc.Nutrition.OSU.CBOARDNetMenuRequest.SendMessageRequest as the encodedMessage. Using the osuwmc.Nutrition.OSU.CBOARDNetMenuRequest.SendMessageRequest to pass to the Web Service Class to send outbound to the vendor.
The two Parenthesis was a typo, and I was using the $Get(a) to dereference the %Stream to a string for the osuwmc.Nutrition.OSU.CBOARDNetMenuRequest.SendMessageRequest.
The Soap wizard created the osuwmc.Nutrition.OSU.CBOARDNetMenuRequest.SendMessageRequest as the vendor requires a key value and encoded message in the body of the soap request.
[HealthConnect:3.5.0-1.m1]
it was a group permission issue with the directory. However, once I created the DB, added it to the mirror on the Primary, I cannot get it to Sync with the others in the mirror. I removed it from the mirror for now till I have time to look at it again.
While I have applauded the updates, I have given feedback to the UX design team, as at times it seems clunky if we have big namespaces.
@Stephen De Gabrielle did you ever figure this out?
I need to take the Encoded Stream and send it as an Encoded String. How would I take a Stream and send it as a String?
How would I convert the tEncodedStream to a %String?
I dismounted, secure copied the IRIS.dat to my backup/DR and mount the Database, but when I attempt to Activate Mirror Database on the backup, I am getting the following error...
sc="0 "_$lb($lb(2073,"/ensemble/TEST/DB/TESTING/",,,,,,,,$lb(,"%SYS",$lb("e^ActivateMirroredDatabase+3^SYS.Mirror.1^2","e^^^0"))))/* ERROR #2073: Mirrored Database '/ensemble/TEST/DB/TESTING/' is not found on this system */
but it shows that the database has been mounted in the Terminal.
@Evgeny Shvarov, it makes sense I just haven't had the time to investigate.
Still not working right..
Class osuwmc.Nutrition.OSU.CBOARDNetMenuOperation.CBORDHL7Port Extends Ens.BusinessOperation [ ProcedureBlock ]
{
Parameter ADAPTER = "EnsLib.SOAP.OutboundAdapter";
Property LocalInterface As %String(MAXLEN = 255);
Parameter SETTINGS = "LocalInterface:Connection:selector?context={Ens.ContextSearch/TCPLocalInterfaces}";
Method OnInit() As %Status
{
If 'IsObject(..Adapter.%Client.HttpRequest) {
Set ..Adapter.%Client.HttpRequest=##class(%Net.HttpRequest).%New()
}
Set ..Adapter.%Client.HttpRequest.LocalInterface=$ZStrip($P(..LocalInterface,"("),"*W")
}Terminating Job 819984 / 'NutritionCBOARDNetMenuSOAP' with Status = ERROR <Ens>ErrException: <SUBSCRIPT>OnInit+1^osuwmc.Nutrition.OSU.CBOARDNetMenuOperation.CBORDHL7Port.1 *IsObject("") -- logged as '-' number - @' If 'IsObject(..Adapter.%Client.HttpRequest) {', %QuitTask=
Class osuwmc.Nutrition.OSU.CBOARDNetMenuOperation.CBORDHL7Port Extends (Ens.BusinessOperation, EnsLib.SOAP.GenericOperation) [ ProcedureBlock ]
{
Parameter ADAPTER = "EnsLib.SOAP.OutboundAdapter";
Property LocalInterface As %String(MAXLEN = 255);
Parameter SETTINGS = "LocalInterface:Connection:selector?context={Ens.ContextSearch/TCPLocalInterfaces}";
Method OnInit() As %Status
{
set interface = $ZStrip($P(..LocalInterface,"("),"*W")
Set ..%Client.HttpRequest=##class(%Net.HttpRequest).%New()
set ..%Client.HttpRequest.LocalInterface = interface
QUIT $$$OK
}I tried using ..%Client but got..
ERROR: osuwmc.Nutrition.OSU.CBOARDNetMenuOperation.CBORDHL7Port.cls
ERROR: osuwmc.Nutrition.OSU.CBOARDNetMenuOperation.CBORDHL7Port.1(4) : MPP5376 : Method or Property '%Client' does not exist in this class.
TEXT: Set ..%Client.HttpRequest=##class(%Net.HttpRequest).%New()
ERROR: osuwmc.Nutrition.OSU.CBOARDNetMenuOperation.CBORDHL7Port.1(5) : MPP5376 : Method or Property '%Client' does not exist in this class.
TEXT: set ..%Client.HttpRequest.LocalInterface = interface
When I tried to compile.
I ended up doing..
Class osuwmc.Nutrition.OSU.CBOARDNetMenuOperation.CBORDHL7Port Extends (Ens.BusinessOperation, EnsLib.SOAP.GenericOperation) [ ProcedureBlock ]
{
Parameter ADAPTER = "EnsLib.SOAP.OutboundAdapter";
Property LocalInterface As %String(MAXLEN = 255);
Parameter SETTINGS = "LocalInterface:Connection:selector?context={Ens.ContextSearch/TCPLocalInterfaces}";
Method OnInit() As %Status
{
set interface = $ZStrip($P(..LocalInterface,"("),"*W")
set HttpRequest = ##class(%Net.HttpRequest).%New()
set HttpRequest.LocalInterface = interface
$$$LOGINFO("CBORDHL7Port OnInit: LocalInterface="_interface)
QUIT $$$OK
}The $$$LOGINFO is showing the correct address, but I am still having issues connecting. But thanks
This has been presented in each of the previous Global Summit's conferences. We will be reviewing it again at this years InterSystems READY 2025. Orlando Health has been the mainstay in the Development work of this tool. Please see previous session recordings via You Tube.
I am not sure I quite understand the question, but I just recently wrote EnsLib.SQL.InboundAdapters that will query MS SQL Server and write the data directly to IRIS Cache Tables I built, so in that sense it is possible. But if you have a service that is listening for a connection to query IRIS Tables, then I think you would want to build like an API listener that then queries the tables.
Hello Community,
Thanks responseData.items.%Get(0).titles.%Get(0).value.%Get("en_US") did the trick
After talking with the vendor, they mentioned they had a .wsdl that could be used to send the HL7 message via a SOAP connection. I took the wsdl and ran it through the SOAP wizard to create the basic classes. Now we are waiting on a firewall request to allow us to communicate with the vendor over port 443.
If the Response you get from a REST call is a %DynamicAbstractObject, how do you know how many levels to go through?
I tried using JSON2Persistant however the naming convention of the tree that it is building it too long for me to upload it into github, so since I have two values that I need to only retrieve I am attempting to iterate through the JSON and just extract those two values
for example, if I only want to pull the pureId and the portalURL from the response object, how can I iterate through the JSON response to get those values only?
{
"count": 0,
"pageInformation": {
"offset": 0,
"size": 0
},
"items": [
{
"pureId": 0,
"uuid": "196ab1c9-6e60-4000-88cb-4b1795761180",
"createdBy": "string",
"createdDate": "1970-01-01T00:00:00.000Z",
"modifiedBy": "string",
"modifiedDate": "1970-01-01T00:00:00.000Z",
"portalUrl": "string",
"prettyUrlIdentifiers": [
"string"
],
"previousUuids": [
"string"
],
"version": "string",
"startDateAsResearcher": "1970-01-01",
"affiliationNote": "string",
"dateOfBirth": "1970-01-01",
"employeeStartDate": "1970-01-01",
"employeeEndDate": "1970-01-01",
"externalPositions": [
{
"pureId": 0,
"appointment": {
"uri": "string",
"term": {
"en_GB": "Some text"
}
},
"appointmentString": {
"en_GB": "Some text"
},
"period": {
"startDate": {
"year": 0,
"month": 1,
"day": 1
},
"endDate": {
"year": 0,
"month": 1,
"day": 1
}
},
"externalOrganization": {
"uuid": "196ab1c9-6e60-4000-8b89-29269178a480",
"systemName": "string"
}
}
],when I attempted
set itr = responseData.%GetIterator()
while itr.%GetNext(.key, .value) {
if key = "pureID"{
set pResponse.pureID = value
} elseif key = "portalURL" {
set pResponse.portalURL = value
}
}both the pureID and portalURL came back blank.
Typically, it would only be one message schema, but I understand what you mean by creating a copy of the EnsLib.HL7.Operation.TCPOperation. I'll keep that in mind if I want to explore this further.
How do we take the JSON response, iterate through it to put it into a data class structure that could be used? Using JSON2Persistent, I took a JSON response and converted it into a Data Class Structure.
Adding a Pre-Processing Router on top seems like it would work, but it's not really efficient when you are struggling with processing, cpu, memory etc... it adds another process on top of everything else.
My task class is calling another Method in another class file that is set to write, but when the Task ran, I got was a blank Output File.
I just had a similar issue, where there were 25 sessions open with my name. We hit our limit of licenses, so I ended up killing what I was not using so it did not interrupt my team. I did not capture the Timeout (UTC) before I did it, but should of.
After I freed up sessions, I did notice that if I opened VSCode that /api/atelier sessions still opened after I had closed out VS Code. We have the CSP Inactivity Timeout on the Web Gateway to 24 hrs, so I don't know if those sessions were over that timeframe or not.
I have an Identifier that I receive in an HL7 MFN message, I need to take this Identifier and find the Locations that the Identifier is associated with, so I can set the Sending Facility value within the HL7 message to help filter out specific locations from being sent to the Health Share Provider Directory.
for example... ID1 might be associated with Site 1, Site 3. IF site 1 is valued and equals xxx, then send on else do not send on.
I was able to get it to work. I found that in Cache I need to call %Get("<column>") name vs what I am doing in a BPL.
s Loc = ""
s tStatement = ##class(%SQL.Statement).%New()
s execall= "CALL osuwmc_Utils_EnterpriseDirDb.InterfaceCheckConnectMedCtrID(?)"
s qStatus = tStatement.%Prepare(execall)
if $$$ISERR(qStatus) {write "%Prepare failed:" do $SYSTEM.Status.DisplayError(qStatus) quit}
set rset = tStatement.%Execute(pInput)
while rset.%Next() {
set Loc = rset.%Get("OSUguestRoleDTL")
}
if $Length(Loc) = 0 {
set Loc = "OSUWMC"
}The Class name is osuwmc.Epic.Clarity.DepartmentMaster and it is storing data in
I am not sure what to put in as the Global Name, would that be E2C8? and then the subscript to be mapped would be D9IS.*?