Recent posts:
Recent replies:

In Cache product line, you would need to use Dynamic Objects. In order to iterate through a JSON Object, you would need to know its structure. Most likely, it is a nested object so you would have drill down to it.

To read your JSON Object into a DynamicObject, use

Set tDynObject = {}.%FromJSON(yourJSONString).

Here is some reference for Dynamic Objects:

https://docs.intersystems.com/latest/csp/docbook/Doc.View.cls?KEY=GJSON

In IRIS Product Line, in addition to Dynamic Objects, you have JSON Adaptors. If your class inherits from %JSON.Adaptor, it can recognize JSON  key/value pairs and you can just assign them to the Properties in your object.

Here is a reference for JSON Adaptors:

https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls...

This use case looks good for the ISC product "HealthConnect"... it is designed to accept some data, transform it and output new data. It includes built-in XSLT Transforms that can transform CCD Documents into SDA (XML format for ISC Data Model) and back to CCD.

If you have ISC HealthConnect, you can do the following:

1) Use one of the CCDA-to-SDA transforms to create an SDA XML Document

2) Use TransformIntoObject() method of HS.Util.XSLTTransformer to get an SDA Object with Properties

3) Change whatever you need and save a new SDA Object

4) Use TransformFromObject() of the same class to get a new SDA Document

5) Use one of the SDA-to-CCDA XSLT Transforms to create a new CCDA Document.

All of this is basically out of the box... you just need to find a way to get your document into the system. If you just use FTP you can either use Ensemble FTP Service or write a script to transfer the files onto the file system where an Ensemble FileService would pick them up. 

You probably would need to create a Business Operation that would invoke the Transforms and manipulate your data; after that you can pass your output to an FTPOperation that will send the files out to your recipients.

If you don;t have HealthConnect, I would recommend getting it - XSLT is very fast compared to reading the XML directly into Objects. ISC basically solved this problem for you (for extra money of course...) If it is not possible, you may need to write your XML to Obj conversion... I don;t think there is anything like that in Ensemble...

You can try the ParseFile method of class %XML.TextReader. The method returns Status, but its Output parameter is a %XML.TextReader object. you can then loop over the all of the nodes of the XML document using

While (textreader.Read()) {

     ...

}

Your XML Elements will be Objects, and the Attributes of an Element will be Strings. So your ClinicalDocument objects will have Properties that will be its direct attributes, and a Property "Observation" which will be another Object. To get the Attributes you can do something like this inside your Element:

Do textreader.MoveToAttributeName("xlmns")

If textreader.LocalName = "xmlns" Set tXMLNS = textreader.Value

And so on for all attributes.

%XML.TextReader has other methods so please explore them as well...

       

Followers:
Following:
Global Masters badges: