go to post Jeffrey Drumm · Mar 7 Something like this, perhaps? Class User.Util.StringFunctions Extends Ens.Util.FunctionSet { ClassMethod ReReplace(pStr As %String, pPat As %String, pRepl As %String = "") As %String { Set tStrt = $LOCATE(pStr,pPat,,tEnd) - 1 // in case the pattern isn't found, return source string Return:(tStrt < 0) pStr Set tPrefix = $EXTRACT(pStr,1,tStrt) Set tSuffix = $EXTRACT(pStr,tEnd,*) Return tPrefix_pRepl_tSuffix } } USER> set mystr = "REASON->Blood(1.23)" USER> set newstr = ##class(User.Util.StringFunctions).ReReplace(mystr,"->\w+") USER> write newstr REASON(1.23) USER> set altstr = ##class(User.Util.StringFunctions).ReReplace(mystr,"->\w+","-CODE") USER> write altstr REASON-CODE(1.23)
go to post Jeffrey Drumm · Oct 21, 2022 Hi Blake, This might get you started in the right direction: Set tRuleName = "<rulename>" Set tTarget = $ORDER(^Ens.Rule.Targets(tRuleName,"")) Set tArr = 0 Set tCnt = 1 While tTarget '= "" { Set tArr(tCnt) = tTarget Set tTarget = $ORDER(^Ens.Rule.Targets(tRuleName,tTarget)) Set tArr = tCnt Set tCnt = tCnt + 1 } Replace <rulename> with the name of the rule as it appears in the router configuration pane.
go to post Jeffrey Drumm · Sep 26, 2022 There's a self-paced training session on BPLs here; it should help get you started. Can you describe the routes that the ADT and ORM messages are taking to get to the downstream system? Are they coming in through different services and/or being delivered downstream over different operations?
go to post Jeffrey Drumm · Sep 23, 2022 A BPL is a Business Process class, so you would add a new Process to your production and select the name of the BPL you created as the class (rather than, say, a routing engine).
go to post Jeffrey Drumm · Sep 16, 2022 With some help from a fellow DC member, I wrote the method below. Its intent is to support auto-resolution of managed alerts: /// Returns the connection status ("AdapterState") of the Business Service or Operation /// named in <var>pItemName</var> ClassMethod GetConnectionStatus(pItemName As %String) As %String [ Language = objectscript ] { Set tStatement = ##class(%SQL.Statement).%New() Set tStatus = tStatement.%PrepareClassQuery("Ens.Util.Statistics","EnumerateJobStatus") If $$$ISERR(tStatus) { Return "Error in Status Query: "_$system.Status.GetErrorText(tStatus) } Set tRS = tStatement.%Execute(pItemName) If tRS.%SQLCODE = 0 { Do tRS.%Next() Return tRS.%Get("AdapterState") } Return "Status not Found" }
go to post Jeffrey Drumm · Aug 8, 2022 Here's a little code snippet that the Management Portal uses to get the Arbiter state: Set state = $SYSTEM.Mirror.ArbiterState() Set thisConnected = $SELECT($ZB(+state,+$$$ArbiterConnected,1)'=0:1,1:0) Set otherConnected = $SELECT($ZB(+state,+$$$ArbiterPeerConnected,1)'=0:1,1:0) If 'thisConnected { Set stateString = $$$Text("This member is not connected to the arbiter") } ElseIf 'otherConnected { Set stateString = $$$Text("Only this member is connected to the arbiter") } Else { Set stateString = $$$Text("Both failover members are connected to the arbiter") } You'll need to add an Include statement for %syMirror to use the $$$Arbiter* macros. Note that the ArbiterState() method is undocumented, and its behavior may change in future releases.
go to post Jeffrey Drumm · Jul 21, 2022 Not sure why yours is showing OpenSSL v3. I'm running IRIS for Health 2022.1.0.209.0 on a Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-121-generic x86_64) physical host and I had no issues with installation. My guess is that it isn't really complaining about openssl, but that libssl isn't at least version 1.1.1. I'd try running (as root): # apt install openssl # apt install libssl1.1 These commands should install pre-compiled binaries. The first one should automatically install openssl 1.1.1f and the 2nd the same version of the libssl libraries. And yes, while I haven't specifically used VirtualBox, I am a long-time user of VMWare on multiple platforms, with multiple Linux guests and versions of Caché/IRIS. Virtualization has, so far, very rarely been an issue.
go to post Jeffrey Drumm · Jul 20, 2022 It's a bug, and InterSystems is aware. It's still present in 2022.1, but I expect it will be fixed in an upcoming release. For now, you'll need to change the resource associated with the database(s) to %DB_%DEFAULT (or whatever you prefer) after the creation of the namespace. That can be done through the management portal, under System Administration | System Configuration | Local Databases.
go to post Jeffrey Drumm · Jul 13, 2022 At some point I encoutered a problem that required I also run this command: setsebool -P httpd_unified 1 I can't remember what it fixed, but I do know by the fact that I made a note of it that it fixed something ...
go to post Jeffrey Drumm · Jun 6, 2022 Yes, in retrospect I should have realized that the DocType Structure was what the constraint required rather than the calculated value in the Name property. Sorry for any head-scratching I might have caused