go to post Eduard Lebedyuk · Mar 14, 2019 Can you try restarting the instance?CSP absolutely should work.Also check this post about clearing cached elements from webserver.
go to post Eduard Lebedyuk · Mar 13, 2019 I never use return unless I really do want to exit from the method while inside some inner loop. So mainly I use quit.
go to post Eduard Lebedyuk · Mar 13, 2019 You can separate a file into structured data using Virtual Document API.
go to post Eduard Lebedyuk · Mar 12, 2019 To import HL7 into Ensemble please refer to these guides.Generally it could look like this: HL7 → Virtual Document → Persistent storage → SQL GateWay → MS SQL Server.
go to post Eduard Lebedyuk · Mar 12, 2019 -Creating SSL/TLS configurations in S1's Healthshare portal (also tried with a %SuperServer... but where and how could I use them ? I haven't found it)Your SSL configuration should be called %SuperServer. Currently it's called AccDirSsl. You need to create new/rename existing configuration to %SuperServer.Also, can you show a screen from the Portal’s System-wide Security Parameters page (System Administration > Security > System Security > System-wide Security Parameters)? For the Superserver SSL/TLS Support choice, you should select Enabled (not Required).Also does HS OS user has access to C:\chr11614pem? I'd try to copy certificates/keys to HS temp directory and modify paths in config accordingly.
go to post Eduard Lebedyuk · Mar 11, 2019 From docs. RETURN and QUIT differ when issued from within a FOR, DO WHILE, or WHILE flow-of-control structure, or a TRY or CATCH block.You can use RETURN to terminate execution of a routine at any point, including from within a FOR, DO WHILE, or WHILE loop or nested loop structure. RETURN always exits the current routine, returning to the calling routine or terminating the program if there is no calling routine. RETURN always behaves the same, regardless of whether it is issued from within a code block. This includes a TRY block or a CATCH block.In contrast, QUIT exits only the current structure when issued from within a FOR loop, a DO WHILE loop, a WHILE loop, or a TRY or CATCH block. QUIT exits the structure block and continues execution of the current routine with the next command outside of that structure block. QUIT exits the current routine when issued outside of a block structure or from within an IF, ELSEIF, or ELSE code block.
go to post Eduard Lebedyuk · Mar 11, 2019 If you already have HL7 message inside Ensemble you can use Caché SQL Gateway which provides access from Caché to external databases via JDBC and ODBC. You can use SQL Gateway (probably in ODBC mode) to update SQL Server table(s).
go to post Eduard Lebedyuk · Mar 11, 2019 How can I code without: quit:$$$ISERR(sc) sc it's basically 5% of the code I write.
go to post Eduard Lebedyuk · Mar 10, 2019 Your options are:Contact your nearest InterSystems office for discussion and WRC account. List of offices.Free InterSystems IRIS Community Edition.AWSAzureGCPFree online learning courses (they include InterSystems IRIS container as InterSystems Labs).
go to post Eduard Lebedyuk · Mar 10, 2019 Cache is officially supported on Ubuntu 16.04 LTS according to Supported Platforms table.If you're just starting I recommend using InterSystems IRIS (which is supported on Ubuntu 16.04 LTS and 18.04 LTS among other platforms).You can download all kits from WRC:
go to post Eduard Lebedyuk · Mar 9, 2019 You can try to write to a TCP device with SSL. Doesn't require additional permissions: ClassMethod Exists(ssl As %String) As %Boolean { #dim exists As %Boolean = $$$YES set host = "google.com" set port = 443 set timeout = 1 set io = $io set device = "|TCP|" _ ##class(%PopulateUtils).Integer(5000, 10000) try { open device:(host:port:/SSL=ssl):timeout use device // real check write "GET /" _ $c(10),*-3 // real check - end // should be HTTP/1.0 200 OK but we don't really care //read response:timeout //write response } catch ex { set exists = $$$NO } use io close device quit exists } It's slower than direct global check but if you want to do it rarely, I think it could be okay. Doesn't require additional permissions. Code to compare times: ClassMethod ExistGlobal(ssl) [ CodeMode = expression ] { $d(^|"%SYS"|SYS("Security","SSLConfigsD",ssl))#10 } /// do ##class().Compare() ClassMethod Compare(count = 1, ssl = "GitHub") { Write "Iterations: ", count,! Write "Config exists: ", ..Exists(ssl),! set start = $zh for i=1:1:count { set exists = ..Exists(ssl) } set end = $zh set time = end - start Write "Device check: ", time,! set start = $zh for i=1:1:count { set exists = ..ExistGlobal(ssl) } set end = $zh set time2 = end - start write "Global check: ", time2,! } Results: Iterations: 1 Config exists: 1 Device check: .054983 Global check: .000032 Iterations: 1 Config exists: 0 Device check: .017351 Global check: .00001 Iterations: 50 Config exists: 1 Device check: 2.804497 Global check: .000097 Iterations: 50 Config exists: 0 Device check: .906424 Global check: .000078
go to post Eduard Lebedyuk · Mar 9, 2019 You can use negative integers to subtract hours. DATEADD also words with timestamps: write $SYSTEM.SQL.DATEADD("hour", -3, "2019-03-09 10:00:00") >2019-03-09 07:00:00
go to post Eduard Lebedyuk · Mar 9, 2019 I can use ($ztimestamp) to get UTC time and then convert it into local time i am using the below way is this correct? SET stamp=$ZTIMESTAMPw !,stampSET localutc=$ZDATETIMEH(stamp,-3)w $ZDATETIME(localutc,3,1,2)Yes, sure.My Question is how i can program this task in the below wayYou heed to add three hours. Use DATEADD method for this: write $SYSTEM.SQL.DATEADD("hour", 3, yourDate)
go to post Eduard Lebedyuk · Mar 9, 2019 ODBC log and maybe Audit log can contain additional information.
go to post Eduard Lebedyuk · Mar 8, 2019 IRIS Text Analytics/iKnow and Analytics/DeepSee are enabled on per-application basis. Interoperability/Ensemble/HealthShare are enabled on a per-namespace basis.First you need to get default application from the namespace: set namespace = "USER" set app = $System.CSP.GetDefaultApp(namespace) _ "/" And then call one of these methods: do EnableIKnow^%SYS.cspServer(app) do EnableDeepSee^%SYS.cspServer(app) If you want to enable Interoperability/Ensemble call: set sc = ##class(%EnsembleMgr).EnableNamespace(namespace,1)
go to post Eduard Lebedyuk · Mar 7, 2019 You can do that in Analyzer.Choose the row/column you want displayed this way, click on it's settings and set italic header:
go to post Eduard Lebedyuk · Mar 7, 2019 You can use CreateDirectoryChain method of %File class to create directory tree instead of several calls to CreateDirectory.
go to post Eduard Lebedyuk · Mar 7, 2019 Link to file doesn't need for a file to exist, but the containing directory must exist and should be writable by a OS user (cacheusr in uyour case probably).I'd try to write into a temp dir first, where you're sure you have access: set file = ##class(%File).TempFilename("pdf") set sc = stream2.LinkToFile(file) quit:$$$ISERR(sc) sc record value of file somewhere (output to display or store in global) and check if the file was created). %Save method also returns status, you should return it instead of $$$OK: set sc = stream2.%Save() quit sc