go to post Sylvain Guilbaud · Sep 11, 2023 You're absolutely right @Alexander KoblovUsing GRANT statements does the job perfectly well 😊
go to post Sylvain Guilbaud · Sep 11, 2023 The good news is that FHIR SQL Builder is now fully supported for production use since IRIS for Health 2023.1 (after having been an experimental feature in 2022.3) You can access its documentation as a component of IRIS for Health.
go to post Sylvain Guilbaud · Sep 11, 2023 You can also get IRIS and IRIS for Health images from the WRC : https://wrc.intersystems.com/wrc/coDistContainers.csp
go to post Sylvain Guilbaud · Sep 8, 2023 The answer has been given in French here by @Lorenzo Scalese You can create a custom class query like this: Class dc.Frank { Query QueryAFO() As %Query(ROWSPEC = "key1:%String,key2:%String,key3:%String,key4:%String,key5:%String,key6:%String,datavalue:%String") [ SqlProc ] { } ClassMethod QueryAFOExecute(ByRef qHandle As %Binary) As %Status { Set qHandle("node") = $Name(^AFO) Quit $$$OK } ClassMethod QueryAFOFetch( ByRef qHandle As %Binary, ByRef Row As %List, ByRef AtEnd As %Boolean) As %Status [ PlaceAfter = QueryAFOExecute ] { Set sc = $$$OK Set qHandle("node") = $Query(@qHandle("node"), 1, data) If qHandle("node") = "" Set Row = "", AtEnd = $$$YES Quit $$$OK ; feeds the key x fields based on the subscripts of the global For i=1:1:$QLength(qHandle("node")) Set $List(Row, i) = $QSubscript(qHandle("node"), i) If i < 6 { ; if we do not have 6 subscripts, we feed the rest with an empty string For j = i+1:1:6 Set $List(Row, j) = "" } Set $List(Row, 7) = data, AtEnd = $$$NO Quit sc } ClassMethod QueryAFOClose(ByRef qHandle As %Binary) As %Status [ PlaceAfter = QueryAFOExecute ] { Kill qHandle Quit $$$OK } /// just for some test data ClassMethod set() { s ^AFO("Site","Ville")="66722,3743" s ^AFO("Site","Ville","111BB","OBT")=",MMM,XXX," s ^AFO("Site","Ville","111OW","OBT")=",XXX,MMM," s ^AFO("Site","Ville","AANVRBIBS","zzz") = "1^^1" s ^AFO("Site","Ville","AANVRBIBS","zzz","*","dut") = "*afhalen waar gevonden" s ^AFO("Site","Ville","AANVRBIBS","zzz","*","eng") = "*Pickup where found" s ^AFO("Site","Ville","AANVRBIBS","zzz","*","fre") = "*Lieu où trouvé" } } You can then easily exploit it with the following query: select * from dc.Frank_QueryAFO() In terminal mode, you can also simply use this line to display the results: Do ##class(dc.Frank).QueryAFOFunc().%Display() For my part, I carried out the test on IRIS 2023.2, there should be no incompatibility, but if you notice a problem do not hesitate to respond with the error message.
go to post Sylvain Guilbaud · Sep 6, 2023 Very good introduction to Docker ; thanks again @Muhammad Waseem 😀And again, now available in French.
go to post Sylvain Guilbaud · Sep 6, 2023 Great article ; thanks @Muhammad Waseem (I've translated it in French 😀)
go to post Sylvain Guilbaud · Sep 6, 2023 Furthermore, the Management Portal will tell you the current mode of your IRIS instance, which sometimes allows you to avoid handling errors by confusing your different instances. Below you see immediately that this instance is a LIVE one :
go to post Sylvain Guilbaud · Sep 6, 2023 NB : $SYSTEM.Version.SystemMode() will return a null string if it has never been assigned any mode. It is a very good practice to initialize a new IRIS instance immediately after its creation.
go to post Sylvain Guilbaud · Sep 4, 2023 Hi @Yuri Marx, and today, you can add to this list : Embedded Python Adaptive Analytics (AtScale) System Alerting and Monitoring (SAM) InterSystems Kubernetes Operator (IKO) SQL improvements on performances and capabilities (Global Iterator, Columnar Storage, Adaptive Parallel Execution, LOAD DATA, etc.) Kernel enhancements (Mirroring, etc.) Security enhancements etc. (see release notes)
go to post Sylvain Guilbaud · Sep 4, 2023 Hi @Yuri Marx, at the very first topic, I will put at the top of your list : 0. better performances It can be seen as obvious, but IRIS is **really** faster than Caché.
go to post Sylvain Guilbaud · Aug 31, 2023 Hi @Anup Thakkar, the simplest way to always stay in the current century is : $ZDATEH("05/26/23",,,6) You just need to use year-opt = 6 to get all dates with two-digit years in the current century . w $zdt($ZDATEH("05/26/23",,,6),3) 2023-05-26 w $zdt($ZDATEH("05/26/1923",,,6),3) 1923-05-26
go to post Sylvain Guilbaud · Aug 31, 2023 SQL Alchemy with IRIS is a great way to simplify the bridge between IRIS and Python objects.Thanks @Heloisa Paiva for this article and @Dmitry Maslennikov for your IRIS dialect for SQLAlchemy.
go to post Sylvain Guilbaud · Aug 30, 2023 To activate all system AUDIT events, simply execute the following SQL query from the namespace %SYS : update security.events set enabled=1 where flags = 1 example : set tRes = ##class(%SQL.Statement).%ExecDirect(,"update security.events set enabled=1 where flags = 1") if tRes.%SQLCODE=0 { set ^["USER"]TRACE("%SYS Security.Events")=tRes.%ROWCOUNT_" successfully enabled" } else { set ^["USER"]TRACE("%SYS Security.Events")=tRes.%Message_" SQLCODE:"_tRes.%SQLCODE }
go to post Sylvain Guilbaud · Aug 30, 2023 This was typically my first thinking when I said "by creating a user in IRIS with restricted rights, this list can be reduced, but the interest of the %All role is lost."
go to post Sylvain Guilbaud · Aug 29, 2023 Good to know.I had no idea of this quite combersome workflow with the information in this thread of discussion.Maybe some other Python libraries could be of help here.