This is a sample to use %JSON.Adaptor class available in IRIS to produce a snapshot of your object.
The sample consists of 2 classes that are variations of what was known in Caché/SAMPLES as Sample.Person. Be aware that the possibilities are limited by %JSON.Adapter and how you make use of it.
Once in place, you create some test data by Populate(). You select an object and take a snapshot. You apply changes to your object and take another snapshot. And see the difference.
In this article I'd like to share with you a phenomena that is best you avoid - something you should be aware of when designing your data model (or building your Business Processes) in Caché or in Ensemble (or older HealthShare Health Connect Ensemble-based versions).
I recently started to work with Ensemble. I defined a subclass of EnsLib.HL7.Message. In my production I receive HL7v2 messages and transport them using the Message Router to a business operation. The operation class has an OnMessage method with parameter
I know there are several alternatives, but I would like to find the easiest & simpler ones to store data coming in Json format from post requests and also allowing me to do SQL queries.
I want to have a property called favouriteColors. I want to store a few colors, and I want to be able to do queries to get top favorite colors, etc... so not handling the list of colors as just a fixed string or fixed object.
In the first one, I have defined a class which Extends (%Persistent, Ens.Util.MessageBodyMethods), we'll call it NSOne.Msg.Req
In the second namespace NSTwo, I want to use the previous class with something like SET pInput = ##class(NSOne.Msg.Req).%New()
I mapped the NSOne.Msg.Req package in namespace NSOne. In Atelier, I can see NSOne.Msg.Req in my NSOne. But, when I try to execute line 2 above, it tells me :
I have a question about the %OnSave method of a class. We have a class that has two properties that are classes.
Class A
Class B
Class C
Class A.PropertyB as Class B
ClassA.PropertyC as Class C
Classes B and C also need to point back to Class A - it's just the way it is. We need to be able to use any one of these classes and get to the others (it's actually even more complicated than this, as Classes B and C also have a PropertyC and PropertyB as well, respectively) :
InterSystems IRIS 2019.1 has been out for a while and I would like to cover some enhancements for handling JSON which might have gone unnoticed. Dealing with JSON as a serialization format is an important part of building modern applications, especially when you interact with REST endpoints.
Some time ago, InterSystems introduced the concept of %DynamicObjects. This feature is a powerful tool that makes it very easy to convert any string of JSON text to objects and vice versa. However, in the work that J2 Interactive is doing for our customers, there are a couple of things that "need some tweaking".
Object Synchronization is a feature that has been around for a while, since Caché days, but I wanted to explore a bit more how it works. I've always thought that database automatic synchronization is complex by nature but, for some particular scenarios shouldn't be so hard. So I considered a very simple use case (OK, perhaps the typical one, I'm not discovering anything... but if it's common and it works, it's good ).
we are wondering if anybody has a reporting tool that is capable using IRIS Objects?
I know there are things like Crystal Reports and others out there who can read the SQL Data throug ODBC but we need the capability of using object methods while running the report.
Since now we where using a JAVA based report generator (ReportWeaver) but since the object binding for JAVA doesn't exist anymore in IRIS data platform, did any of you have an alternative report generator?
As you know there are two (at least) ways to get the stored value of the property of InterSystems IRIS class if you know the ID of an instance (or a record).
1. Get it by as a property of an instance with "Object access":
ClassMethod GetPropertyForID(stId As %Integer) As %String
{
set obj=..%OpenId(stId)
return obj.StringData
}
2. Get it as a value of a column of the record with "SQL access":
Is there a way to get an inventory list of the Services, Processes, Routing, and Operations that are on the system. We get asked constantly from different departments to justify the number of personal we have. We are currently on 2015.2.2, with our upgrade to 2019 set for later this year.
How Tax Service, OpenStreetMap, and InterSystems IRIS could help developers get clean addresses
Pieter Brueghel the Younger, Paying the Tax (The Tax Collector), 1640
In my previous article, we just skimmed the surface of objects. Let's continue our reconnaissance. Today's topic is a tough one. It's not quite BIG DATA, but it's still the data not easy to work with: we're talking about fairly large amounts of data. It won't all fit into RAM at once, and some of it won't even fit on the drive (not due to lack of space, but because there's a lot of junk). The name of our subject is FIAS DB: the Federal Information Address System database - the databases of addresses in Russia. The archive is 5.5 GB. And it's a compressed XML file. After extraction, it will be a full 53 GB (set aside 110 GB for extraction). And when you start to parse and convert it, that 110 GB won't be enough. There won't be enough RAM either.
First time post, also a new Cache developer, hence the <Beginner> tag.
If our data has Predefined terms in a dictionary, and a user can add terms on their own, can the terms exist in different tables?
Lets call the tables "Terms" and the user data in "UserTerms".
If a third class definition has a property of "Term" can it not be either Terms or UserTerms?
I'm leaning towards using a Subclass strategy where the pseudo "Parent" (forgive me) is Dictionary.Term and the child is along the lines of Dictionary.Term.User
"SELECT * FROM wmhISTORYdETAIL" runs as a passthrough without asking for the DNS.
but
'SELECT Count([wmhISTORYdETAIL].[HistHMNumber] AS CountOfHistHMNumber FROM [wmhISTORYdETAIL] WHERE ((([wmhISTORYdETAIL].[HistMovType])='Receipt') AND (([wmhISTORYdETAIL].[HistMovDate])>=Date()-1) AND (([wmhISTORYdETAIL].[HistMovDate])<Date()));'
asks for the DNS but both are linked to a table that has the password saved.
I have an XSL question and I wanted to see if someone within a community can help me out.
To Summarize: I am working with XSL documents, single and multi-pages. Inside my style sheet XML document, which is supporting my pages, everything on the page, including a headers, footers and the items are calculated based on the portrait measurements. Pages come up on the screen as portrait, but sometimes, depending on dynamic data are wide, they do not print properly in portrait.
We have defined four BPL Business Processes. One gets occasionally errors when pool size is two. No errors happen with pool size one. The error happens on calling %Save() on a large objects with many references to other objects.
Error #5803: Failed to acquire exclusive lock on instance of 'classname'.
Actually I am trying to implement a RESt API where in I will get ZIPCODE as request and I need to call external API which will take ZIPCODE as input and give State and City in response.
But the problem is the request is in XML Format and also response is in XML format.
Our lab system is now sending DSC segments in large Pathology results in the ORU message that is followed by a partial continuation message with only MSH and OBX segments. the pointer is in the MSH;14 in the subsequent message. I believe the goal is to concatenate the first and second message but imagine this will require some custom functions which I have not done much of. Anyone already tackled this by chance?
I need to select my result into a list and be able to loop through the list when query finished any help appreciated here is where I am
##sql(SELECT %ID INTO :IDArray() FROM MergeHyland.TypeTwoDimesionCollection WHERE GUID = :Key AND EndDate IS NULL)
for I=1;1:$LISTLENGTH(IDArray)
{
w $Data(IDArray),i
}
Headache-free stored objects: a simple example of working with InterSystems Caché objects in ObjectScript and Python
Neuschwanstein Castle
Tabular data storages based on what is formally known as the relational data model will be celebrating their 50th anniversary in June 2020. Here is an official document – that very famous article. Many thanks for it to Doctor Edgar Frank Codd. By the way, the relational data model is on the list of the most important global innovations of the past 100 years published by Forbes.
On the other hand, oddly enough, Codd viewed relational databases and SQL as a distorted implementation of his theory. For general guidance, he created 12 rules that any relational database management system must comply with (there are actually 13 rules). Honestly speaking, there is zero DBMS's on the market that observes at least Rule 0. Therefore, no one can call their DBMS 100% relational :) If you know any exceptions, please let me know.