go to post Marc Mundt · Apr 26, 2022 Since this is a new design you should use persistent classes (SQL tables/objects) instead of writing directly to globals. A Data Transformation can use any persistent class as it's target, so this is also easier than storing directly in globals. https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.UI...
go to post Marc Mundt · Apr 25, 2022 Have a look at this previous thread. And there's a built-in capability in IRIS to see ports in use by different components.
go to post Marc Mundt · Apr 13, 2022 And does your target message really need to be an ADT_A01? Merges use ADT_A18 messages, so you can just set ADT_A18 as your target message type and it will allow you to add the MRG segment:
go to post Marc Mundt · Apr 13, 2022 Just to add a bit of context to the above:An example use case where you would want to return the operation's response back to the service would be in an HL7 integration where, instead of having the service generate an ACK to return to the upstream sending system, we want to return the ACK or NAK that we got back from the downstream receiving system.
go to post Marc Mundt · Apr 13, 2022 What Response From does is control which responses from a call to an operation (or another component) are returned to the business service that called the router. By default the router won't return the response to the service, but setting Response From will enable responses to be returned from specific operations (or * for all operations). This is how you can control which response gets sent back to the service in a case when a router calls multiple operations. If multiple responses match the Response From setting, then only the first response will be returned to the service. Response Target Config Names allows you to specify additional components (beyond the service that called the router) that should receive a copy of the response that came back from the operation. So you could send a copy of an ACK or other response to another operation for some reason. All of this is probably moot, because I'm guessing your service doesn't need to receive a response. In terms of the NULL responses, these shouldn't become orphans -- the fact that they appear in the message trace tells us that the production knows which session they belong to so they should get deleted along with the rest of the session.
go to post Marc Mundt · Apr 12, 2022 Absolutely. You can do this with two assign actions: First assign action moves the stream pointer to the end of the stream content: The second assign action writes our new content to the end of the stream: And an extra note of explanation: what we're actually doing with these assigns is calling a method in the request class, which returns a status code, and assigning that status code to a temporary variable. It would be best to check this status code to see if there was an error, but I haven't added that here to keep things simple.
go to post Marc Mundt · Apr 11, 2022 Since you don't need to modify the request/response maybe pass-through services and operations will meet your needs?
go to post Marc Mundt · Apr 5, 2022 This section in the docs discusses business processes and routers. You could use either one -- routing rules tend to be faster/easier to create. Basically, your business process or routing rule would create a notification message and send it to a business operation. The process/router could construct the notification message directly or could call a data transformation that would create the notification message. The operation would send the notification to an external system. One example would be to use an email operation to send the notification to an email server. Our online learning portal also has some courses that cover these topics: Integration Architecturehttps://learning.intersystems.com/course/view.php?id=908 Building a Message Routerhttps://learning.intersystems.com/enrol/index.php?id=1745 Building BPL Business Processeshttps://learning.intersystems.com/enrol/index.php?id=1290 Data Transformations Basicshttps://learning.intersystems.com/course/view.php?id=1170
go to post Marc Mundt · Apr 5, 2022 Can you elaborate on the limitations you see in DocumentType that are leading you to think about using Custom Pairs? DocumentType is of type HS.SDA3.CodeTableDetail.DocumentType, which can store a code, description, and the code system. Seems like that's what you need, and it already maps to DocumentReference:type in FHIR.
go to post Marc Mundt · Mar 29, 2022 calling Method from ClassMethod This is the problem. A Method needs to be called in the context of an instantiated object. A ClassMethod by definition isn't associated with an instantiated object. If it's necessary to do it this way, your ClassMethod could use %New() to instantiate an object and then call the Method on that object: set myObj = ##class(My.Object.Class).%New() set tSC=myObj.myMethod() But, it looks like you're working with a Business Service class. For that, it isn't enough to simply use %New(). You need to use Ens.Director::CreateBusinessService to instantiate the object before calling the Method. https://docs.intersystems.com/irisforhealth20212/csp/docbook/DocBook.UI....