Do you ever have the desire to optimize your code as much as possible?
Do you have any cases where every nanosecond matters?
Do you use If statements?
This quick tip can help your code run slightly faster with no additional code.
InterSystems ObjectScript is a scripting language to operate with data using any data model of InterSystems Data Platform (Objects, Relational, Key-Value, Document, Globals) and to develop business logic for serverside applications on InterSystems Data Platform.
Do you ever have the desire to optimize your code as much as possible?
Do you have any cases where every nanosecond matters?
Do you use If statements?
This quick tip can help your code run slightly faster with no additional code.
Hi Developers!
Many of you are looking for samples on how to work with InterSystems IRIS Analytics, formerly known as DeepSee.
There is a Samples BI module with Patients and Holefoods examples which is available on Github with source code. The installation steps are clear but take time.
Recently we added the option to run IRIS Community Edition containers with ObjectScript Package Manager (ZPM) on board. This simplifies the installation to the "run-one-command" step for the modules submitted to ZPM Community Registry. And thus we can benefit the Samples BI installation with ZPM.
And here is how you can run it on your laptop. Let's go!
Happy new year! I’m Raj Singh, InterSystems’ product manager for Developer Experience and I’d love your feedback on how you use IDEs today and your thoughts for the future.
We understand you depend on a solid, intuitive and flexible IDE from InterSystems - whether you are an ObjectScript expert or new to it; whether ObjectScript is at the core of your applications, or you develop more in Java, Python, C# or Node.js.
This is a lesson learned, which I would like to share with community.
Recently I ran into an issue, where I was using %ConstructClone and it kept cloning extra records, which were not needed. The record for which I was trying to run a clone had many-to-one relationships.
The solution to this issue was using param -1. If you run %ConstructClone(-1) it will not clone relationships, but rather just clone single oref as desired in this case.
I hope this information helps someone who is working with similar records.
Hi Developers!
Often when we install a code package we want to make some post-install settings, e.g. call to a method, set up a configuration file.
This article describes how to do this with the ObjectScript Package Manager.
To make any post-install calls you need to add <Invoke> elements into <Invokes> tag to the module.xml. Each <Invoke> element can have nested <Arg> elements if you want to pass params to the method:
<Invokes> <Invoke Class="Class.Name1" Method="MethodName1"> <Arg>Sting Value</Arg> <Arg>123</Arg> </Invoke> </Invkoes>
Here is an example module.
I am working on a BPL to take data from a MS SQL database and create an HL7 Materials Message for our EMR. I have done this plenty of times in the past however I am running into an error.
"Remote Gateway Error: JDBC Gateway SP execute(0) error 0: Access to the remote server is denied because no login-mapping exists."
What is confusing is that this BPL doesn't differ from any of my other BPLs in connecting to MS SQL Server. I know I am missing something..
I have an array of table names that I want to iterate over and for each table, get the number of rows. I was hoping I could do something like:
set tStatement = ##class(%SQL.Statement).%New()
set tSC = tStatement.%Prepare("SELECT COUNT(*) AS ObservedRowCount FROM ?")
$$$ThrowOnError(tSC)
set tTableName = ""
for
{
set tTableName = $O(tCounterAry(tTableName))
quit:tTableName=""
set tResult = tStatement.%Execute(tTableName)
// ...
}But that doesn't work:
ERROR #5540: SQLCODE: -1 Message: IDENTIFIER expected, ?
Have you ever needed a math function but could not find what you needed and ended up writing your own? Look no further! ObjectScript-Math is here to solve all your math related function needs.
ObjectScript-Math is an Open Source library for ObjectScript Math functions. It is now available on Open Exchange. This library contains a mix of new functions that are not currently available and functions that are available. The existing functions will be wrapped for use from ObjectScript-Math so that all Math functions can have a central location.
This library will continue to grow, so give it a try and give your feedback!
Don't see what you are looking for? Please feel free to submit requests for additional functions or contribute code yourself!
I have a case where I have an external table that lives out in MS SQL. Using Ensemble Security functions has anyone created a csp or cls page that acts like a portal to allow users to Update a multidimensional table without knowing SQL? I could clone the EnsPortal.LookupSettings but that was made for LUT which are only 2 columns.
I know its a long shot but trying to see if there was anything off the shelf that I can use to help meet the requirements of this project.
Hi All,
I am getting server application error in salesforce outbound message after upgrading the HealthShare (from version 2015.1.0 to 2015.1.4). Please guide me to resolve this error.
Hi,
I have written a procedure with the help of object scripting to export data to a csv file. There is more data than the csv limit.
Can anyone please tell me how to get the row count of csv file using object scripting, so that I can write an if condition and write to a second csv file.
Please find the code writing to the csv given below.
while (ind '= ""){
set row = ^CacheTemp(repid,"MAIN",ind)
use filemain write row,!
; Get next row index for MAIN report
set ind = $order(^CacheTemp(repid,"MAIN",ind))
} close filemain
}
Thanks
Jude
Hey Developers!
Advent of Code 2019 is over! Thanks for participating in our COS marathon!
And now we're pleased to introduce the winners and distribute all the prizes!
Big applause goes to these winners:
Kevin An (w/ repo)
And here's the final Leaderboard:
Hi Team,
I want to read image stored in "D:/temp/test.png" and then convert it to base64.
Hi Developers,
It's December the 1st! And this means that the Advent of Code 2019 has been started!
And you are very welcome to participate in the ObjectScript contest!
Hello team,
I am trying to do a basic read file of HL7 messages. Need to count how many FT1 segments are there in each file and how many messages are in each file.
Any help will be appreciated. I have the stream object.
Just need to loop through the stream and get the info in some way.
Any help will be appreciated.
Thanks,
Jimmy Christian.
Hi everyone,
I've encountered this annoying issue so many times before, if any one also encounter this issue, please share here if you have any solution.
So, I've been working on a web service project using HealthShare 2015. Sometimes I have to set a debug target to a csp file to debug it. If I pause the debug process about 3 minutes above or so (to examine an object, variable, etc..) the studio will hang.
Hi Developers!
Often we need to use relatively small arrays with constants, static arrays in algorithms, etc where we need to do something with each element of an array. There are several ways to deal with it in ObjectSctipt.
Previously I used to use globals, locals, PPG for this but not so long time ago figured out that %List is a way too handy.
Indeed, suppose we have an array of months and need to set up and use it in our code.
Hello, Community!
After beta testing the new exam InterSystems IRIS Core Solutions Developer Specialist at Global Summit 2019, the Certification Team of InterSystems Learning Services has performed the necessary calibration and adjustments to release it to our community. It is now ready for purchase and scheduling in InterSystems exam catalog.
This is InterSystems first certification exam to feature mainly code samples as question topics. To give potential candidates a sample of the exam's content, practice questions have been published to help orient to exam question approaches and content.
Does anyone know of an API that will do a hostname look-up based on IP? We could of course use call-out but the format of the results vary based on OS and if there is already an ObjectScript tool which will parse this then we'd rather use what is already available.
Thanks!
Ben
Hi All,
I trying to get the DisplayList data of the ValueLIst from Java using Springboot. when I try to get the DislayList data via java code but I'm getting the VALUELIST data. I don't get any idea to get that DisplayList data. Below is the example
Java Code:
public String PetName;
public List<Pet> getPet() {
return ser.findAll();
}
List<Pet> arrayList = getPet();
for (Patient list : arrayList) {
String pet= list.getPet();
System.out.
Hello, InterSystems community!
Lately, you have probably heard of the new InterSystems Package Manager - ZPM. If you're familiar with it or with such package managers as NPM, Dep, pip/PyPI, etc. or just know what is it all about -- this question is for you! The question I want to arise is actually a system design question, or, in other words, "how should ZPM implement it".
In short, ZPM (the new package manager) allows you to install packages/software to your InterSystems product in a very convenient, manageable way.
I've been having a blast with the Advent of Code puzzles this year - though I'll be heading into a busy span of time with family soon and will probably drop off toward the end. (At least, that's what always seems to happen - it's a good thing, though!)
I had a whole plane ride to play around with Day 13 and wanted to share some fun terminal tricks.
s txt(1)="1"
s txt(2) = "2"
s txt(3)="3"
...
s txt(n)="n"
Instead of hardcoding "d ..write(txt1(1),txt(2),txt(3))"
Is it possible to write code to generate the input parameters to do d ..write(txt1)...txt(n))?
{
s cnt = $GET(Arg, 0)
}
Hi All,
I have a ZEN report, which gives a PDF output, i want to generate this report programmatically, save to a location in the disk. Here is my method so far
ClassMethod GenerateReport(ReportID, ReportClass, P1, P2, P3, P4, P5, P6, P7, P8, P9, PUser, PUserID, PUserProfileID, mode = 2, ByRef outputfile = "") As %Status { set filename="" set ZenClassName=$piece(ReportClass,".cls") set oRpt=$classmethod(ZenClassName,"%New") set oRpt.RUID=##class(websys.Report).GetRUID(P1,P2,P3,P4,P5,P6,P7,P8,P9,PUser,PUserID,"",PUserProfileID) set FileExt=.
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.
///Status from SQLCODE: set st = $$$ERROR($$$SQLError, SQLCODE, $g(%msg)) //embedded SQL set st = $$$ERROR($$$SQLError, rs.%SQLCODE, $g(rs.%Message)) //dynamic SQL ///Exception from SQLCODE: throw ##class(%Exception.
Hi Developers!
For those who want to participate in the Advent of Code 2019 and code with ObjectScript in IRIS, I created a very simple but handy Github Template.
Use the green button

to copy template in your own repo, clone the repo and run in the repo folder:
docker-compose up -d
you will get InterSystems IRIS 2019.4 Community Edition running with the template classes to load input data from files and Day1 solution.
This is also set up to start crafting solutions of Advent of Code 2019 and edit, compile and debug ObjectScript with VSCode addon.
Happy coding with Advent of Code 2019!
I'm pleased to announce the latest version of the renewed for ObjectScript, which is now available with a lot of new features.
This new extension is a fork of previously developed extension in different repository originally started by @Oleg.Dmitrovich9110.
Hello,
I make some changes in our ObjectScript code between our prod environment and dev environment in the process 'Hl7AdtFileIsoslBp'.
The operation is a class with "EnsLib.TCP.TextLineOutboundAdapter".
In prod:
.png)
In dev:
.png)
Like you can see, I don't have the contents of the text file.
I checked a lot of parameters but it seems identical.
The content of file is correctly received through TCP. So the only glitch is I don't see it in the 'View Full Contents'.
Best Regards.
When using $SYSTEM.Status.DecomposeStatus(tSC, .tErrorList) in ObjectScript to get the lsit of errors (I need to do this so that I can generate a custom JSON with the error messages) what is the type of tErrorList returned and how to intialize?
I need to know the type to iterate through it, I have tried dynamic array methods sich as %Size() also $LISTLENGTH to get the size, but both fails, so obviously not that, and being new to InterSystems I find the documentation assumes a new person knows what is behind the classes and how it was implemented from the start.