Change to
Do ..SendRequestSync("process.Reconciliation",pInput, .pOutput)
- Log in to post comments
Change to
Do ..SendRequestSync("process.Reconciliation",pInput, .pOutput)
In your OnProcessInput() methods, how do you call the business process (or operation)? SendRequestAsync() or SendRequestSync()?
Sure, that's fine, each process commit/rollback it's own transactions.
My message was to @Timo Lindenschmid where he was trying to commit/rollback worker processes from the "main" process. That's not possible.
How can a process commit/rollback transactions of other process(es)??
Are you using "direct" file I/O using Open/Use etc. commands?
I think that's the way to go for your requirements.
If so, have a look to the $ZSEEK() function, the documentation is here.
I think that using EnsLib.REST.GenericService and EnsLib.REST.GenericOperation is the way to go.
What platform and upgrade target version?
I think the platform is relevant because install/upgrade script is different in Linux and Windows.
I'm sorry, I don't have a system that old to check/test.
The oldest I have is 2018 and there AESEncode() and AESDecode() are deprecated (use AESCBCEncrypt() and AESCBCDecrypt() instead).
Are AESCBCEncrypt() and AESCBCDecrypt() implemented in version 2016?
And AESCBCEncryptStream(), AESCBCDecryptStream()?
What product/version are you using?
Can you provide a simple sample code to reproduce the error?
Please note that, by default, Base64Encode() Insert CR/LF after every 76 characters.
Did you take that into account?
When you run $zf(-100) from IRIS session terminal the external process is run in the OS context (secutity/permissions) of the OS user loggen in.
When $zf(-100) is run by a storedproc or studio is run in the OS context (secutity/permissions) of the OS user used by the IRIS instance.
You have permission and/or environment issue.
Why run python using $zf(-100)? You can use embedded python to avoid this issues, it is simpler and have better performance.
What's the value of the parameter ELEMENTQUALIFIED in your classes?
As Luis said, "The type for ELEMENTQUALIFIED is Boolean (0 or 1)".
If you cannot post your actual class, can you reproduce the error writing a simple sample class and port it here?
This is what I get:
How do you get to the download page?
Thy using the "Download InterSystems IRIS" link in the left side of the community homepage.
Using that link I can choose to download 2022.3
Ciao Ilenia,
what kind of single FHIR resource is so large so that you need to split it?
If there are multiple resources, then you can post them individually.
Despite the lack of details in the question, using a lot of imagination and fantasy, my guess is that you are using ^%SYS.MONLBL or ^PERFMON or %Monitor.System package classes.
If my guess is correct, then I'd suggest to check the chapter "Estimate Memory Requirements" in the "Examining Routine Performance Using ^%SYS.MONLBL" documentation page.
What "specific commands" generates this error?
Are you running it from an elevated (administrator or equivalent) command prompt?
New variant that I like it better 😀
%SYS>Set ResultSet=##class(Config.Namespaces).ListFunc()
%SYS>While ResultSet.%Next() { Write ResultSet.%Get("Namespace"),$c(9),ResultSet.%Get("Globals"),$c(9),ResultSet.%Get("Routines"),!}
%ALL %DEFAULTDB %DEFAULTDB
%SYS IRISSYS IRISSYS
USER USER USER
%SYS>I'm not sure I understand your question, probably not.
If you need to transform a message and then apply/evaluate rules, then create two HL7 Routing Business Processes, each with a Routing Rule associated.
The first BP and associated rule transform the message and send it to the second BP where you can apply rules to the transformed message.
But....probably I did not understand the question! 😊
You already answered your question....in the question! 😊
From %SYS namespace, use the List class query in the Config.Namespaces class:
%SYS>Set ResultSet=##class(Config.Namespaces).ListFunc()
%SYS>Do ResultSet.%Display()
Namespace Globals Routines System Globals System Routines LibraryTemp Storage
%ALL %DEFAULTDB %DEFAULTDB IRISSYS IRISSYS IRISLIB IRISTEMP
%SYS IRISSYS IRISSYS IRISSYS IRISSYS IRISLIB IRISTEMP
USER USER USER IRISSYS IRISSYS IRISLIB IRISTEMP
5 Rows(s) Affected
%SYS>Or, if you prefer:
%SYS>Set statement=##class(%SQL.Statement).%New()
%SYS>Set status=statement.%PrepareClassQuery("Config.Namespaces","List")
%SYS>Set resultset=statement.%Execute()
%SYS>While resultset.%Next() { Write resultset.%Get("Namespace"),$c(9),resultset.%Get("Globals"),$c(9),resultset.%Get("Routines"),!}
%ALL %DEFAULTDB %DEFAULTDB
%SYS IRISSYS IRISSYS
USER USER USER
%SYS>I'm not sure what you mean with "the nice argument documentation for the arguments".
Do you have an example?
Hi Luis, I've never used a BS witout the usual ProcessInput() call, anyway, from a BS you cannot call SendRequestAsync() with a response. If you need a response in a BS then you must call SendRequestSync().
A Business Process can only be invoked/called from a Business Service within an Interoperability Production.
You can invoke/call a Business service from your code/application with:
Set sc = ##class(Ens.Director).CreateBusinessService("BusinessServiceName", .BService)
If $$$ISERR(sc) ; handle error here
Set sc = BService.ProcessInput(BSRequest,.BSResponse)Maybe (likely!) I misunderstood your question.
What do you mean with "But some other namespaces on the same server could be mapped to a different namespace or even mapped to itself." ?
A namespace cannot be mapped to another namespace.
A namespace definition consists of default database for globals, default database for "routines" (all code) and optionally global/package/routine mappings to different databases. (Plus some default system mapping)
Form the %SYS namespace you can use the List class query in the Config.MapRoutines class.
For example:
%SYS>Set ResultSet=##class(Config.MapRoutines).ListFunc("USER")
%SYS>d ResultSet.%Display()
Name Routine Type Database
MyTestRoutine MyTestRoutine TRAINING
1 Rows(s) Affected
%SYS>Write ResultSet.%ClassName(1)
%SQL.ClassQueryResultSet
%SYS>WOW! Nice!
But...is there any reason why this is not documented?
When was it introduced?
A quick test shows it was not available in Caché based products, that is 2018 and is available in 2022.1.
At the moment I cannot test version 2019 to 2021.
To properly display the status use:
Set statusText=$system.Status.GetErrorText(status)
First I'd suggest to change:
Set httpRequest.Server = "http://127.0.0.1:8080"
to:
Set httpRequest.Server = "127.0.0.1"
Set httpRequest.Port = "8080"
I would also check the status after:
Set status = httpRequest.Post("/collect_patient_information")
And then try again.