#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.

Article Muhammad Waseem · May 30, 2022 3m read

Hi Community,

This post is a introduction of my open exchange iris-fhir-client application.

 iris-fhir-client can connect to any open FHIR Server by using embedded python with the help of fhirpy Library.
Get Resource information by terminal and by using CSP web application.

2
0 1034
Article Lorenzo Scalese · May 30, 2022 3m read

Hi Community,

Recently, I migrated a series of Objectscript repositories from XML to UDL format.
After the migration, I was a bit disappointed by the presentation on the GitLab web interface.

Since Objectscript syntax is supported by GitHub, I thought It would be also supported by GitLab. Unfortunately, the library used by GitLab to highlight the code does not have an extension to support Objectscript.

GitLab uses the library Rouge, which can highlight over 200 languages. This is a library written in Ruby (see the GitHub page), but Objectscript is not in the list.

1
2 645
Question Federico Raimondo · Jan 20, 2020

Hi everyone, 

I am currently performing a patient merge thorug ADT^40 HL7 messages. In order to do that, I am following this guide which I found on the ducumentation: http://10.41.11.210:57772/csp/docbook/DocBook.UI.Page.cls?KEY=HESUP_ch_IHE#HESUP_IHE_configuring_registry_PIX
My main issue regards the fact that I can't update the PatientID and the SourcePatientID of the HS_Registry.Document table of the prior patient, wheras, I find only the new anagraphic on the HS_Registry.Patient table.

1
0 1223
Article Robert Cemper · Mar 24, 2022 3m read

This package offers a utility to export an XLarge Global into a JSON object file and to show
or import it again. In a previous example, this all was processed in memory. But if this is a
large Global you may either experience <MAXSTRING> or an <STORE>  error
if the generated JSON structure exceeds available memory.
 


Academic refers to the structure created.

1
0 450
Article Timothy Leavitt · Mar 17, 2021 3m read

I ran into an interesting ObjectScript use case today with a general solution that I wanted to share.

Use case:

I have a JSON array (specifically, in my case, an array of issues from Jira) that I want to aggregate over a few fields - say, category, priority, and issue type. I then want to flatten the aggregates into a simple list with the total for each of the groups.

10
4 1220
Question Ephraim Malane · May 5, 2022

Hi All,

I have been given the following  xml  class file with objectscript code that has methods that I need for file conversions. These method implementations will do necessary conversions but I don't know how to add it to Iris studio and run it as a task or maybe if it must be  put  on any location and call each method from the terminal and even if so how do I then call it.

Please advise how to go about this.

 

<?xml version="1.0" encoding="UTF-8"?>
<Export generator="IRIS" version="26" zv="IRIS for Windows (x86-64) 2020.1.1 (Build 408U)" ts="2022-02-01 16:19:05">
<Class name="User.Ready.

6
0 334
Article Lucas Enard · May 9, 2022 2m read

This is a benchmark built in python and objectscript in InterSystems IRIS.

The objective is to compare the speed for sending back and forth a thousand request/message from a BP to a BO in python and in objectscript.

See https://github.com/LucasEnard/benchmark-python-objectscript for more information.

IMPORTANT : Here are the results of time in seconds, for sending 1000 messages back and forth from a bp to a bo using python, graph objectscript and objectscript.

String messages are composed of ten string variables.

3
0 503
Question John Klahn · Apr 28, 2022

Good afternoon,

I'm trying to take an unformatted social security number and insert the dashes into it.  I'm getting a value in PID-19 like this:  "123456789" and would like to use a data transformation to set the value in PID-19 to "123-45-6789". 

I can't find any insert or append functions and I can't find anything in the Intersystems doc repository that would do this.  Can someone help point the way for me please?  I would like to keep this as a "set" action in my DT.  I'm a little new to calling classes so it would be helpful if you included some syntax that would go in the "Value" field.

12
0 799
Question Kevin McGinn · Apr 26, 2022

I wrote this COS script that I can run in a terminal session to get a view of the cache users:

set hdl = ##class(%Library.ResultSet).%New()
set hdl.ClassName = "Security.Users"
set hdl.QueryName = "Detail"
set sc = hdl.Execute()

while hdl.%Next() { do hdl.%Print() }

I know this is a bit rudimentary  but this seems to be the correct script to get users. But looking at one of the clients AIX based instances there are about 3900 users. But this script returns no results. In fact, after the execute if I issue "w hd.%Next()" it returns 0.

4
0 322
Question Tom Bruce · Apr 25, 2022

Hi everyone, how do you run multiple quires?

I have tried couple of different ways, but not working.

 SET sql = 2

    Set sql(1) = "UPDATE QUERY"

    Set sql(2) = "UPDATE QUERY"

    Set sqlStatement=##class(%SQL.Statement).%New()

    Set sc1=sqlStatement.%Prepare(.sql)

    If $$$ISOK(sc1)     {

       Set tResult = sqlStatement.%Execute()    

    }

    else{

        $$$LOGERROR("Failed")

    }

4
0 1933
Article Nicholai Mitchko · Apr 12, 2022 7m read

Programmatic Production Access

To Programmatically Edit Productions (interfaces) you can use a combination of the interoperability apis and SQL queries.

Current Namespace

At a high level, it is important to know the namespace and production you are working in at the moment.

// Object script 
// The active namespace is stored in this variable
$$$NAMESPACE 
// Print namespace
Write $$$NAMESPACE
# Python
import iris
# The active namespace is returned from this method
iris.utils._OriginalNamespace()
# Print namespace
print(iris.utils.
3
5 1089
Question Kevin McGinn · Apr 14, 2022

I am writing a Python tools I want to access the %Monitor.System.License properties:

  1. AvailableDist
  2. AvailableLocal
  3. MaxUsedDist
  4. MaxUsedLocal
  5. CurrentUsedDist
  6. CurrentUsedLocal

Initially I want to develop Objectscript to verify access to the properties. But I can not figure the proper syntax.

I first attempted:

set ans = ##class(%Monitor.System.License).AvailableDist

which failed.

I tried another approach:

set ans = ##CLASS(%Monitor.System.License).%GetParameter("AvailableLocal")

which also failed. There is open method so it appears access options are limited.

2
0 326
Question gerald hanford · Apr 11, 2022

I have a Business Service that reads a file from a folder and sends it as a string to a Business Process. In the business process, I need to add a string to the end of the file string that is coming into the Business Process. I am trying to do this in object script in studio and I am struggling to figure out how to add the string to the end of the other string. I am still new to studio and object script I have been reading up on the documentation and I am not sure what is the best way to accomplish this.

Any help would be greatly appreciated.

6
0 405
Question Fabio Care · Mar 29, 2022

Hello, 
I'm currently working on a custom version control implementation. 
I'd like to show differences between a copy of a previously saved routine as a merge of the ^ROUTINE Global and the current version of that same routine. 

I've found legacy Documentation for %RCMP which does the trick in the terminal but I'd like a similar result stored inside a variable. 
I also want to show differences, not only see if they are the same or not. 

The management portal has that exact feature, so maybe someone can direct me to the function that is being used there.

19
0 989
Announcement Anastasia Dyubaylo · Apr 7, 2022

Hi contestants!

Here are the results of the bonus collections the applications of the Globals Contest accomplished.

Here are the projects that scored it:<--break->




Project

Data-model implementation

Functional index implementation

Data Move usage

Embedded Python

Docker

ZPM

Online Demo

First Article on DC

Second Article on DC

Code Quality

Video on YouTube

Total Bonus

Nominal 5 5 3 4 2 2 2 2 1 1 3 30
Globals: Embedded Python vs. ObjectScript       4 2 2 2 2   1   13
5
0 348
Question Oleksandr Kyrylov · Apr 5, 2022

Hello communty.

I searched a way to transform a HL7 Message to Persistent. I found a way how to create Data Transformation from Mangment Portal -> Data Transformation Interface. But my task is to create somthing similar to that tool in my web site interface. And the question is: Is There way to create something like new instance of Data Transformation class " Ens.DataTransformDTL" using object script?

Thank you!

2
0 272
Question Oleksandr Kyrylov · Apr 1, 2022

Hello Community!

Is in objectscript way to get all properties names from HL7 Message?

For example I have HL7 message:

MSH|^~\&|MIHIN PATIENT GEN|1.2.3.4.5.9.99.999.9999.1004||2.16.840.1.113883.3.1481|20200103000000+0000||ADT^A01^ADT_A01|1092|P|2.6|1091|||||||||Windward General Hospital
EVN||20200110000000+0000|||||1.2.3.4.5.9.99.999.9999.
2
0 335
Question phillip jack · Apr 2, 2022

Hi Team,

I would like to save the array subscript with in double quotes 

eg sub1=111,sub2=444 (these values are dynamic)

set array(sub1,sub2)=""

It will be saved as array(111,444)=""

but I want to save it as array("111","444")=""

I am trying to save it from the class like """"_sub1_"""" but its not displaying as expected.

Kindly do the need full.

Thanks in Advance

11
0 482
Article Evgeny Shvarov · Jun 13, 2016 1m read

Hi, Community!

Want to share with you one debugging approach from the Russian forum.

Suppose I want to debug the application  and I want it to stop the execution on a particular line.

I add in code this line:

l +d,-d

When I want to start debugging in this line I block d in terminal

USER> l +d

And execute the app.

The app stops on this line and lets me connect to it with Studio debugger.

To release lock I do in terminal

USER> l -d

And what are your debugging practices?

8
1 782
Question Oleksandr Kyrylov · Apr 1, 2022

Hello community!

I found a bug or may be I missed something.

I want to get  field name in "PID" segment by field number in HL7 Message using following object script expession:

set nl = $CHAR(10)
set str = "MSH|^~\&|MIHIN PATIENT GEN|1.2.3.4.5.9.99.999.9999.1004||2.16.840.1.113883.3.1481|20200103000000+0000||ADT^A01^ADT_A01|1092|P|2.6|1091|||||||||Windward General Hospital|"_nl
_ "EVN||20200110000000+0000|||||1.2.3.4.5.9.99.999.9999.
4
0 254
Announcement Raj Singh · Mar 30, 2022

 InterSystems is pleased to announce version 2.0.0 of the Language Server for VS Code. The Language Server augments the VS Code ObjectScript extension to provide better syntax coloring, embedded documentation, code completion and more. Detailed information is available in the GitHub repo's README. Version 2.0.0 adds support for a number of new platform architectures including M1 Macs! It also reduces package size, improves SQL coloring, and fixes a number of other issues detailed in the CHANGELOG.

0
0 503
Question Tom Bruce · Mar 30, 2022

Hi, I’m using $ZDATETIME to return the following

  • USER>w $ZDATETIME($zdth($zstrip("2022-03-29T15:10:00+0100","<>W"), 3,5),3)
  • Output: 2022-03-29 15:10:00

I would like to return just the YYYYMMDDHHMM i.e. stripping out the seconds.

 Does $ZDATETIME have an option for this?

4
0 360