Article Gevorg Arutiunian · Sep 27, 2018 2m read

The following class method "test" contains code that can create a new class, create new properties for classes, or create new methods for classes. "test" runs all three of these processes once, and the code that performs each action is labelled by comments in the method:


ClassMethod test() As %Status
{
	set sc = $$$OK
// Create a class
set class = ##class(%ClassDefinition).%New("MyClass")
set class.Description = "This is my test class"_$c(13,10)_"testing %ClassDefinition"
set class.Super = "%Persistent"

// Create a property and add it
set property = ##class(%PropertyDefinition).%New("MyClass.MyProperty")
set property.Type = "%String"
set property.Description="This is a property"
set sc1 = class.Properties.Insert(property)
do:$$$ISERR(sc1) $system.Status.DisplayError(sc1)
set sc = $$$ADDSC(sc, sc1)

// Create a method and add it
set method = ##class(%MethodDefinition).%New("MyClass.MyMethod")
set method.ReturnType = "%Integer"
set method.FormalSpec = "x:%Integer,y:%Integer=10"
set method.Description = "Return product of x and y"
set method.CodeMode = "code"
set method.Code = " new result"_$c(13,10)_" set result=x*y"_$c(13,10)_" quit result"
set sc2 = class.Methods.Insert(method)
do:$$$ISERR(sc2) $system.Status.DisplayError(sc2)
set sc = $$$ADDSC(sc, sc2)

// Save the class definition
set sc3 = class.%Save()
do:$$$ISERR(sc3) $system.Status.DisplayError(sc3)
set sc = $$$ADDSC(sc, sc3)

return sc

}

Here's a link to the code on GitHub

1
2 773
Question Roberto Cahanap · Aug 16, 2018

Let's say I have something like this:

Query ClientList(BusinessType As %String) As %SQLQuery (CONTAINID = 1, ROWSPEC = "Name:%String(MAXLEN=100),AltName:%String(MAXLEN=100)") [ SqlProc ]

{...}

Is there a way I can specify the MAXLEN by a function or a calculated method?

Like maybe:

MAXLEN=#(..GetLengthName())#

Or is this something that has to be hardcoded in Studio?

6
0 1122
Question Richard Housham · Aug 20, 2018

Hi I'm just trying to make sure I'm not missing a trick here.

Basically our PAS doesn't do hl7 messages but does some XML which you can create. So I'm just trying to create some xml files and then get healthshare/ensemble to parse them and to process accordingly. 

I'm getting some good results doing this. But maybe I've got a small hitch. In each of my xml files I've the data for the patient/client. 

Then in the xml schema which I've imported I've specified the elements.

1
0 869
Question Ciaran Mooney · Sep 22, 2018

Hi,

I am running terminal on Cache on a Mac High Sierria and going through the ObjectSript tutorials.

However there is no instruction on the Intersystems website as to how to open Studio.

Does anyone know how this is done?

Thanks

11
1 1654
Question Lewis Greitzer · Sep 24, 2018

I"m doing a SQL insert in my BPL, one of the fields in my SQL table is an MSSQL TimeStamp. How do I get the date/time from my HL7 message and format it so that I can then insert it into my TimeStamp column in my SQL table? I've tried lots of different combinations.

I used CONVERT(DATETIME, substring(:request.GetValueAt("EVN:RecordedDateTime"),1,8)) to get just the date portion and it works, but I'd like the whole DateTime inserted into my TimeStamp field. This is an a BPL.

Thanks

2
0 1158
Question Joyce Zhang · Sep 24, 2018

I followed the First Look instructions and tried to run a Docker container with the below command:

> docker run --name iris --detach --publish 52773:52773 --volume /Users/docker:/external --env ICM_SENTINEL_DIR=/external iris:latest --key /external/iris.key --before "/usr/irissys/dev/Cloud/ICM/changePassword.sh /external/password.txt"

It returned with a container ID and an error message:

docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"/iris-main\": permission denied": unknown.

"docker ps -a" shows that the status of

4
0 1618
Question Chris Messbarger · Sep 14, 2018

Does anyone know how to loop through a segment that is part of an ordered set in a Business Rule and if one of about 10 possible values exist in any of the iterations of the segemnt:field I then allow the message to be skipped?

It seems like it should be fairly simple, but i am having a difficult time figuring this out. The Contains function only allow for one value to be identified. I have tried the intersectsList and while I think I have it formatted correctly i believe it only allows for 4 values to be verified. 

5
0 877
Job Teo Rusu · Sep 24, 2018

Good afternoon everyone,

I hope you are well,

I am currently working on the below opportunity and if anyone here would like to hear more details please feel free to contact me on 01908 886 030 or teo.rusu@identifiglobal.com

Cache Developer – Leading Law Firm

Fixed Term Contract - Central London

Salary negotiable

The client is a leading City law firm with around 1,200 partners and worldwide staff, is regarded as one of the most prestigious law firms in the world.

0
1 565
Article Chris Stewart · Apr 24, 2017 2m read

or "Bonus Breakage"

In our last lesson, we added a relationship between 2 persistent classes.  We are clearly going to need to start creating REST Services to expose CRUD operations for each of these classes, but before we do that, we should really finish defining our linkages.  We added code to our Widget toJSON to spool off related Accessory data, so we should really do the reciprocal and allow Accessories to return all Widgets that are compatible.

The code we can use is essentially the same as we used on the Widget side.

2
1 1349
Question Chandra Bandi · Sep 24, 2018

Hello Guys,

Can you please guide me to create a RESTful API service in our cache (using intersystems cache kit) with CSP (Cache Server Pages ) object script.

Class REST.NativeDIspatcher Extends %CSP.REST
{

XData UrlMap [XMLNamespace = "http://www.native.rest.com/urlmap" ]
{
<Routes>
   <!--  <Route Url="/:name" Method="GET" Call="displaySystem" Cors="false" /> -->   
     <Route Url="/:ostype" Method="GET" Call="externalFreeze" Cors="false" />  
  </Routes>
 }

ClassMethod externalFreeze(Ostype as %String) as %Status{
        set status = ##Class(Backup.General).ExternalFreeze()
2
0 1865
Announcement Dmitry Maslennikov · Sep 24, 2018

I have already mentioned my project CacheBlocksExplorer recently in two articles

  1. Internal Structure of Caché Database Blocks, Part 2
  2. Internal Structure of Caché Database Blocks, Part 3

Now I would like to inform that this project can be easily run with docker.

Version for Caché and for InterSystems IRIS, now publicly available on docker hub.

Remember that you need the appropriate license key (for RedHat Linux) to be able to run this project.

Caché

docker run -d --rm \
 -p 8080:57772 \
 -v ~/cache.key:/usr/cachesys/mgr/cache.key \
 -v /some/your/cache/db:/opt/blocks/db/test \
0
1 376
Question Rui Figueiredo · Sep 22, 2018

Hi,

We maintain a few Zen reports that output in Excel format.

Recently we started to observe that some reports fail and return the following error.

CSP error occurred
Error: Error rendering: OS code =1Use $log=1 to check
ErrorNo: 5001

I have extracted the exception details from the log file

java.lang.OutOfMemoryError: Java heap space
at com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.createElementNS(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.SAX2DOM.startElement(Unknown Source)
at com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.closeStartTag(Unknown Source)
  at

1
0 585
Question Rosti Zacharias · Sep 22, 2018

Hi,

Somewhat weird behaviour in testing values in a resulting query.

I have a table where I need to read through a list of data, and apply a charge for matching occurrences. However, only ONE charge for one set of data. I have applied a DISTINCT function to the query, but as I cannot get a completely unique set, the DISTINCT function does not de-duplicate all of the sets.

I have therefore attempted to look for a value that if it repeats for the one data set, I can choose to skip the function that applies the charge.

The problem, is that a comparison in CSP is failing to produce the required

2
0 303
Question Niyaz Khafizov · Sep 20, 2018

Hi all.

I want to insert my dataframe into InterSystems IRIS. So, I tried to do this:

df = spark.read.load("/home/imported-openssh-key/zeppelin-0.8.0-bin-all/bin/resultData3/DF.json", format="json")
df.write.format("com.intersystems.spark").\
option("url", "IRIS://localhost:51773/DEDUPL").\
option("user", "********").option("password", "********").\
option("dbtable", "try.test1").save()

And got this error:

Py4JJavaError: An error occurred while calling o80.save.
3
0 2151
Announcement John Murray · Sep 21, 2018

If you are attending Global Summit 2018 please be sure to say hello to George James Software in the Partner Pavilion.
You are also invited to the informal lunchtime meeting we're hosting at Global Summit on Tuesday 2nd October from 1pm in Indian Paintbrush, a meeting room at the conference venue. We will be previewing the next versions of Deltanji, our integrated source code management solution, and Serenji, our editor and debugger.

0
0 401
Question akio tanaka · Sep 20, 2018

Since I installed CACHÉ with mac, I can not use CACHÉ CUBE, so I put windows 10 in the virtualbox, installed CACHÉ and made cube usable. The problem is, When you press the cube mark, ·studio ·Terminal · Management Portal · Remote system access · Preferred connection server (F) [TRYCACHE 2] · Cache version management (b) · End (x) Inside of the above ·studio ·Terminal · Management Portal (P) Can not be selected.

Why?

The purpose of using CACHÉ is to refurbish existing projects.


You can change, repair, or delete CACHÉ by clicking on CacheClient_X64 and selecting an instance.

2
0 381
Question akio tanaka · Sep 21, 2018

Open the studio of CACHÉ,

When you click something, A dialog for server connection is displayed, Please select CACHÉ server from the list. Although it is described, if you select Local [127.0.0.1 [1972]],

User name _system password

Will be input. In this case, what should I enter a password? Is there a default password? Or do you set your own password?

3
0 588
Article Gevorg Arutiunian · Sep 13, 2018 1m read

The following code snippet includes a class method "test" that runs code to find a class based on the class's name. "test" takes one argument, which is the name of the table:


Class objectscript.findTable Extends %RegisteredObject
{
	classmethod test(name as %String="mytable")  
    {
			#Dim result as %ResultSet
			#Dim tName as %String
			#Dim contain as %Integer
		Set contain=0
		Set result = ##class(%ResultSet).%New("%Dictionary.ClassDefinition:Summary")
		Do result.Execute()

		While(result.Next()) 
		{
			Set tName=$get(result.Data("Name"))
			&sql(select position (:name in :tName) into :contain)
			Write:contain'=0 tName, " ... ", name, " (", contain,")", !
		}
	    Return $$$OK
 }

}

Here's a link to the code on GitHub

6
0 844
Question Santhosh Gladson · Sep 20, 2018

Hello Experts,

I am working on SOAP WSDL, where I am getting below error, I could not figure out where the error is hitting in code. Error says,

"ERROR #6248: SOAP response is a SOAP fault: faultcode=Client faultstring=Badly formed SOAP Message faultactor= detail= <error xmlns="http://www.intersystems.com/trak/ws"> <text>ERROR #5002: Cache error: &lt;METHOD DOES NOT EXIST&gt;zXMLNew+1^Custom.ENXX.Integration.WebService.Schema.DemogData.1 *%New,Custom.ENXX.Integration.WebService.Schema.DemogData</text> </error>"

I don't have any method as such described in the error -

3
0 2178
Question akio tanaka · Sep 21, 2018

I installed the evaluation version of CACHÉ.

There is a CACHÉ launcher (gray), If you click it you can not select the terminal.

What is the cause of this?

First, set the preferred connection server · Server name IP address · Port: 1972 Telnet port: 23 · Web server port: 57772 · Web server ip adress CSP server instance ·comment Authentication method Password or kerberos

Does it become like the terminal can be used if setting it?

Please reply.

6
0 403