go to post Vic Sun · Aug 24, 2020 Perhaps DATEDIFF from a previous question on the developer community would work? https://community.intersystems.com/post/how-compare-time
go to post Vic Sun · Aug 24, 2020 Hey Keshav, I'm not aware of a built-in time comparison function. An alternative to using zdateh and ztimeh may be to use ##class(Ens.Util.Time).ConvertDateTime, but I think for the actual comparison you'll need to convert to a matching target format. Format specifications are documented here: Time Stamp Specifications for Filenames
go to post Vic Sun · Aug 19, 2020 If MLLP had already been in use, what change was made to prevent the "discarding received non-HL7 data" messages? Does that give any clue to what is happening with those particular messages? Perhaps you could try enabling "Log Trace Events" which might tell you more about what step in the processing is getting stuck. What is the process for handling these messages manually, and how does it differ from normal processing? Those are the other kinds of things I would look at, though looking at the specific messages that trigger this issue is definitely a good step. I would definitely be interested in an update once you've figured this out.
go to post Vic Sun · Aug 13, 2020 Hello Matthieu, I suspect this is an issue with the framing. You are using MLLP framing meaning each message is expected to be surrounded by ASCII 11 prefix and 28,13 suffix. In hex that's 0B prefix and 1C, 0D suffix. The error you're getting implies that the ASCII 13 is never being received. I would check to make sure the acks have the proper framing, and that the framing you are using for your operation matches what the downstream system expects, and vice versa.
go to post Vic Sun · Aug 11, 2020 I wouldn't recommend using ZU commands as they are deprecated so they are not guaranteed to always work. Errors returned can occasionally be COS error codes, or they might boil down to OS error codes. It depends on the function; I don't know if there's a universal method that differentiates. I think you need to look at what you're calling. Often the class reference gives details on what error codes to expect. In your particular case, referring to the %Library.File.CopyFile class reference: "This method returns true if it succeeds and false otherwise. Pass return by reference to obtain the low level return value in case of errors which is the negative value of the operating system return code."
go to post Vic Sun · Aug 5, 2020 Glad I could help! You might find the following documentation helpful as well: Virtual Property Paths I have always found it useful to experiment with virtual property paths in the terminal as is explained in the bottom section of that page.
go to post Vic Sun · Aug 4, 2020 Hi Jeff, Perhaps you are using shorthand and I would need to see a larger sample of your code, but in your actual code are you using SetValueAt? If you're transforming HL7 messages you will need to use that method. SetValueAt is the other side of the GetValueAt coin.
go to post Vic Sun · Aug 4, 2020 Where does J get set? Your loop is setting h from 1:1:x. Perhaps you want to use h instead of J.
go to post Vic Sun · Jul 30, 2020 My guess is this has something to do with your web application definitions in HealthShare, but I don't have any conclusive suggestions, so I'd second Pete's suggestion.
go to post Vic Sun · Jul 29, 2020 Hi Oliver, I'm not sure exactly what steps you have done already but did you follow the directions in this documentation?Configuring the Enterprise Message Bank
go to post Vic Sun · Jul 23, 2020 Hey Jonathan, Perhaps you've already seen them, but I'd check out these posts regarding VS Code and Atelier/Studio. https://community.intersystems.com/post/atelier-and-studio https://community.intersystems.com/post/intersystems-joins-open-source-o... VS Code is being worked on/developed but has not yet reached an official InterSystems 1.0 release; my bet is when it has reached a threshold of completeness it will find its way into the documentation. If you want to try out VS Code to get familiar with it and contribute to its development, that seems like a totally viable option. Re: Atelier/Studio in the meantime, per Andreas' comment you can keep using either as they will be maintained indefinitely, they just won't see enhancements.
go to post Vic Sun · Jul 23, 2020 Hi Jonathan, For community edition there's IRIS and IRIS for Health, but not HealthShare or Trak. HealthShare and IRIS for Health docs are available at docs.intersystems.com (link in the top bar of the community). Not sure about Trak.
go to post Vic Sun · Jul 20, 2020 Yes, I am familiar with this type of <PROTECT> and I'm sure I need read access for a system database. More narrowly, I think there might be 1 or a few queries that are run by the production configuration page that require that access, so perhaps full read access might not even be necessary. I was really only setting up this user to test for Carl, as I personally rely on the standard roles that don't have these problems.
go to post Vic Sun · Jul 20, 2020 Yes, probably WRC would be the next step. I tested on HealthShare Health Connect so I did not have the MPRL resources, but I tried making a user with R/W database permissions and just the resources you listed and was able to navigate from the SMP home page to the production page. I did get a <PROTECT> error so there's probably something still missing, but I got further than you seem to be able to.
go to post Vic Sun · Jul 17, 2020 Good catch, I accidentally deleted an extra character while adding the underscores. Happy to help! I did also comment on your post from last week with an example of a loop - I hope that can give you some ideas as well.
go to post Vic Sun · Jul 17, 2020 Hi Jeff, You're including "index" in the string. You would need to concatenate it in for it to take its value, such as:set addarray(1) = source.GetValueAt("PIDgrpgrp(1).ORCgrp(1).OBXgrp("_index_".OBX:ObservationValue(1)")
go to post Vic Sun · Jul 16, 2020 Hello Carl, Take a look at the following docs regarding Ensemble management portal resources: Controlling Access to Management Portal Functions
go to post Vic Sun · Jul 8, 2020 Hey Jeff, I wrote up a quick sample that doesn't get quite what you wanted, but I think it's close enough that you'll be able to take it from there. If not, feel free to ask further. My sample reverses the first FT1grps and leaves the last one in the final slot. First I used * to get the count: Counting Fields If you wanted to implement some more complex logic you could potentially do it here. Alternatively, you might want to write a custom utility function to perform the chunking and reversal. This keeps your code more compartmentalized and keeps too much from sitting in the DTL itself. Defining Custom Utility Functions