#ObjectScript

14 Followers · 1.6K Posts

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.

Documentation.

Question Sinon Galvin · Feb 9, 2024

I save / compile a class and instantly run a debug.  No issue

A few seconds later, try to run the same debug and get presented with either: 

1) Target Source is not compiled (Open launch json) dialog box

                                                    OR

2) The version of the file on the server is newer.

In the meantime I have made no edits to the VS Code window at all. 

If I pull a compare in response to #2 above, I am presented with a bunch of extent info built into the storage definition similar to the lines below.

5
0 278
Question Jonathan Anglin · Jun 2, 2020

Hello All

I'm not sure what the best practice is for this. I have a DTL for returning ORUs back to a hospital in a different time zone. They have requested that various timestamps have the time zone offset added to the HL7 format (%q%k, I think). First, I just wanted to be sure the system was aware it was DST. I was able to determine if DST is in effect like this:

<assign property='tzOffset' action='set' value='"-0500"' />
<code><![CDATA[ 
         SET dst=$SYSTEM.Util.IsDST()
         IF dst=1 {SET tzOffset = "-0400"}
         ]]>
    </code>
<assign property='target.
5
0 994
Question Scott Roth · Feb 22, 2024

Our 3M Computer Assisted Coding system goes down on a regular basis for updates, the Applications folks like us to Disable the Business Operations when this happens and start them back up when they page the on-call person. The Business Operations have to be started in a sequence to guarantee that all the ADT being sent it processed before we start sending everything else.

0
0 216
Question Mark OReilly · Feb 16, 2024

*** updated from a comment as original question may not have been clear**

To clarify my question this is the library property helper class Library property helper when you look at the documentation for computed from documentation here Computed documentation

ClassMethod FullNameComputation(cols As %Library.PropertyHelper) As %String
{
    return cols.getfield("FirstName")_" "_cols.getfield("LastName")
}
// ...

 

ClassMethod RecordsComputation(cols As %Library.PropertyHelper) As %Library.ListOfDataTypes
{
  Set rsTProp = ##class(%SQL.Statement).%ExecDirect(,"Select * from
9
0 317
InterSystems Official Raj Singh · Feb 20, 2024

I recently realized it's been far too long since I talked about the latest features in the InterSystems ObjectScript Extension for Visual Studio Code. 

I'm pleased to announce version 2.12.1 of the ObjectScript extension, containing a number of enhancements that make a developer's life easier. Some highlights are described below, including the #1 requested feature from Global Summit -- XML import! 

As always, find the full list of modifications in the CHANGELOG, including many bug and vulnerability fixes.

1
0 538
Article David Hockenbroch · Feb 19, 2024 7m read

“I have been waiting for thirty seconds for service. This is outrageous! I am leaving!”

“I am very sorry to hear that, sir. Perhaps, next time, you should make a reservation.”

If you heard that comment at your favorite restaurant, you would think the person saying it was being ridiculous. However, in the context of your API, it makes perfect sense. Just like your favorite eatery, your API has some regular patrons who, as you know, will be visiting one day or another. It would be great to be able to make a standing reservation for them as well.

It will involve a couple of IRIS fundamentals.

0
0 608
Question Smythe Smythee · Feb 17, 2024

Hi Community,

 

Is there a way to call HL7 Data transformation directly from Business service without using Rule functionality in the production

In this scenario i need to call a data transformation in directly in business service and give the transformed message to Business operation 

Please share if you have any ideas to implement this.

 

Thanks,
Smythee

6
0 299
Question Colin Brough · Feb 13, 2024

Does the GetValueAt method of an EnsLib.HL7.message object change the contents of the HL7 message?

We want to do two things, given an incoming HL7 message, in our production:

  • transform the HL7 to XML, where the class TNHS.Utils.HL7toXML provides the same methods as, for example, EnsLib.HL7.Util.FormatSimpleXMLv2:
    set sc = message.OutputToLibraryStream(xmlstream,"","","TNHS.Utils.HL7toXML")


     

  • extract a value from a particular field in the message: 
    Set ReportId = message.GetValueAt("PIDgrpgrp(1).ORCgrp(1).ORC:3.
3
0 535
Question Alex Baumberg · Feb 5, 2024

Hi all,

I'm very new to this ecosystem so please bear with me:

I've startted learning online and have installed everything I need. I have VS code and I have most definitely installed the pack (3 packages) needed for working on it with ObjectScript. Even though this is the case I'm running into 2 problems:

1. when I type "class" I only get 4 option for auto complete. no "class with multiple inheritances" or anything of the sort. In fact, no Class at all, only ClassMethod. ClassResponse etc.

 

2.

3
0 384
Article Elijah Tamarchenko · Feb 8, 2024 2m read

Interacting with Users in the Terminal: A Guide to Using %Library.Prompt in IRIS

 

Have you ever wondered how commands like ^DATABASE engage users in the terminal? Or perhaps you're writing an automation routine and want ways to specify options directly from the terminal. Thankfully, the %Library.Prompt class in IRIS offers a straightforward way to do so!

String Input

For basic input, such as asking the user to provide a filepath or namespace, use the following code:

set status = ##class(%Library.Prompt).GetString("Input filepath:", .
2
3 405
Question Kurro Lopez · Feb 7, 2024

Hi community.

Yes, I know that there is other question "VS Code - debugging doesn't work" that is the same issue, but my IRIS instance is not using IIS.

Some times ago, I could debug without problems, but after some updates of Visual Studio, I get the following error

Failed to start the debug session. Check that the Intersystems server's web server supports WebSockets

I've activated the WebSocket protocol in the server (Windows Server 2019) but it still doesn't work.

The IRIS instance is not using IIS, I think it is using the Apache by default.

Do I need to do anything in special?

The launch.

3
0 314
Article Sylvain Guilbaud · Feb 1, 2024 5m read

Hello Community,

SQL language remains the most practical way to retrieve information stored in a database.

The JSON format is very often used in data exchange.

It is therefore common to seek to obtain data in JSON format from SQL queries.

Below you will find simple examples that can help you meet this need using ObjectScript and Python code.

ObjectScript : using Dynamic SQL with %SQL.

1
4 579
Article Robert Barbiaux · Feb 2, 2024 4m read

Introduction

This article attempt to summarize and update on the exchanges in this post. Please feel free to comment.
ObjectScript is based on MUMPS, a programming language dating back to 1966. At the time, and for quite a long period, memory and cpu resources were scarce, as was terminal screen space, and a very concise (and easily decodable) syntax was preferred (as, for example in C). Nowadays,  we no longer have the same memory and screen limitations,  and code readability and maintainability is far more important.

4
1 432
Question Kari Vatjus-Anttila · Jan 25, 2024

Hello,

How can I send a request via a SOCKS5 proxy in IRIS, using, for example, EnsLib.REST.Operation?

Background

I need to access APIs inside my corporate network, to which I don't have direct access from my home office. I've set up a SOCKS5 proxy via SSH on my host machine like this:

ssh -D 9999 server.corporate.com

I can then make requests with curl to the APIs I need:

curl -x socks5h://localhost:9999 https://api.corporate.com/api/some/endpoint

And I receive a response. Simple!

Also, inside the containerized IRIS, I can execute the request:

curl -x socks5h://host.docker.internal:9999 https://api.
2
0 366
Question Mathew Rimmington · Jan 24, 2024

In VS Code using the InterSystems ObjectScript extensions, I'd like the indentation applied to match that of IRIS Studio. Specifically for comments and dot syntax, I'd like pressing enter (carriage return) to preserve the current dot depth and same comment beginning.

In IRIS Studio after changing the indentation settings to custom using " \t.

3
0 528
Question Emil Odobasic · Dec 20, 2023

Hello everyone!
I am wondering how I can retrieve multipart form-data from a request that is coming into my REST-service.
I am supposed to retrieve a string and a file. The file is being retrieved without issues, but the "testprofile" string is not being retrieved at all.
It just logs a an empty entry. 
The request that is sent to my REST-service has the Content-Type: multipart/form-data
Thanks beforehand for the help! :)

Down below is the code I use right now to retrieve the string and file from Form-data Rest HTTP-request to my service.

    set vProfile = %request.

5
0 950
Question Emil Odobasic · Jan 8, 2024

Hello everyone!
I am receiving a HTTP multipart/form-data request into my rest service.
How can I read the values for each Key in the form?
The key "Profile" is sent to my service as a String data type.
The code I have below does not seem to work, where I try to read the Key profile in the form.

I appreciate all the help I can get! :)

26
0 927
Article Lorenzo Scalese · Nov 10, 2023 13m read

Hi, developers!

Currently, I'm working on a project that requires highly dynamic event management. In the context of the Java programming language, my first instinct should be to opt for the "Observer Pattern", which is an approach to managing interactions between objects by establishing a notification mechanism. It allows multiple observers to react to changes in the state of a subject autonomously, promoting code flexibility and modularity. If you are not familiar with this design pattern, check out Wikipedia to find more information about it.


While it's natural and commonly used in certain programming languages as Java and C++, in ObjectScript, it's quite a different story.

3
5 1010
Article David Hockenbroch · Jan 4, 2024 22m read

So far, we have covered how to use ObjectScript to manage users, roles, resources, and applications. There are a few other classes in this package that work similarly to the ones mentioned above. However, these four classes are the ones everyone will have to use to manage their application security. Suppose you wanted to create your own Security management portal for this package. There would be some specific issues to think about for an API. Since the classes use similar methods, we can create fewer API endpoints using indirection.

2
3 479
Question Joseph Griffen · Jan 19, 2024
I'm wondering what the best practice is for handling %Status values within the terminal.
1. set tSC=...
    do $SYSTEM.Status.DisplayError(tSC)
 
2. set tSC=...
   zwrite tSC

3. An alternative?

Is there a meaningful difference between the two? Should one be used over the other for any reason? Should something else be used?

2
0 264
Question Prasanth Annamreddy · Oct 24, 2023

We are running Batch job in scheduled task and the messages are picking in single session and it is not easy to trace the record.

I used the Set ..%SessionId= "" at before sending the message to BP but I see the session Id is '1' created for each message.

Is there anyother way to create new session for each message sending to BP?

Thanks,

2
0 488
Question Scott Roth · Jan 13, 2024

I am trying to work on a ZMIRROR that will execute a shell script to failover our VIP at the hardware level when NotifyBecomePrimary occurs.

 

ZMIRROR ; Custom logic for specific mirroring events
 q
 ;
NotifyBecomePrimary() PUBLIC {
 #;This procedure is called as a notification when this system becomes Primary.
 #;It does not return any value.
 #; invoke the command to select this host for running the crontab
 try {
	Set cmd = "/usr/local/sbin/failover-intengtest-vip_SR"
	d $ZF(-100,"/SHELL /LOGCMD /STDOUT=/archive/logs/failover-intengtest-vip.
4
0 265
Article Nikolay Solovyev · Jun 24, 2020 2m read

ZPM is a package manager designed for convenient deployment of applications and modules on the IRIS platform.

Module developers, in order for their module to be installed using ZPM, need to follow a series of simple steps.

  • Write module code
  • Create a module.xml file that contains the meta description of the module
  • Using the test registry, publish the module, verify that it is published
  • Install the module from the test registry
  • Publish the module. To publish in the public registry pm.community.intersystems.com, you need to publish the module in https://openexchange.intersystems.
2
2 645
Question Scott Roth · Jan 11, 2024

I am trying to write a ZMIRROR routine that makes a shell script call using $ZF

     Set cmd = "/usr/local/sbin/failover-intengtest-vip"
     Do $ZF(-100,"/ASYNC /SHELL",cmd)

The script I am calling is returning an output to the screen, how do I get around this using $ZF without having to rewrite the scripts?

Thanks

Scott

2
1 257