go to post Robert Barbiaux · Jan 16, 2023 You can call the Tranform(source,target) class method implemented by classes that extend Ens.DataTransform : directly in objectscript code through code generated for a BPL or router process ('send' action optionally uses a list of transformation classes that gets applied in sequence to the message before it is sent to target(s)). through code generated by a DTL ('subtransform')
go to post Robert Barbiaux · Jan 16, 2023 If you need to process the entire file and no line filtering, I would go for using pass through file service (EnsLib.File.PassthroughService) to send an instance of stream container (Ens.StreamContainer) to either a message router (EnsLib.MsgRouter.RoutingEngine) or custom (BPL or code) process, and use a transform (class extending Ens.DataTransform) to transform the source stream container into a target stream container and send it to the file pass through operation (EnsLib.File.PassthroughOperation) for output. I would use a custom process over message router if transform needs data source(s) (e.g. response from another process or operation) other than the input file. The transform can pick a suitable target stream class (Extending %Stream.Object) to hold in the Ens.StreamContainer depending on where you want to store the data (database vs file system,…) HTH
go to post Robert Barbiaux · Dec 27, 2022 Merry Christmas everyone ! My first time with AoC was a lot of fun, thank you for running this Objectscript ladder. Congratulations to all participants. My repository: https://github.com/theanor/idc-aoc-2022-theanor And quality scanner status : https://community.objectscriptquality.com/dashboard?id=intersystems_iris_community%2Fidc-aoc-2022-theanor
go to post Robert Barbiaux · Feb 26, 2022 Hi, Assuming your question is about HL7 (or EDI) message serialization. The DTL is meant for parsing and transforming the message into another one. Serialization occurs when you output the message using the corresponding instance methods. For an instance of the EnsLib.HL7.Message class, methods that output the message such as OutputToFile() are using instance properties to determine what separators to use : .Separators, .SegmentTerminator. Also, business operations (extending EnsLib.HL7.Operation.Standard) expose a setting (Separators) that let you configure what separators to use.
go to post Robert Barbiaux · Jan 23, 2022 To get an IRIS session integrated in VSCode terminal, you can add it to settings.json : "terminal.integrated.profiles.windows": { "IRIS Terminal": { "path": [ "C:\\InterSystems\\IRISHealth\\bin\\irissession.exe" ], "args": ["<instance name>"], "icon": "terminal-cmd" } } However, this terminal window will lack the niceties of the ISC Terminal application, such as command history.
go to post Robert Barbiaux · Nov 27, 2021 Hi Ben,You can use EnsLib.HL7.Schema ResolveSchemaTypeToDocType() class method to resolve DocType dynamically.For example, if message is an OREF to an instance of EnsLib.HL7.Message : s message.DocType = ##class(EnsLib.HL7.Schema).ResolveSchemaTypeToDocType("2.5",message.Name)
go to post Robert Barbiaux · Oct 21, 2021 Thank you Dmitry, I unfortunately am also quite busy and have no spare time to invest on this nice to have at the moment.It is certainly possible to use the TextMate grammar as basis to write a lexer class for Rouge.I'll let you known if I get started on this !