go to post Stephen Canzano · Aug 17, 2021 Can you elaborate on what you mean by "hide" any component under ReportDefinition. The ReportDefinition is where you define the XML document that will be created that is later used by ReportDisplay to output the data for a PDF report, Excel utilizes the ReportDefinition. Just because you have an entity(element/attribute/group) in a ReportDefinition doesn't mean it will be utilized in the ReportDisplay.
go to post Stephen Canzano · Apr 7, 2021 You can look at the contents of zenutils.js to see the actual details of the zen(id) function.
go to post Stephen Canzano · Oct 13, 2020 I dont think your solution is a solution that works long term, someone can regenerate the record map and if your script isn't run then the property would be removed. To answer your last question I think you would have better success if you define the property like Property InsertDate As %UTC [ ReadOnly, SqlComputeCode = {set {*}=##class(%UTC).NowUTC()}, SqlComputed, SqlComputeOnChange = %%INSERT ]; I'm not 100% certain but the initial expression may only be executed as part of an object implementation but not part of an SQL statement. If the RecordMap code is actually doing SQL inserts this may produce better results.
go to post Stephen Canzano · Sep 8, 2020 Late in replying but the differences between sourcing data from Cache vs a warehouse/data mart is that Cache will be able to provide you real-time information vs a warehouse/data mart which can have some degree of staleness, but that's likely obvious. The advantage with a warehouse/datamart is that you could bring in other data and join with that data. At the same time, there would be nothing to exclude you from bringing in external data in the HSPI namespace. We at Ready Computing have extensive experience with reporting of the HSPI data. This includes several ZEN reports, although note that the ZEN reports are just calling SQL Stored Procedures we wrote. We also have DeepSee cubes defined that provide analysis on both the Patient table as well as the Classified pairs data. It should be noted that the Classified pairs table has a number of indices defined to support most use cases for SQL queries. Lastly, we've not found issues with the definition of the Patient table as far as performance goes.
go to post Stephen Canzano · Aug 9, 2020 Ok so this is definetely Centricity Business aka Flowcast and not GroupCast. Generally speaking your query looks correct but some considerations The join is incorrect. Following your exact FROM clause, you would consider FROM Registration.Patient reg JOIN BAR.Invoice BAR on BAR.GID = Reg.ID JOIN Dict.Provider prov on prov.Id=BAR.prov There is an index on bar.invnum so there is no issue with indices defined. Note that properties/columns are properly typed in these classes so you could make the statement more concise by doing SELECT Grp, GID->PatNm As Guarantor, GID->MRN As MRN Prov->Name As Provider, SetDt, FROM BAR.Invoice WHERE InvNum BETWEEN 63882965 and 64306671
go to post Stephen Canzano · Jun 24, 2020 You could also use ZEN Reports and the <barcode> element to render a number of barcode types https://cedocs.intersystems.com/latest/csp/docbook/Doc.View.cls?KEY=GRPT_common_display_elements#GRPT_barcode_element
go to post Stephen Canzano · May 17, 2020 Not to my knowledge. While there is a global node in the storage map that is used to get the next available Id this would only work on tables/objects based on a single integer id. At the same time, this is the next available Id and does not account for physical deletes that may have occurred, ie the next Id might be = 101 but you may have fewer than 100 rows/objects as some may have been deleted. The simplest way to accomplish this would then to perform a SELECT COUNT(*) FROM TableName. If the table implements this bitmap indices this should be ms. If you don't get the performance you want you might consider adding %PARALLEL to the FROM clause and let the optimizer decide if it makes sense to split the job.
go to post Stephen Canzano · May 13, 2020 I'm not sure I completely understand your question but one thing I have had to use recently is found here https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=D2MODEL_prop_for_list I had a level which was a list and I too wanted to define properties for the level, the property would be for each element of the level/list. In my case I defined my level to run off of an expression where my expression returned a list of values. Then for my property definition, I used an expression as well. In the expression, I called a method passing %value. Hope this gives you something to go on.
go to post Stephen Canzano · Apr 3, 2020 I've used the Security.Users class in %SYS as well as Security.Roles. In both cases the documentation suggests you should use the methods to interact with the data.. ie call the Create, Get, Delete methods found in the corresponding class.