Hi,
Is there any objectscript command available to start or stop production from object script?
Thanks
InterSystems Business Process Language (BPL) is a language used to describe executable business processes within a standard XML document.
Hi,
Is there any objectscript command available to start or stop production from object script?
Thanks
I'm looking for a way to get the message header ID for the current message in a Request to a Business Process.
I've located some code that gives me what I need, but it runs the risk of violating the "abstraction layer" ISC has in place around such things. And while I very much appreciate their efforts at keeping things simple for me ... well, sometimes you just have to dig through the guts to get what you want.
Is there a documented, deprecation-resistant method for getting at %Ensemble("%Process").%PrimaryRequestHeader.%Id() from within a BP?
Hello,
I am trying to figure out if we can extend a business process in IRIS. My Use Case is that I am developing RESTful Interfaces and my each REST Interface needs to go through certain processes before getting to the actual action.
e.g. I have 2 REST Interfaces, GetPatient and GetEncounter. Both of these need to invoke "GetToken" Business Operation to go to the Authentication server to get an authentication token before they go ahead and hit the Business Operation to Get the data i.e. Patient or Encounter.
Does anyone know how to disable the auto-refresh in Healthshare, especially for Message viewer , Business process designer, DTL editor pages?
These pages in management portal refresh every 15min( i.e. as per the session time out setting) . I tried to set the following two configs to disable the auto refresh but both had no impact.
set ^EnsPortal("DisableInactivityTimeout","Portal") = 1set ^%SYS("Portal","EnableAutoRefresh") = 1Thank you for your help.
Mary
This article is a continuation of this post.
In the previous article, we discussed business operations' creation from the components required for system integration.
In this article, you will learn how to create a business process that calls the two business operations you have defined in the sequence order.
The business process acts as the coordinator (command center) of the process.
I am working on automating to pick all the jobs running particular business process and kill them by using a routine. Though I was able to kill the jobs/PID on server by using (sudo kill jobid) and by using do $SYSTEM.Process.Terminate(jobid) or Do ##class(Ens.Job).UnRegister("buseiness host", jobid), I am looking to build a routine by setting a variable with all the business process names and then fetch the jobid or PID associated with those business process and kill them. Any help is highly appreciated.
*Analista Ensemble Júnior / Pleno
Próximo Metrô Clínicas
REQUISITOS:
* Conhecimento em barramento e protocolos RESTFull / SOAP
* Integração com banco de dados Oracle / SQL Server
ATIVIDADES:
* Integração de sistemas hospitalares
* Administração do ambiente Ensemble
* Análise de Dados
Enviar CV com pretensão salarial
.
Contratação CLT ou PJ tempo indeterminado
Empresa ..................: JHealth Informatics
Email ........................: rh@jhealth.com.br
I have a BPL that calls a business service (actually does lots of other things unrelated to my question). We receive an acknowledgement back containing data that is processed in the BPL and sent to the source system. The process of sending to our downstream system "A" and receiving the response takes about 20 seconds per transaction (very slow on system A's side). Due to this slowness, we end up with a backlog close to 1000 messages by the end of the workday.
Is there a way to make this multi-threaded so we can send many messages to system A?
I have a case where our EMR is sending data, but not all the values needed for the Ancillary are valued properly and causes that message to error/halt processing on the Ancillary system, not ideal but its what they do. I would expect them to still process the message except that 1 field, but they don't.
I want to add validation to make sure certain fields are valued correctly for the Vendor.
So I add some statements to take those items that don't pass this validation out to a batch file with headers.
But I want to email out that batch file.
I have a case where I need to look up the NPI provider against an External MS SQL database to retrieve our Provider Identifier to send to a downstream system. In the past I would use a Business Process (BPL) to connect to the outside MS SQL via JDBC and get that information for me. But I was thinking instead of creating a BPL process to do this, would it be better just to link to the outside MS SQL database table to retrieve the information in a SQL statement within a DTL?
So it is better to link to an outside database via a Linked Table wizard?
We are trying to convert some of our SQL Service Integration Service jobs from Visual Studio to Ensemble. If we execute a Stored Procedure within SQL Server Management Studio it is returning approx 12,000 rows. However when Ensemble executes the same Stored Procedure it is only returning 250 rows.
Is there a limitation to EnsLib.SQL.Snapshot?
This is how we are calling the Stored procedure
Method uspInterfaceEnsSelectPER355MC(pRequest As osuwmc.SSIS.DataStructures.InputPER355MC, Output pResponse As EnsLib.SQL.Snapshot) As %Status
{
Set SPQuery = "{ ?= call dbo.
Messages between Business Hosts in Interoperability Production often contain object properties.
Do you define and pass them as object properties or do you define and pass them as Integers with objects conversion where required?
Why?
Did anyone run into this error when stopping a Production from Ens.Director?
Ens.Director::StopProduction => ERROR <Ens>ErrProductionNotQuiescent: IRIS can not become quiescent
It happens sporadically when an automated unit test from a class that extends %UnitTest.TestProduction runs a test on a Business Process. I already increased the parameter MAXWAIT to 30 seconds, but the error still happens.
Hello,
We would need to know the Ens.Response SourceConfigName to identify which Operation has raised an exception.
We have tried:
$$$LOGINFO("..%Process.%PrimaryResponseHeader.SourceConfigName..: "_..%Process.%PrimaryResponseHeader.SourceConfigName) //It outputs an empty string
$$$LOGINFO("response.SourceConfigName: "_response.SourceConfigName) //It generates an exceptionWe would need to get from an Ens.Response which body is null, its SourceConfigName:
.png)
How could we know it? 📛
We have a bunch of CSV files of a few different types, which contain patient and medication data, among other things, which we need to load into Healthshare, so the information can be compiled together and then viewed from the Clinical Viewer/reports made on the data as well.
I cannot find a straightforward example or any documentation about this particular case, which I would expect to be fairly common.
I need to set and use some context variables in a transformation (written in DTL), but the code is manually written.
When writing the same as BPL I define context variables and they are visible in transformations called by that process.
In something like this my.DTLtransform sets HL7 message fields to values in context variables:
Set dtl = ##class(my.DTLtransform).%New()
Set qStatus = dtl.Transform(pRequest, .msg)
However, when I create a business process using custom code option, I don't see an obvious option, as well as documentation covering that area.
.png)
So we have a custom business service that we use and we are calling SendRequestSync.
Set tSC=..SendRequestSync(tOneTarget,tTargetStream, .tResponse)
For our response from our custom business operation, we send back an Ens.StringResponse.
set pResponse = ##class(Ens.StringResponse).%New()
set pResponse.StringValue = "File Delivery: "_tOutFilename_" of size: "_pRequest.Stream.Size_" (modified='"_pRequest.Stream.LastModified_"')"_" Status: "_tSC
So now we are trying to use Rules to pass the the messages to certain destinations with a normal business process of EnsLib.
.png)
In 2017, Forbes published an article talking about API Economy (see: https://www.forbes.com/sites/louiscolumbus/2017/01/29/2017-is-quickly-becoming-the-year-of-the-api-economy/). This article was the trigger to popularize the use of API and API Management by large companies. The article published a maturity model. My understanding is that Intersystems IRIS allows you to reach the top of the pyramid with your current technologies. See the figure above.
For this it is important to combine % CSP.
I've got a REST service that I can access via a browser. I can get it to take HTML tags as data and display it back to me (so I know the REST part is working). So if I send it this:
http://MyServer:57772/TestArea/rest/TestQuery?UUID=1&RTX=RTX123456&CareType=Palliative
Then I can pick out the data and tell it to display in the browser, which is great but what I really want to do is put the data into a string and send to a business process that will do lots of looking up but eventually return a URL that my REST service will then redirect the browser to.
In this article I'd like to share with you a phenomena that is best you avoid - something you should be aware of when designing your data model (or building your Business Processes) in Caché or in Ensemble (or older HealthShare Health Connect Ensemble-based versions).
I am developing a BPL with a delay process.
The problem I have is when a message is delayed I cannot see a job id so whilst a job is in halt status I cannot see how i can then cancel the message? It obviously doesn't show up in queues as it isn't active either.
Am i missing something?

Hello,
We are developing a BP where we would need to call at the same time to get appointments in two external systems. So then, we would need two threads, one for primary care appointments, and other for specialist appointments . We need to paralelize both calls because of both of them require some time and we would need to shorten it as much as possible.
when ever I pull the xml file from business services and its failed in business process and I am getting the below error.
ERROR
I want to send requests from custom BP with timeout and be able to understand that timeout event happened.
I thought that I need to implement OnTimeout method in my process (in either caller or callee), however it seems like OnTimeout is never called.
Let's say we have this parent process:
Class Timeout.Parent Extends Ens.BusinessProcess [ ClassType = persistent ]
{
Method OnRequest(pRequest As Ens.StringContainer, Output pResponse As Ens.StringContainer) As %Status {
set sc = ..SendRequestSync("Timeout.Child", pRequest, .pResponse, 5)
if ($$$ISOK(sc) && ('$isObject(pResponse))) {
set text = "Caught timeout"
$$$TRACE(text)
set pResponse = ##class(Ens.StringContainer).%New(text)
}
quit sc
}
Method OnTimeout(request As Ens.StringContainer, ByRef response As Ens.StringContainer, callrequest As Ens.StringContainer, pCompletionKey As %String) As %Status
{
set text = "TIMEOUT PARENT"
$$$TRACE(text)
set response = ##class(Ens.StringContainer).%New(text)
quit $$$OK
}
} I have a code block in a BPL. I have the below SQL and code. All variables have been declared and set. When I run the SQL, if there are no values returned, I get 100 for the value of SQLCODE when I perform the FETCH, which is correct. If values are returned, I get a -400 error when I perform the first FETCH. I've investigated, but cannot find the reason for a -400 error. Hoping someone out here understands this and knows what's wrong.
&sql(DECLARE D1 CURSOR FOR SELECT A.SHIPMENTTRACKINGNO, A.SERIALNO, A.CDWACCNO, A.CDWINVOICENO, A.CDWORDERNO, A.CDWPARTNO INTO :context.
In a HTTP operation, which extends Ens.BusinessOperation, EnsLib.REST.Operation, one can read the component's AlertGroups property by simply referring to it with "..":
.png)
set AlertGroup = ..AlertGroups //Do something with AlertGroup
"AlertGroups" is a property of Ens.Host. The above however does not work in a business process which Extends Ens.BusinessProcessBPL which extends Ens.BusinessProcess which extends Ens.Host.
I have two files that I ultimately need to combine. The first file contains data from a PO. The second file contains tracking information. What I thought about doing was create a BS that grabs the first file, loads it into a record map and transfers it to a BPL. Then, the BPL would open the second file where I would write code to load the file into a second record map and then insert the tracking information to the correct places in the first file based on PO line items.
First, is this the best approach? Second, how do I open the second file in the BPL?
Hi everyone,
I am very pleased to announce that the Readmission Demo has been released as open source. Many thanks to the Solution Factory team that worked hard on making this possible.
Here are the changes:
Hi Community,
New video, recorded by @Eduard Lebedyuk, is available on InterSystems Developers YouTube:
⏯ Python Gateway: Jupyter Support - extended
I am working on a BPL to take data from a MS SQL database and create an HL7 Materials Message for our EMR. I have done this plenty of times in the past however I am running into an error.
"Remote Gateway Error: JDBC Gateway SP execute(0) error 0: Access to the remote server is denied because no login-mapping exists."
What is confusing is that this BPL doesn't differ from any of my other BPLs in connecting to MS SQL Server. I know I am missing something..