Article Evgeny Shvarov · Sep 6, 2019 2m read

Hi Developers!

InterSystems Package Manager (ZPM) is a great thing, but it is even better if you don't need to install it but can use immediately.

There are several ways how to do this and here is one approach of having IRIS container with ZPM built with dockerfile.

I've prepared a repository which has a few lines in dockerfile which perform the download and install the latest version of ZPM. 

Add these lines to your standard dockerfile for IRIS community edition and you will have ZPM installed and ready to use.

To download the latest ZPM client:

1
1 1057
Announcement Eduard Lebedyuk · Sep 12, 2019

I'm happy to announce the latest Python Gateway release.

This is not an InterSystems product, it is community supported open source project.

Download new release from GitHub.

Now for the new features.

Fast transfer. Pass globals, classes and tables from InterSystems IRIS to Python with ease and speed (10x faster than old QueryExecute). Documentation.

Proxy Gateway allows generation of ObjectScript classes for Python classes. Instantinate objects, call object and class methods using familiar ObjectScript code (docs).

set module = "random"
set sc = ##class(isc.py.gw.Generator).Generate(module)
set sc
8
0 578
Question Eduard Lebedyuk · Sep 14, 2019

What's the best way to replace character groups?

I want not to remove character groups as $zstrip does but to replace them with whitespaces.

$translate needs explicit character list.

Effectively I want to remove any characters besides letters, numbers and a small (known) subset of punctuation characters, replacing everything else with whitespaces.

6
0 803
Question Warren Grob · Aug 29, 2019

Is it possible to create a task that will initiate a Business Service that is dependent on the completion of a separate EDI data process?

I have a complex data flow with multiple EDI processes where one process must run and produce one or more files that get deposited in the source folder for the next EDI process.  The entire process is currently set up where 2 of the EDI processes execute at a specific time.  The problem with that is when a network or server interruption occurs at the time they are supposed to start, it causes a complete failure of the entire process.

I can't just set them to

1
0 258
Article Zhong Li · Apr 12, 2019 11m read

1. Purpose

This is a 10-minute simple step-by-step guide on how to quickly set up various flavors of HealthShare docker containers from scratch on a Win10 laptop. 

For example, we can build a couple of  HealthShare "global edition vs UK Edition" demos as shown below.  

There are a couple of frequently asked questions from HealthShare colleagues and partners:

  • "I am no Docker guy, but is there a quick way to build various flavors of HealthShare containers simply for demo/PoC/dev/training or troubleshooting purpose?"
  • "I just can't make "Docker for Windows" work on my Win10 laptop - how did you
3
2 928
Question David.Satorres6134 · Sep 12, 2019

Hi all,

I recently discovered the Monitoring Activity Volume feature in IRIS and I was amazed by it. So, I put it to work in one of our productions. It is nice how easy it is to set up and all the possibilites that came with it.

But there's something weird: the numbers. Actually, one of the BP is stating a time of more than 6 seconds to process:

But it is not really possible, as our production is running at a pace of about 40 msg/second, being this one the first step. So my question is: how is this avg. duration calculated? What does this time include? Is it in seconds?

Thanks a lot,

6
1 443
Question Amit Prajapati · Sep 12, 2019

Hi,

I am implementing free search text box, which can search data in all columns of tables.

I have created DisplayName column by concatinating two column data with space.

SELECT TOP ALL FirstName||' '||LastName AS DisplayName, UserType, IsActive, RoleName, DOB FROM LISDB.ExternalUsers

Now, in where condition I want to do like search in DisplayName column but it not working.

I have tried both fn CONCAT and  || in like query but both are not working for me. 

If ((RefineSearchText'="") && ($Length($ZStrip(RefineSearchText,"<>W",""))>0)) {

        Set args($Increment(args)) = RefineSearchText
5
0 1883
Question Scott Roth · Sep 12, 2019

After upgrading I ran a $SYSTEM.OBJ.CompileAllNamespaces("u"). What I got in return was kind of a shock.

In reviewing errors I am seeing code being referenced but no longer applies. It is referring to stuff that might of been defined in the Context , Formal Spec ,Thread , etc.

ERROR #5373: Class 'osuwmc.CPD.DataStructures.TblPharmacyDEA', used by 'osuwmc.CPD.BusinessOperation:SelectProviderTempDEA:FormalSpec', does not exist

ERROR #5373: Class 'osuwmc.FeederPat3BPLTest4', used by 'osuwmc.FeederPat3BPLTest4.Thread1:compileafter', does not exist

ERROR #5373: Class

1
1 609
Question Lawrence Grace · Sep 12, 2019

We have a rest service that collects production status information like whether a connection is disabled, enabled, etc.

I would like to present that data in a DeepSee dashboard but do not know how to create a pivot that accesses the data gathered by the service.

Does anyone have any information or documentation about how a dashboard would be configured to use use a Rest service?

Thank you

2
1 357
Question Gunwant Kapade · Sep 11, 2019

Hello everyone,

I am trying to use @() and SYSTEM() from Cache Terminal. I am searching for blinking text . I have found -5 as a Screen Display Option but not aware like how to use on terminal. Can any one please help ?

Thanks, Gunwant

8
0 440
Question Virat Sharma · Sep 10, 2019

I am new to cache programming language . I am facing below issue . please assist.

Question: One persistent class ID column is a combination of its properties (Roll No and Marks) [ Exact: RollNo||Marks]. When i am running the query from Management portal it is displaying data in the same format and data is there. But in the code if i am making below statement, i am getting null value.

Set ExistsID=##Class(User.School).%ExistsId(RollNo_"||"_Marks)

set ID=##Class(User.School).%OpenId(RollNo_"||"_Marks)

ExistsID showing 1, but ID is always displaying as Null but data is there in class with that ID.

8
0 1309
Announcement Jacquie Clermont · Sep 11, 2019

Hi Community,

There are a couple of new activities planned for this year's Global Summit that you won't want to miss:

1. Meet the Experts in the Tech Exchange
Schedule one-on-one meetings with implementation team members or developers of a product feature in our Tech Exchange area.  LEARN MORE 


2. Not Your Random Table
During our Monday and Tuesday lunches, you'll get to interact directly with InterSystems product managers, who are moderating conversations about such topics as master-data management, the HL7® FHIR® standard, and server-side languages. PICK YOUR TABLE

So have you registered yet for

0
0 342
Question Sylvie Greverend · Aug 25, 2019

Trying to modernize tasks I have to do on cache like change global variables on different servers, different namespaces....

Actually, I have a bash script  doing ssh on each server and running bash  script on each server like this

echo "zn \"namespace\"
s ^Var=1
"|csession ensapp

But this is not clean/modular/..... I was thinking about using Ansible - as it is exactly what I need to do all the git pull. But I am not sure how to interact with cache. A shell ansible module - no way as it does not manage state...... Is there a way to interact with cache in a command line other than csession?

Any

3
1 877
Announcement Jeff Fried · Sep 10, 2019

Preview kits are now published via the WRC's preview download site for:

  • InterSystems IRIS 2019.1.1
  • InterSystems IRIS for Health 2019.1.1
  • HealthShare Health Connect 2019.1.1

The build number for these releases is 2019.1.1.608.0.

 

This is a maintenance release and includes changes in a number of areas, as described in the online documentation here.

It also includes three new features, described in the online documentation here:

  • Support for the InterSystems API Manager,
  • In-place conversion from Caché and Ensemble to InterSystems IRIS
  • X12 element validation.

 

This release also adds

0
0 441
Announcement Eduard Lebedyuk · Sep 10, 2019

Code golf is a type of recreational computer programming competition in which participants strive to achieve the shortest possible source code that implements a certain algorithm.

Here's a list of Code Golf competitions we had on Developers Community.

And some interesting challenges:

Did I miss something? Add more challenges in comments.

0
0 518
Question Scott Roth · Sep 9, 2019

We have a customer that is not able to accept HL7 result messages that are missing OBX:3.1. I have been trying to create a function that could return a boolean value of 0 if the message didn't meet the expectations of the function.

ClassMethod IsValued(pHL7Msg As EnsLib.HL7.Message, pSegment As %String, pField As %String) As %Boolean
{
            #dim tSeg as EnsLib.HL7.Segment
            
            set tSegCount = pHL7Msg.SegCountGet()
            set = 1
            Set tFound = 0
            while ((<= tSegCount) && (tval="")) {
                         
                        set tSeg = pH

7
0 547
Question Carlos Salomao · Sep 9, 2019
Would anyone please have an example of how to use the WriteSOAPBodyMethod method?

 

The webservice method I'm trying to overwrite the body looks like this:

Method RecepcionarLoteRps(EnviarLoteRpsEnvio As %String(CONTENT="MIXED")) As %String(CONTENT="MIXED",XMLNAME="EnviarLoteRpsResposta") [ Final, ProcedureBlock = 1, SoapBindingStyle = document, SoapBodyUse = literal, WebMethod ]
{
 Set ..WriteSOAPBodyMethod = "override"
 Quit ..WebMethod("RecepcionarLoteRps").Invoke($this,"",.EnviarLoteRpsEnvio)
 Set ..WriteSOAPBodyMethod=""
}
Method override(proxy As %SOAP.ProxyDescriptor, tag As %String) As %String

2
0 322
Article Eduard Lebedyuk · Sep 9, 2019 1m read

Just wanted to share my Zabbix template for monitoring InterSystems IRIS on Linux servers.

It monitors irisusr (configurable) memory consumption:

  • Virtual memory size
  • Percentage of real memory
  • Resident set size
  • Size of data segment
  • Size of code segment
  • Peak resident set size
  • Size of locked memory
  • Size of shared libraries
  • Peak virtual memory size
  • Size of pinned pages
  • Size of page table entries
  • Size of process code + data + stack segments
  • Size of stack segment
  • Size of swap space used

How to use:

  1. Check that you have Zabbix installed (I'm using version 4.2)
  2. Import template file:
  3. Add template to a server with
5
0 1614
Question Eduard Lebedyuk · Sep 8, 2019

Is there a way to set null in dynamic object without using %Set methods?

I have this method and I need to set NULL as, well, null and not string.

ClassMethod node(name) [ CodeMode = expression ]
{
{
    "name":(name),
    "content":($case(##class(%Dictionary.ClassDefinition).%ExistsId(name), $$$YES:"mycontent", $$$NO:"NULL"))
}
}
3
0 816
Announcement Jacquie Clermont · Sep 9, 2019

Hi Community:

Interested in getting hands-on with our technology? Come to Global Summit, where you'll find five experiences to choose from in the Experience Lab:

  • The Machine Learning Toolkit on OpenExchange
  • The Next Evolution of APIs
  • Working with the FHIR Resource Repository
  • Using AI Services to Build Intelligent Apps
  • Containerizing Apps with InterSystems IRIS

If you've never tried these out, Experiences are guided exercises in which you engage with our technology.Each Experience starts with a brief introduction outlining a particular task.Then you complete the task on your own laptop.

0
0 258
Question Rubens Silva · Sep 6, 2019

Hello,

I had an issue when using the method Exists, I noticed that if you provide a directory for this method it returns 1. This is really misleading, because sometimes the input could be a directory and the only way to predict this is to also test if the file is a directory.

I didn't tested using the Attributes method, but I supposed that this means could also be a solution for that issue. But still, I expected the Exists method to return 1 for files and 0 for directories, since there's also method called DirectoryExists already.

write ##class(%File).Exists("/InterSystems")
1

Would you guys

4
0 580
Question Eduard Lebedyuk · Sep 8, 2019

I'm writing "Finder"-like dialog and need to get list of BPL classes.

The query is dependent on current "path" - it outputs all BPLs in the current path (if any) and all sub-packages which contains BPLs.

So far I have this query:

Query getBPL(path, needPlus = {(path'="")}) As %SQLQuery
{
SELECT DISTINCT $PIECE(Name, '.', 1, $LENGTH(:path, '.') + :needPlus) Name
FROM %Dictionary.ClassDefinitionQuery_SubclassOf('Ens.BusinessProcessBPL')
WHERE Name %STARTSWITH :path
}

My problem is, if I'm not in "root" path I need to add additional dot level, but in root path I only need to add one.

Currently

2
0 515
Question Chip Gore · Sep 6, 2019

Hi -

I'm wondering if there is any sort of experience with trying to leverage things like fingerprint readers into any identity management interface. I'm wondering if the "output" of some fingerprint scanner (or face scanner, or eyeball scanner for that matter) is something that HealthShare Patient Index might be able to use?

1
1 228
Announcement Jacquie Clermont · Sep 6, 2019

Hi Community,

Our latest issues of Developments  and Developments Healthcare Edition have been posted to the Developments Archive site, where you'll also find other previous issues. Learn about InterSystems API Manager, preview releases of InterSystem IRIS and IRIS for Health, and live webinars this month about how you can easily move your Ensemble or Caché applications to InterSystems IRIS. 
 

Optimize your investment in InterSystems technology by subscribing to these and other InterSystems publications.

0
0 285