go to post Scott Roth · Feb 3 With some help from the Developer community, below is a Function I wrote for our needs to take a Base64 and write it out to a PDF. ClassMethod DecodeBase64HL7ToFileFaxing(base64 As %Stream.GlobalBinary, Ancillary As %String, FileName As %String) As %String { set ArchDir = <directory> set ArchAncDir = ArchDir_Ancillary_"/" set FaxDateDir = ArchAncDir_$PIECE($ZDATE($HOROLOG,7)," ",1)_"-"_$PIECE($ZDATE($HOROLOG,7)," ",2)_"-1/" if '##class(%Library.File).DirectoryExists(ArchDir) { do ##class(%Library.File).CreateDirectory(ArchDir) } if '##class(%Library.File).DirectoryExists(ArchAncDir) { do ##class(%Library.File).CreateDirectory(ArchAncDir) } if '##class(%Library.File).DirectoryExists(FaxDateDir) { do ##class(%Library.File).CreateDirectory(FaxDateDir) } set Oref = ##class(%Stream.FileBinary).%New() $$$LOGINFO(FaxDateDir_FileName) set Oref.Filename = FaxDateDir_FileName Do base64.Rewind() While 'base64.AtEnd { set ln = base64.ReadLine() set lnDecoded = $system.Encryption.Base64Decode(ln) do Oref.Write(lnDecoded) } Do Oref.%Save() do ##class(%File).SetAttributes(Oref,33261,.return) set Oref = "" // Close file set PDFFilePath = "/Fax/PDFFiles/"_Ancillary_"/"_$PIECE($ZDATE($HOROLOG,7)," ",1)_"-"_$PIECE($ZDATE($HOROLOG,7)," ",2)_"-1/"_FileName return PDFFilePath }
go to post Scott Roth · Jan 14 I am still working with WRC and Microsoft to determine where the issue is.
go to post Scott Roth · Dec 27, 2024 I ended up writing a function with some help from the Developer community to do this. The function basically iterates through the the HL7 message and check it against a Data Lookup Table. I am in the office in two week and will share it once I am back in the office.
go to post Scott Roth · Jul 16, 2024 In this post https://community.intersystems.com/node/539431 from Apr 6, 2023, @Mark.O'Reilly9949 mentions building a custom function to Purge Custom Messages using a Data Lookup table. However, it does delete by message count and not by days, which is something I am not fond of, and I haven't been able to get it to work for our needs either.
go to post Scott Roth · Jul 3, 2024 Robert is correct, more detail is needed. However, as an example, we take HL7 messages and using specific structure classes to match stored procedures, we send calls to an EnsLib.SQL.OutboundAdapter using JDBC to update, insert, and query MS SQL.
go to post Scott Roth · May 9, 2024 When using a Code block, I find that I have to put a space in at the beginning of the code.
go to post Scott Roth · May 6, 2024 I had to change the Access Control Rule (setfacl) on each of the files/folders to allow my non-root user access to the files/folders, using setfacl.
go to post Scott Roth · Apr 22, 2024 ConvertDateTime works well... Ens.Util.FunctionSet (ENSLIB namespace) - InterSystems IRIS Data Platform 2024.1 - including private class members when you call it within a DTL you can specify the incoming and outgoing formats like ..."%d/%m/%Y", "%Y%m%d"
go to post Scott Roth · Oct 30, 2023 We have turned off Telnet, and use ssh to connect to our servers, then open a terminal prompt by running... :>iris session <name space> There are many different clients out there from Windows Terminal, Cygwin, MobaXTerm, XWin32, even Windows Powershell would work with ssh. It all a matter of preference...
go to post Scott Roth · Oct 6, 2023 I tracked down the issue to %Service_Login being disabled, as I thought this service was just used for API calls and not internally.
go to post Scott Roth · Oct 6, 2023 While thinking about this, I am wondering if using an encryption key might be a possible solution as well that way there is limited access to the password, and the key would just have to be regulated to be updated every so often. With using a AD service account, the password still needs to be updated or kept up to date, and still needs to be passed into the shell script for Terminal to open. I have submitted the following IDEA... https://ideas.intersystems.com/ideas/DPI-I-466
go to post Scott Roth · Sep 6, 2023 I posted this as an Idea on the Idea Portal... https://ideas.intersystems.com/ideas/DPI-I-368
go to post Scott Roth · Aug 28, 2023 At the Java Gateway Service, I have specified the following JVM Args -d64 -XX:+DisableExplicitGC -XX:+AggressiveOpts At the %JDBCServer level, I have specififed -d64 -Xmx1024m -XX:+DisableExplicitGC -Xss512k I have often asked for Best Practices but have not had much response. You have to play with the settings as you go...
go to post Scott Roth · Aug 3, 2023 The issue was with the code that I was using in my Business Operation that was not calling the SSL Configuration. I have since reverted my Business Operation code back to the more standard code that is described in the Documentation, however I am still running into issues making sure the correct format of the Header is being sent in the REST API call, and how to interpret the JSON that is being returned by the REST API.
go to post Scott Roth · Aug 3, 2023 According to WRC there is a memory leak with the way the Class Path of the driver is being handled. The reason for this issue was that I had the Class Path defined within the SQL Gateway. I thought this was only due to the jTDS driver we were using, but it is an overall issue with any Java Gateway Service. So I updated the Java Gateway service I was using for the Microsoft JDBC Connection for that Database to now have the Class Path of the driver, and I have not seen issues since.
go to post Scott Roth · Jul 20, 2023 For others I figured out the issue. Had to use the Base64 formatted Certificate Chain (p7b) from Windows ADCS (Active Directory Certificate Service). Download Base64 p7b to /etc/pki/ca-trust/source/anchors/ in RedHat Change ownership group to include irisusr Change permissions to Read (666) Convert p7b to pem sudo openssl pkcs7 -in xxxxx.p7b -print_certs -out xxxxx.pem When I went through testing the request I got the following... DEVCLIN>set request=##class(%Net.HttpRequest).%New() DEVCLIN>set request.Server = "xxxxxxxxxxxx" DEVCLIN>set request.Port=443 DEVCLIN>set request.SSLConfiguration="OSUWMC" DEVCLIN>set request.Https=1 DEVCLIN>set tSC=request.Get("/",2)HTTP/1.1 200 OKACCEPT-RANGES: bytesCACHE-CONTROL: privateCONTENT-ENCODING: gzipCONTENT-LENGTH: 467CONTENT-TYPE: text/htmlDATE: Thu, 20 Jul 2023 20:08:54 GMTETAG: "b072b0f23afdd01:0"LAST-MODIFIED: Fri, 02 Oct 2015 17:51:21 GMTNTCOENT-LENGTH: 701SERVER: Microsoft-IIS/8.5X-POWERED-BY: ASP.NET <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>IIS Windows Server</title><style type="text/css"><!--body { color:#000000; background-color:#0072C6; margin:0;} #container { margin-left:auto; margin-right:auto; text-align:center; } a img { border:none;} --></style></head><body><div id="container"><a href="http://go.microsoft.com/fwlink/?linkid=66138&clcid=0x409"><img src="iis-85.png" alt="IIS" width="960" height="600" /></a></div></body></html>
go to post Scott Roth · Apr 20, 2023 I didn't realize I had posted this same error years ago. The answer was in my other post. In the DTL I was setting the Path = tSC which was being used in other ways.
go to post Scott Roth · Apr 10, 2023 The problem was from having the Port Authority previously setup using the Namespace before it was recreated. Working with WRC, I had to delete the existing Doc DB IRIS Interoperability from Doc DB Applications, remove the existing job from the task manager, and recreate the Task Scheduler job to have it recreated.
go to post Scott Roth · Dec 22, 2022 Using Ens.Director EnableConfig Item someone in our team wrote a shell script that runs on cron to start and stop objects. Or run it off the scheduler or task schedule.