Article
· Jul 8, 2020 7m read
Tips for debugging with %Status

Introduction

If you're solving complex problems in ObjectScript, you probably have a lot of code that works with %Status values. If you have interacted with persistent classes from an object perspective (%Save, %OpenId, etc.), you have almost certainly seen them. A %Status provides a wrapper around a localizable error message in InterSystems' platforms. An OK status ($$$OK) is just equal to 1, whereas a bad status ($$$ERROR(errorcode,arguments...)) is represented as a 0 followed by a space followed by a $ListBuild list with structured information about the error. $System.Status (see class reference) provides several handy APIs for working with %Status values; the class reference is helpful and I won't bother duplicating it here. There have been a few other useful articles/questions on the topic as well (see links at the end). My focus in this article will be on a few debugging tricks techniques rather than coding best practices (again, if you're looking for those, see links at the end).

15 7
11 1.8K

I have some code in a mac routine that use indentation and the "." character :

 IF condition1 DO
     .WRITE YCR,...
     .WRITE YCR,...
     .WRITE YCR,...

I would like to add a try / catch block between the write statements.
I can't refactor the whole code and use indentation with curly braces instead (there is too much code, not written by me)

I have tried the following but it does not work (it compiles, but code stop running right before the try keyword)

0 2
0 255
Question
· Jan 27, 2021
License occupied 100% situation

许可证检测中,当前许可证使用达到100%,我们应该如何迅速处理解决它?并且不影响生产环境。 In license detection, the current license usage reaches 100%. How can we deal with it quickly? And does not affect the production environment.

0 5
0 279
Question
· Jan 13, 2021
Handling Errors

I have a case where our EMR is sending data, but not all the values needed for the Ancillary are valued properly and causes that message to error/halt processing on the Ancillary system, not ideal but its what they do. I would expect them to still process the message except that 1 field, but they don't.

I want to add validation to make sure certain fields are valued correctly for the Vendor.

So I add some statements to take those items that don't pass this validation out to a batch file with headers.

0 9
0 735
Question
· Dec 23, 2020
Global ^Errors growing fast

Hello guys.

Can anyone help me about Global ^Errors? Only in 1 specific namespace is it growing fastly. It grows from 2 to 3 Gb per hour when all services are active. Which commands exactly do this? In another similar namespaces, there is not that Global in the class list.

Thanks.

0 4
0 265

Hello All,

I connected the Cache from Power BI using ODBC connection. And I can able to view the tables but I could't able to view the data records. getting some error when I shoot on the table name. I couldn't trace what I'm missing. Please help me.

Error Message: "Value cannot be null. Parameter name: exceptionType"

Thanks,

0 2
0 311

Hi, we suddenly noticed that one of the edge storage increased by 30% and it was due to ERROR globals which was throwing repeated error for 7 days and it consumed 35GB space. Is there a way to log the storage of edge production on daily basis and compare the increase in storage with previous day and if increase is 5% more than trigger an email to system admit to look why the storage increased suddenly.

0 3
0 248

We're looking to grow our team by adding an experienced healthcare interoperability resource to focus on Participant onboarding and troubleshooting, and testing and evaluation of in-house and third-party software solutions to ensure compliance with organizational standards and requirements.

Details of position are available on our Careers page.

#healthcare #remotework

0 0
0 326
Discussion
· Sep 28, 2020
%Status usage in ObjectScript

Hi developers!

Want to discuss with you the case of %Status.

If you familiar with ObjectScript you know what is it. I'd love to hear the history of the case why it had appeared in ObjectScript but it turned out that almost every system/library classmethods return %Status and there is a whole set of tools to deal with it.

What is does it gives you the responsibility to check the value or %Status of every system method you call.

E.g. if you save the data of the persistent class, you should never call like this:

do obj.%Save()

you need to call:

set sc=obj.%Save()

if $$$ISERR(sc) do // something or quit.

1 19
0 957
Article
· Aug 2, 2020 1m read
Application Errors Analytics

Hi Developers!

As you know the application errors live in ^ERRORS global. They appear there if you call:

d e.Log() 

in a Catch section of Try-Catch.

With @Robert Cemper's approach, you can now use SQL to examine it.

Inspired by Robert's module I introduced a simple IRIS Analytics module which shows these errors in a dashboard:

3 5
1 297

The intersystems documentation gives the same description for both <MAXSTRING> and <NETWORK DATA UPDATE FAILED - MAXSTRING>. I suspect that the description for <MAXSTRING> is correct and the description for <NETWORK DATA UPDATE FAILED - MAXSTRING> was an accident. I would like to know what situation triggers the <NETWORK DATA UPDATE FAILED - MAXSTRING> error.

0 2
0 398
Article
· Mar 28, 2019 2m read
ObjectScript error handling snippets

ObjectScript has at least three ways of handling errors (status codes, exceptions, SQLCODE, etc.). Most of the system code uses statuses but exceptions are easier to handle for a number of reasons. Working with legacy code you spend some time translating between the different techniques. I use these snippets a lot for reference. Hopefully they're useful to others as well.

22 5
19 3.1K

In a Business Process (BPL) I noticed that if I 'm using a "scope" to handle errors then inside the "scope" when a "call" is used, the "request" and "response" action (i.e set for callrequest.prop = request.prop & response.prop = callrespones.prop does NOT work !
The result is that the values of those properties in the callrequest are nulls (I do see the properties names in the content of the callrequest message)

0 1
0 272

I have an XML I am sending to an operation from a BPL. This is a query for Patient information from Epic using a web service. I created the operation using the add-in in Studio. I setup the BPL to do a Call and send whatever data I receive from the client. I get a response back from Epic with a list of matching Patients. In the BPL I am trying to use the Response Builder to pass the response ID, name, DOB, etc. to matching context items to then pass to the client as a response. I get the following error within the call:

0 4
0 1K

How can I prevent large number truncation when using the DynamicObject and DynamicArray classes to create JSON in objectscript and then parsing the result in javascript. Are there any global settings that configure the output when using these classes?

I am looking at converting to the new DynamicObject and DynamicArray classes to build JSON. Our current (homegrown) JSON library forces string representation of numbers too long because of errors we were seeing with long numbers being truncated on the client, I am hoping to accomplish the same with the new classes.

0 2
0 1.2K
Article
· Oct 6, 2016 4m read
RESTful Exception Handling

A beginner’s guide to Exception Handling in RESTful web services. The article gives an example how the various error conditions during processing a service request can be handled.

We expect our client – server communication working in a flawless operational condition, running error free software. But we are prepared to handle exceptions. Are we? So far in the examples of the previous sessions were not. We did not care about exceptions. The result? In any error incident it took ages to figure out what the problem is and more importantly how to fix it.

3 1
0 1.7K