go to post Jeffrey Drumm · Oct 25, 2020 Hi Eduard, I'm having a bit of trouble applying your solution to my problem. I have only one method in EnsLib.HL7.Message that seems to populate a %Stream.TmpCharacter data type, and it doesn't allow me to "chunk" the data. In the code I posted, I should be returning a %Stream.TmpCharacter object functionally identical to yours. I think I am, but suspect that the ODBC handler in IRIS isn't finding the stream.
go to post Jeffrey Drumm · Oct 24, 2020 Also, I should add that although I had said that I wasn't seeing any errors on the client side (aside from not getting the entire result set), that's not exactly true. No errors were displayed in the client application's GUI, but it was logging them to its log file. In examining that log file I found what appears to be a stream-related entry in the connection string: StreamPrefetch=0. I can't find any documentation on it other than it being mentioned (without a description) in the Using .NET and the ADO.NET Managed Provider with Cache section. I'm assuming it takes a number of bytes(?) as an argument, since all the other boolean entries take True/False as values ...
go to post Jeffrey Drumm · Oct 24, 2020 I'll give that a try, but I'm not optimistic. The data is there; the stream object is getting populated because I can Read() it and return the data as a %String ...
go to post Jeffrey Drumm · Oct 24, 2020 Hi Robert, Same result ... a single row and the same error in the IRIS xDBC log: 2020-10-24 01:35:59 [SQLCODE: <-412>:<General stream error>] [Error: <<INVALID OREF>PrepareStream+6^%SYS.SQLStreamSRV>] [Location: <ReadStreamODBC::PrepareStream>] [Client info: <Username: Jeff, Node Name: WIN10X64-VM01, IP Address: 10.208.8.90, Executable Name: HL7Spy.exe, Internal Function: AS>] [%protocol: <59>] $Id: //adhocs-iris/2020.1.0.217.1/HICG_LLC_001/kernel/common/src/aclass.c#1 $ 21256 11 The method works fine if I define the return type as %String, but only until the query fetches a row with a message larger than MAXSTRING in size. I of course have to Return tMsg.Read() to get the output. When it hits a message that's too large, I get a <MAXSTRING> error in the IRIS xDBC log, but no error is set for the ODBC (actually ADO) client.
go to post Jeffrey Drumm · Oct 23, 2020 Hi Robert, Yes, I get the exact same error whether I use %Stream.GlobalCharacter or %Stream.TmpCharacter.
go to post Jeffrey Drumm · Oct 14, 2020 Hi Nora! Long time Something like this should do the trick, assuming the file to be appended to is named "spoo.txt" and the file from which you're appending is named "fleem.txt": Set tOut = ##class(%File).%New() Set tIn = ##class(%File).%New() Set tSC = 1 Set tOut.Name = "spoo.txt" Set tIn.Name = "fleem.txt" Set sc = tOut.Open("WA") Set:$$$ISERR(sc) tSC=$$$ADDSC(tSC,sc) Set sc = tIn.Open() Set:$$$ISERR(sc) tSC=$$$ADDSC(tSC,sc) Quit:$$$ISERR(tSC) tSC While 'tIn.AtEnd { Set sc=tOut.Write(tIn.Read()) Return:$$$ISERR(sc) sc } Do tIn.Close() Do tOut.Close() Return $$$OK
go to post Jeffrey Drumm · Sep 8, 2020 I'm not finding any significant differences in the supporting classes between HS and I4H 2020.1. You might want to open an incident with the WRC to see why you're successful in I4H and not HS. I'm also thinking that you might be better off developing your NACK logic in a BPL, though. Routing Rules aren't really designed for this sort of thing.
go to post Jeffrey Drumm · Sep 3, 2020 I guess that depends on what you want to do if you get an invalid date. Here's a method you can add to the class I referenced above: ClassMethod IsValidBirthDate(pDate As %String) As %Boolean { Try { Set tHDate = $ZDATEH(pDate) } Catch ex { Return 0 } Return 1 } And you'd use it something like this:
go to post Jeffrey Drumm · Sep 3, 2020 Here's a method that, once created and compiled, will appear in your dropdown list of functions in the rule editor: Class User.Util.DateTime Extends Ens.Rule.FunctionSet { ClassMethod DaysPrior(pDays As %Integer) As %String { Return $ZDATE($H - pDays,8) } } You'd use it in your rule like this: Caveat: The birthdate is assumed to be valid and 8 characters in length. If there's a possibility that you would get an invalid or missing date, the ">" comparison will not be valid.
go to post Jeffrey Drumm · Aug 27, 2020 If you know that there will always be 8 characters at the position of the 2nd "*" character, you should be able to use this pattern instead: TEST_PID*_NDCA_Drug_Utilization_????????_UD.txt
go to post Jeffrey Drumm · Aug 17, 2020 I'm pretty sure that System Default Settings would only solve this issue if you were already using it to "default" the original value for those interfaces. Had you done that, making the update would be a very simple change of one entry in SDS. @Craig.Regester's solution is probably the easiest to implement quickly, but it might also be an opportunity to move to an SDS-based configuration.
go to post Jeffrey Drumm · Jul 1, 2020 Thank you for the clarification. I'm in the middle of a Cache/Ensemble on SUSE -> IRIS for Health on RHEL migration and would prefer to be at the latest available release prior to go-live. But I guess I am, per the release schedule.
go to post Jeffrey Drumm · Jul 1, 2020 Hi Stefan, I'm not seeing the 2020.2 distributions listed for the full kits on the WRC site. Do you know when they will be available?
go to post Jeffrey Drumm · Jun 30, 2020 Would you like us to post feature requests here, on GitHub, or not at all? For example, I want to be able to go back and edit a previously entered line before execution ...
go to post Jeffrey Drumm · Jun 26, 2020 Did you try GetHostSettingValue()? I'm working with 2018.1.2, but I'd be surprised if the API changed.
go to post Jeffrey Drumm · Jun 26, 2020 GetAdapterSettingValue() may give you what you want. The Type parameter isn't needed. Set archiveFilePath=##class(Ens.Director).GetAdapterSettingValue("ReadPDFFileService","ArchivePath",.status) There's a corresponding GetHostSettingValue() method for non-adapter settings that works similarly. Both seem to supply the System Default Setting when the setting is unvalued in the production.
go to post Jeffrey Drumm · Jun 21, 2020 Hi Dmitriy, UPDATE: Also posted as an issue to GitHub Here's the layout in VS Code's Explorer: The code-workspace file from the Workspace top-level directory: Note that I've tried both manually creating the file and adding directories to the workspace using the VS Code menus. The only difference I can see in the result is that the json name value appears in the explorer tree rather than the actual directory name. Hers's a .vscode\settings.json file from one of the directories referenced in the code-workspace file shown above: The oddest symptom is that when I change just one of the settings.json files, all directories change to those value in the OBJECTSCRIPT:EXPLORER view (only the file I've actually edited and saved has the changes in it, though): Thanks for looking into this. PS. Just in case it matters: Version: 1.46.1 (user setup)Commit: cd9ea6488829f560dc949a8b2fb789f3cdc05f5dDate: 2020-06-17T21:13:20.174ZElectron: 7.3.1Chrome: 78.0.3904.130Node.js: 12.8.1V8: 7.8.279.23-electron.0OS: Windows_NT x64 10.0.18362
go to post Jeffrey Drumm · Jun 21, 2020 Hi Dmitriy, I've created the .code-workspace file up as you've described, with the "main" name/path and the "part" names/paths pointing to their respective subdirectories. Each subdirectory has it's own .vscode/settings.json file. However, when I go into Explorer, all of the workspace directories show connections to the same server, not the distinct ones defined for each workspace subdirectory. There are no objectscript.* values defined in the main .code-workspace file or the .vscode/settings.json file in the root of the main workspace directory. I'm obviously missing something, but I've tried a variety of options and I'm stuck. Thanks!