#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 Stephane Devin · Dec 14, 2023

I got a problem to resolve, to sum it up I need to extract a function body from a JS file with cos.
I already got the JS code in a string and the function name but I'm kinda stuck as to how to get my function body, I already tried a few things (regEx, counter bracket) but there are comment and strings that block them from functioning. Is there a javascript parser or a good way to do it except by creating a javascript parser?

8
0 583
Question Stefan Cronje · Dec 21, 2023

Hi,

The system I am working on processes large numbers of records. Inserts, updates and so forth. There are multiple processes that can potentially work on the same table at the same time. 

It is an almost impossible task to try and time these processes to not run at the same time, due to volumes, SLAs, etc.

Every now and then there are a few locking issues, Not many considering the volumes. It is just a bit of a nuisance as we need to reprocess these records later.

All the selects on the processes run at IsolationMode 0 and the transactions are kept as short as possible.

6
0 426
Question Emil Odobasic · Nov 29, 2023

Hello everyone!
Sorry for the vague title! But I wonder what would be the best way to easily import a large XML-file into a production, modifying it by deleting elements and nodes depending on what values are in those nodes/elements and later creating whole new XML-file from that?

I have gone through this: Using Caché XML Tools | Caché & Ensemble 2018.1.4 – 2018.1.8 (intersystems.com)

But I get the sense that there are a lot of ways of approaching this, but I do not know what is the most effective for my certain needs.

I appreciate the help! Thanks beforehand! :)
 

5
0 545
Question Emil Odobasic · Dec 14, 2023

Hello everyone!
I have to build a REST service that receives a POST HTTP-request, collect a file from that request in the Form data and then send it in another HTTP Post request through Form Data. However I can't really seem to send the file, and I do not know where it has gone wrong. All I am getting told is that no file is being received from my HTTP Post request. I am reaching the REST Service I am supposed to send the request to, but nothing is being sent.
I would be really thankful if someone could give some insight why nothing is being sent in my request. Thanks beforehand!

6
0 999
Question David Hickman · Dec 12, 2023

I'm receiving a JSON payload via a REST API, I'd like to %JSONImport this stream into a class which extends %JSON.Adaptor. The problem is that the JSON is an array whose elements have no key (as you can see in the example JSON below). Right now I'm having to do some manipulations to convert the stream into a dynamic object and do a %Set which inserts a made up key "record" so "thingone" and "thingtwo" have an associated key that I can use when referencing "thingone" and "thingtwo".such as record.

3
0 372
Question Colin Brough · Nov 21, 2023

How do we trigger a BPL Business Process on a time schedule?

We are building a production that takes a steady stream of (HL7) lab results messages, processes them and stores them in a temporary database table. At scheduled points during the day (eg 0800, 1300, 1600) the database is queried and messages sent on to the downstream system. Aiming that the Processes to be implemented in BPL if possible - but we are having trouble triggering code in a BPL as a scheduled job.

12
0 745
Question Denys Kondratiuk · Dec 7, 2023

I want to call the REST endpoint and return the list of objects. I`ve created the method but it displays an error: 
<METHOD DOES NOT EXIST>GetAllPersons+10^Lab3.RestClient.1 *Count,%ZEN.proxyObject

ClassMethod GetAllPersons() As%Status
{
    Set request = ##class(%Net.HttpRequest).%New()
    Set sc = request.Get("http://localhost:52773/csp/crud/persons") 
    Quit:$System.Status.IsError(sc) sc

    Set responseStream = ##class(%Stream.GlobalBinary).%New()
    Set response = request.HttpResponse.Data.Read()
    
    Write"Response from Server:", !, response, !
2
0 641
Question Denys Kondratiuk · Dec 5, 2023

I need to create a simple REST application.
I`ve created an app:

Also here is a dispatcher class:
 

Class Lab3.helloWorld Extends%CSP.REST
{

Parameter Authentication = 0;Parameter HandleCorsRequest = 0;
XData UrlMap [ XMLNamespace = "https://www.intersystems.com/urlmap" ]
{
<Routes>
    <Route Url="/hello" Method="GET" Call="Hello" />
</Routes>
}

ClassMethod Hello() As%Status
{
	Do##class(%REST.Impl).%SetContentType("application/json")
    If '##class(%REST.Impl).%CheckAccepts("application/json") Do##class(%REST.Impl).%ReportRESTError(.
2
0 622
Article Luis Angel Pérez Ramos · Dec 5, 2023 3m read

Welcome everybody!

In this short article I would like to present an example of use that surely many of you who work with IRIS as the backend for your web applications have faced on more than one occasion and it is how to send a file to your server from the frontend.

Generally the simplest way I have found to perform this task is to transform the file from the frontend to the Base64 format and make a POST call to our server attaching the Base64 obtained to a JSON message in which I indicate in a parameter the name of the file and in another the encoded data.

2
0 740
Question Scott Roth · Nov 17, 2023

I am attempting to setup my first OAuth2 client, as we are adventuring into the realm of making FHIR API calls to our EMR from HealthShare Health Connect. 

I have gone through and set up the Issuer Endpoint, and Client Configuration but now I want to test it and verify that the setup is correct. When I setup the Client Configuration, it would not allow me to use Discovery as it was saying I needed a "Client secret" but was not given one. So I set it up manually, thinking I hit all the information correctly.

2
0 429
Question Mary George · Nov 29, 2023

Hi Community, 

Can I please check if any one is aware of any functionality in HealthShare to verify NHS Number check digit.

We are trying to implement the NHS Number check digit validation using Modulus 11 Algorithm ( described here : NHS NUMBER (datadictionary.nhs.uk) ) 

I wanted to check if there is any built in option available or if anyone has implemented something similar using Object Script. 

Thank you for your help.  

Mary

3
0 399
Article Megumi Kakechi · Nov 23, 2023 1m read

InterSystems FAQ rubric

When executing OS commands, use $ZF(-100).

do$ZF(-100,"",program,args) // Execute the Windows command [synchronously].
do$ZF(-100,"/ASYNC",program,args) // Executes a Windows command [asynchronously].

When executing OS shell commands such as mkdir and copy, also specify /SHELL.

do$zf(-100,"/shell /async","mkdir","c:\temp\x")

Please refer to the following documents for details:

About $ZF(-100) [IRIS]
About $ZF(-100)

2
1 548
Question Michael Wood · Nov 28, 2023

I getting the response back to my method fine,

but it is not returning to my BPL.

What am I missing to get the response back to the BPL?

// Execute REST Call
set tHttpResponse=##class(%Net.HttpResponse).%New()
set tSC = ..Adapter.SendFormDataArray(.tHttpResponse,"POST",tHttpRequest,"","",tURL)
set tStatusCode = tHttpResponse.StatusCode
$$$TRACE("Status Code: ["_tStatusCode_"]")
do ..logJSON(tHttpResponse.Data.Read(),"Post Relation Response")

// On HTTP 200 - OK
if tStatusCode = 200 {
     do tHttpResponse.Data.Rewind()
     do pResponse.%JSONImport(tHttpResponse.Dat

8
0 368
Article Dan Pasco · Nov 28, 2023 18m read

Maven Projects mixing ObjectScript and Java

What is Maven?

Maven is a tool, hosted by the Apache Software Foundation, for building and managing any Java-based project. Apache Maven is the best source of information.

Why Maven?

Managing a project, its dependencies, and life cycle can be a tedious task. Maven automates these tasks, making project management much simpler. Maven also defines a standard directory layout and provides tools for initializing projects. These tools employ project templates called maven archetypes There is a rich library of archetypes available.

0
2 320
Question Emil Odobasic · Nov 27, 2023

Hello!
I am trying access each "name" tag in the xml-file down below and want to display them through the trace in the production:

<?xml version="1.0"?>
<staff>
  <doc type="consultant">
    <name first="David" last="Marston">Mr. Marston</name>
    <name first="David" last="Bertoni">Mr. Bertoni</name>
    <name first="Donald" last="Leslie">Mr. Leslie</name>
    <name first="Emily" last="Farmer">Ms. Farmer</name>
  </doc>

</staff>

The code I have so far is this:
Method OnRequest(pRequest As Ens.StreamContainer, Output pResponse As Ens.

2
0 531
Question Frederic Donnet-Monay · Nov 23, 2023

Hi,

I'm receiving in one of our interface a XML file as a %Stream.GlobalBinary, and in the source Application that produces this XML file, the user sometimes add a special character that force the XML file to have the header encoding to UTF-8, instead of ISO-8859-1 : 
<?xml version="1.0" encoding="UTF8"?> 

When my current interface tries to convert the %Stream.GlobalBinary into %XML.XPATH.Document to this exceptional UTF8 header encoding of the XML file : 

Set tSC=##class(%XML.XPATH.Document).CreateFromStream(stream,.

6
0 748
Question Robert Cemper · Nov 20, 2023

While creating my latest examples for the JavaContest I faced the need
to communicate with my code from a program in IRIS to my Java code.

Communication with |CPIPE| worked as READ or WRITE  but not both?
In the Documentation Named PIPEs are explained rather shortly.
"Once open, a pipe acts like an ordinary device."  Not so precise.
I failed to achieve my expected READ/WRITE  as TCP would offer. 

Has anyone a working example to demonstrate it? 
Any suggestion is welcome.

I found a workaround for my actual case.
Though I'm not so happy with it.

4
0 487
Question Prasanth Annamreddy · Nov 20, 2023

I have received 2 errors while publishing Patient data to repository. Message viewer displays like below and the Application log found  bold content.

Could you please help me on this to resolve the errors.

An error occurred with the web application.
It has been logged to system error log (System Operation>System Logs>Application Error Log).

"<METHOD DOES NOT EXIST>OnPage+42^EnsPortal.MessageContents.1 *%Id,HS.FHIRServer.API.Data.Request : CSP Error"

Business Operation Event logs displays "ERROR <Ens>ErrRequestNotHandled: Request message '3@HS.FHIRServer.API.Data.

6
0 728
Article Robert Cemper · Nov 19, 2023 1m read

Based on the successful solution for my 2nd contribution to the Contest 
I used an adapted version for this package. And have some findings I'd like to share.

Multiple communication steps over CPIPE may take time.
You won't recognize it on a fast machine. But a slower box with
Windows + Docker Desktop + your browser (and more) is neither
"Speedy Gonzales" nor a "Road Runner". 🙂

First observation you launch your OS command and see NO result
On the console, you just sit there and expect a reply.
Establishing the Connection to IRIS is a typical case.
Jour redirected Output is just empty.

1
0 259
Article Megumi Kakechi · Oct 19, 2023 2m read

InterSystems FAQ rubric

A tool (^GLOBUFF utility) is available to check the database cache usage for each global variable.

You can run the utility directly or programmatically in the %SYS namespace.

Here's how to run the utility directly:

USER>zn "%SYS"
 
%SYS>do ^GLOBUFF
 
Find which globals are using the most buffers.
 
Display the top <25>:     → Press Enter  // Default is to display top 25 globals
 
Total buffers: 102400     Buffers in use: 6926     PPG buffers: 77 (1.
5
1 936
Question Luis Angel Pérez Ramos · Nov 14, 2023

Hi community members!

Recently a customer ask me about a problem that detected when they were trying to send a post call to an external HTTP service, this service has changed and now it redirects to another URL, so they have setted to true the FollowRedirect parameter (setted to false for POST calls by default), what is the problem? They are sending a custom header in the post call and after the redirection this value is deleted.

I've reviewed the code of %Net.

2
0 340
InterSystems Official Mark Hanson · Feb 27, 2023 2m read

I wanted to provide a heads up of an improvement in how we generate and call method code in IRIS 2023.1.

A class in IRIS is composed of two main runtime components:

  1. Class Descriptor - A highly optimized list of methods, properties, class parameters that make up the class along with attributes associated with each of these e.g. public/private setting.
  2. ObjectScript code - A set of routines that contain the ObjectScript code to be executed when a method is called.
10
3 1022