go to post Marc Mundt · Aug 22, 2021 Create a BS that sends messages to BO every X seconds - it makes production more complex and also queues might not guarantee that the method is executed on schedule. You could try submitting the message to the head of the queue to be sure it gets processed right away.
go to post Marc Mundt · Aug 18, 2021 A couple of things... You'll want to use "O" (output) mode instead of "I" (input) mode:write $zconvert("Flávio","O","HTML") However, I see that this still doesn't replace the "á". But if I add an "&" it replaces it with "&" as expected:write $zconvert("Flávio&","O","HTML")The table at the bottom of this section in the documentation lists which characters are encoded into entities in HTML mode.
go to post Marc Mundt · Jul 29, 2021 I'll be interested to see others' thoughts on this as well, but one approach is: Create a new empty database for the globals Use GBLOCKCOPY or MERGE to copy each of the globals from the current DB to the new globals DB. I believe GBLOCKCOPY is faster than MERGE. After they are copied/merged to the new DB kill the globals in the currrent DB. This then becomes your routines DB. Or you can do the opposite and export all of your routines from the current DB, import them into a new routines DB, then delete them from the current DB which becomes your globals DB. This would be faster than the first approach unless your globals are really small.
go to post Marc Mundt · Jul 28, 2021 %System.OBJ.Load() imports and compiles classes and can be run from another routine or class.
go to post Marc Mundt · Jul 27, 2021 You've written a pretty good description of the Production Generator included in IRIS for Health:https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.UI... This presentation may be of interest:https://learning.intersystems.com/course/view.php?id=1192
go to post Marc Mundt · Jul 27, 2021 As an alternate approach, you could use the Lookup() function to check if the value exists in a lookup table. The advantage is that adding entries to a lookup table is easier/cleaner than updating your DTL with every new entry.
go to post Marc Mundt · Jul 23, 2021 Two more options. Haven't tested how they perform. set lst = "" for i=1:1:someNumber { set $LIST(lst,i)=myval } set str = $listtostring(lst,",") set lst = "" for i=1:1:someNumber { set $PIECE(lst,",",i)=myval }
go to post Marc Mundt · Jul 19, 2021 Have a look at $SCONVERT:https://cedocs.intersystems.com/ens201513/csp/docbook/DocBook.UI.Page.cl... USER>set tIEEE=$c(0,0,220,67) // bytes representing 0000000 00000000 11011100 01000011 USER>write $SCONVERT(tIEEE,"F4") 440
go to post Marc Mundt · Jul 12, 2021 Here's a working example using <img> in a <table>. I don't think you can put an <img> inside an <item> or inside another <img>. <table orient="col"> <block width="40%"> <img src="http://localhost/logo.jpg" contentHeight="0.56in" contentWidth="2.33in" style="text-align:left"/> </block> <block width="40%"> <table orient="col"> <item field='#(..pagetitle)#'/> </table> </block> <block width="20%" style="text-align:right;"> <item field='#(..subtitle)#'/> </block> </table>
go to post Marc Mundt · Jul 9, 2021 These might be helpful:Building a simple Angular app (not FHIR specific):https://community.intersystems.com/post/simple-angular-app-intersystems-... Build SMART on FHIR web app using FHIR JavaScript library (not Angular specific):https://community.intersystems.com/post/smart-fhir-js-library-and-exampl...
go to post Marc Mundt · Jun 30, 2021 It would be good to have a look at the final value of tSQL in performUpdate.
go to post Marc Mundt · Jun 23, 2021 Here is the section in the docs that explains why this is happening and why @Eduard Lebedyuk asked if that class is persistent. Business Process Execution Context The life cycle of a business process requires it to have certain state information saved to disk and restored from disk, whenever the business process suspends or resumes execution. This feature is especially important for long-running business processes, which may take days or weeks to complete. A BPL business process supports the business process life cycle with a group of variables known as the execution context. InterSystems IRIS automatically save the variables in the execution context and restores them each time the BPL business process suspends and resumes execution.
go to post Marc Mundt · Jun 22, 2021 ObjectScript includes utilities for generating GUIDs:https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.UI... In particular, have a look at $System.Util.CreateGUID():https://docs.intersystems.com/irisforhealthlatest/csp/documatic/%25CSP.D...
go to post Marc Mundt · Jun 14, 2021 It seems like this approach would still work with a poolsize > 1. Of course each worker job will decide on its own if it should throttle or not.
go to post Marc Mundt · Jun 10, 2021 There's no option for %DisplayFormatted to split the results into multiple parts automatically. You would need to write a custom method to do your CSV output with the logic you need. I can post some sample code that outputs CSV if that would be helpful. 8 hours for 16 million records at ~140 bytes/record seems really slow. I just did a test on a slow Windows VM and for a simple "SELECT *" for 16 million records @ 150 bytes/record, %DisplayFormatted took about 18 minutes to output the 2.4 GB CSV. I suggest you contact the WRC to help look at where the bottleneck is.
go to post Marc Mundt · Jun 9, 2021 In your assign action, there is a leading space in the property name: <assign value='source.AttendingClinicians.GetAt(st).Code' property=' npicode' action='set' />
go to post Marc Mundt · May 24, 2021 %XML.Reader and %XML.Document won't automatically update the original stream. You need to use %XML.Writer to output the %XML.Document into a stream. set writer=##class(%XML.Writer).%New() set outStream=##class(%Stream.GlobalCharacter).%New() set tSC=writer.OutputToStream(.outStream) set tSC=writer.Document(document) write "Stream:[",outStream.Read(3000000),"]",!