Article Mike Kadow · Jul 14, 2016 2m read

NewBie's Corner Session 13 .MAC and .INT Routines and Comment Lines

Welcome to NewBie's Corner, a weekly or biweekly post covering basic Caché Material.

.MAC and .INT versions of Routine

Save Routines with a .MAC Extension

When saving your routines, be sure to specify a .MAC file extension (the default) and not a .INT extension.  The .INT version of a routine is an intermediate version of the routine. It is in the .INT version of a routine that the SQL Code (and other code) from the .MAC version is expanded upon.

0
0 669
Article Mike Kadow · May 17, 2016 3m read

NewBie's Corner Session 3 More Read and Write commands & Multiple commands

Welcome to NewBie's Corner, a weekly or biweekly post covering basic Caché Material.

Click on the Caché Cube in your system tray and select Terminal to try out the commands.

Write command with carriage return and line feed

When the exclamation point "!" is inserted after a Write command, a carriage return and line feed combination is produced. Note in this example, that a comma separates the exclamation point from the variable "X".

Set X=12
Write !
1
0 621
Question Scott Beeson · Jul 11, 2016

We had a major problem recently where a participant was sending unexpected data. It was not enough to throw an error or warning in the actual trace, but when examining the message in the viewer it did show the following:

Build Map Status = 'ERROR <EnsEDI>ErrMapSegUnrecog: Unrecognized Segment 4:'CON' found after segment 3 (CON)'

How can I query for these or be notified of them?  This caused major ramifications but we did not notice it.  I have Managed Services investigating but I want to cover all my bases.

4
0 520
Question Rustam Ibragimov · Jul 12, 2016

Hello, everyone!

I opened one project and there I found such lines as 

$$Export^%occXMLExport(filename,"-d /diffexport",InternalName)

Do DecomposeStatus^%apiOBJ(sc,,"d")

The problem is I can't go to their definition and find them in documentation. It says that they don't exist on the server. However, the project works and these routines execute. 

How can I import them into my project? 

3
0 853
Question Alexandre Mosselar · Jul 11, 2016

I'm trying to calculate the percentage of the top level with the SUM function.
But I don't understand the PARENT behavior.
It does not work in any way!

SUM({FilialD.H1.Categoria.CURRENTMEMBER.PARENT.ALLMEMBERS},MEASURES.[Valor])

SUM({FilialD.H1.Categoria.CURRENTMEMBER.PARENT.%ALL},MEASURES.[Valor])

Someone could explain me the difference between %ALL and ALLMEMBERS?

2
0 584
InterSystems Official Steve Brunner · Jul 13, 2016

InterSystems is pleased to announce that Caché and Ensemble 2015.2.4 are now available as maintenance releases.

For a complete list of the corrections in 2015.2.4, please review the release notes

Caché and Ensemble 2015.2.4 are available for the same platforms as 2015.2.3, with this exception:

  • Red Hat Enterprise Linux 7 for Power System-64 has been dropped.

The complete set of supported platforms, including specific point releases and patches, is detailed in the Supported Platforms document.

The build corresponding to this release is 2015.2.4.903.0

0
0 374
Question Ricardo Paiva · Jul 13, 2016

We can override soap body by using WriteSOAPBodyMethod. Something like:

Method Online(ByRef Obj1 As myClass1, Obj2 As myClass2, Output ObjOutput1 As myClass1Output(XMLNAME="Obj")) [ ..., WebMethod ]

{

              …

              s ..WriteSOAPBodyMethod="override"

              d (..WebMethod("Online","ProcessRequest")).Invoke($this,"Online",.Obj1,.Obj2,. ObjOutput1)

              s ..WriteSOAPBodyMethod=""

              …

}

Method override(proxy As %SOAP.ProxyDescriptor, tag As %String)

{

              …

}

In order to generate soap body, how can one  access  Obj1 and Obj2 from within the override method?

1
0 482
Question Megumi Kakechi · Jul 11, 2016

Hello,

One of our AP would like us to provide the file upload/download sample code by using ZEN Mojo.

I already provided them the attached "upload-sample".

I tried to create the "download-sample" in a similar way, but I couldn't do it yet.

Does anyone have a good idea/sample about this?

I'd like to download the server side file(e.g. c:\temp\nene.jpg) into client machine with a OpenFileDialog(image.png).

Thank you in advance.

6
0 965
Question Rustam Ibragimov · Jul 13, 2016

Hello, guys!

I want to get access to the folder where all files of the namespace are stored using COS. I found a way to get access to class files and found a folder where all csp, html, css etc files are stored.

However, is there any folder which contains all files(even .mac and .int)?  

Or, probably, there is a method which gives all files content?

2
0 478
Question Evgeny Shvarov · Jul 8, 2016

Hi!
There is interesting question in Stackoverflow.
This query works for MS SQL:

SELECT * 
FROM 
(
    SELECT *, ROW_NUMBER() OVER (PARTITION BY client_id ORDER BY date_updated DESC) AS rn
    FROM client_address
) a
WHERE a.rn = 1

There is one answer there,  which solves the task:

SELECT *
FROM 
   client_address a
   LEFT JOIN client_address b
   on a.client_id  = b.client_id 
     and a.date_updated < b.date_updated 
WHERE
   b.client_id is null

But it goes with comment, that there are no Window functions in Caché SQL.

I wonder, are there any other options to make this query in Caché?

5
0 2462
Article Cheng Cheng · Jul 11, 2016 3m read

Today my customer ask me a question about how to write the MDX with a summary row however this row with different aggregate functions for each column.

We know in DeepSee analyzer has pivot table option "Summary",  user can select sum, avg ... aggregate functions to get the summary row/column. However we can not specify different aggregate function for each measure column.

Here show the example to use All level and IIF function achieve that. see the example (Holefood cube in Sample namespace) below

WITH MEMBER measures.[with avg summary info] AS

6
0 1214
Question Ashok S · Jul 12, 2016

Is there anything in deepsee where i can increase the cell width?

Column1

Column2

Column3

Sunday

100

200

300

Monday

100

200

300

Tueaday

200

300

400

By Default, based on the content, it calculates the cell width automatically.

From the above table i want to increase the width of weekdays cell particularly. Like below.

Column1

Column2

Column3

Sunday

100

200

300

Monday

100

200

300

Tueaday

200

300

400

I have written MDX Query in Kpi.

I tried with %Label with their arguments for cell style. It doesn't work for me.

Please give me some suggestions.

2
0 345
Question Marc Mundt · May 11, 2016

Does the Caché installer do all of the necessary setup for using Atelier when upgrading a pre-Atelier instance?

I just upgraded an Ensemble 2016.1 instance to 2016.2 and the /api/atelier web application wasn't created automatically. Aside from creating this web application is there anything else that needs to be done to support Atelier?

** UPDATE ** See my comment below -- this was caused by a permissions problem during the upgrade. After fixing the permissions problem and upgrading again Atelier works.

4
0 604
Question Timothy Leavitt · Jul 8, 2016

I've been trying to write a method to compare two local variables, which may be arrays, for "equality" - that is, to see if they have all the same subscripts (if they're arrays) and values. This is the best I've come up with so far - are there any better/simpler approaches out there?

/// Returns true if arrays <var>first</var> and <var>second</var> have all the same subscripts and all
/// the same values at those subscripts.
6
0 1651
Article Mike Kadow · Jul 10, 2016 4m read

NewBie's Corner Session 12 Do and Goto

Welcome to NewBie's Corner, a weekly or biweekly post covering basic Caché Material.

InterSystems Caché provides a GUI (Graphical User Interface) based Integrated Development Environment (IDE) called Caché Studio. Developers can use Studio to create and maintain applications.

Controlling Process Flow

Controlling Process Flow means controlling the execution path of code.

0
0 343
Article Mark Bolinsky · Jul 1, 2016 17m read

++Update: August 2, 2018

This article provides a reference architecture as a sample for providing robust performing and highly available applications based on InterSystems Technologies that are applicable to Caché, Ensemble, HealthShare, TrakCare, and associated embedded technologies such as DeepSee, iKnow, Zen and Zen Mojo.

Azure has two different deployment models for creating and working with resources: Azure Classic and Azure Resource Manager. The information detailed in this article is based on the Azure Resource Manager model (ARM).

4
0 12682
Article Mike Kadow · Jul 7, 2016 2m read

NewBie's Corner Session 11 Routine Line Types and Gotos

Welcome to NewBie's Corner, a weekly or biweekly post covering basic Caché Material.

InterSystems Caché provides a GUI (Graphical User Interface) based Integrated Development Environment (IDE) called Caché Studio. Developers can use Studio to create and maintain applications.

In this session we will cover Routine Line types; which are Label lines, Executable code lines and the Routine Header line as well as Gotos.


Routine Line types
Labels and Executable Code lines

Executable Code lines starts in column two, or many developers just hit the tab.

0
0 396
Question Steve Pisani · Jun 18, 2016

Hi. This about  a migration of code from a DEV environment to a PROD environment.

If an (under development) business host is Enabled in DEV environment  and the production class is migrated across environments, this means that the Enabled status of the same business host in PROD would also become enabled (even if it may have been disabled before the update)

I want to migrate the production class, but leave the enabled/disabled status of business hosts the same - so - i make a list of them, upgrade - then go through each one resetting their status to the original setting using Ens.Director.

11
0 1924
Question Laura Cavanaugh · Jun 28, 2016

Hello Community,

I am trying to create a simple Ensemble DTL transform using the GUI.  In order to test something very simple, I have created a transform that does nothing.  

I'm using test data from here: https://www.emedny.org/HIPAA/5010/5010_sample_files/835%20Sample%20(Ins…

 It's a very small test 835 file.

My transform looks like this in the compiled class:

7
0 1151
Question Paul Riker · Jul 6, 2016

I am writing a static SOAP response to simply test connectivity. The end users is getting an error "Message: The processing instruction target matching [xX][mM][lL] is not allowed.", which I believe is related to white space. if I observe the response, it looks like there are two blank lines between the header and the body, which I'm guessing is the white space problem. But I can't seem to get rid of it.

Any ideas?

Code:

<script language="Cache" method="OnPreHTTP" arguments="" returntype="%Boolean">
     Set %response.ContentType = "text/xml"
    Quit 1</script>
<?xml version="1.

3
0 1425
Question Steven LeBlanc · Jul 6, 2016

Hi,

Does anyone have a sample that demonstrates how to use the Data Transformation option create='existing', in order to update an existing object by its ID?  My use-case is that I have an HL7 message coming in which contains data on a patient that may or may not already exist in a (non-HL7) table.  I want to use the PatientID from the (source) HL7 message, check if that patient exists in the (target) object, and if so, insert some new data into the existing patient, or if not, create a new patient.

3
0 792
Question Scott Roth · Apr 18, 2016

I am trying to find the presentation for the User Group Sessions that were given at Global Summit last week. In particular the Healthshare Provider Directory presentation, so I can share the ideas with others at my organization. Does anyone know where I can find those? I am not seeing them under the Global Summit tag.

Thanks

Scott Roth

The Ohio State University Wexner Medical Center

1
0 523
Article Andrew Neilson · Jun 9, 2016 1m read

First post!   In order to somewhat redeem myself for an unnecessary call to support,  I've decided to post some classes that I've written to monitor certain metrics inside our Ensemble Live instance (yeah, Kyle, you WERE laughing at me, but it's okay).  What the classes do is to run queries and code to get database sizes, status of the mirror, counts of rows in tables such as EnsLib.HL7.Message and Ens.MessageHeader.  The data is collected and written to tables and then an email is sent out daily upon completion.  I've found this quite useful in keeping an eye on what's going on.

5
1 1015
Question Ondřej Hoferek · Jun 10, 2016

I need to pass an equivalent of .Net Dictionary<string, int> instance from .Net to Caché. In the application, the Caché .Net provider has been used so far, so we came up with passing it as an instance of array of data types. However, the only way to fill the array we are aware of is to use its Add() method which invokes a call to the server instance method of the array for every key-value pair inserted.

Is there any way to fill the array at once - inserting all the pairs in one server call? Alternatively, is their any other .Net (Provider or eXTreme) API we can use for this task?

1
0 778
Question Scott Beeson · Jun 27, 2016

We have multiple implementations spanning many namespaces and edges.  I would like to see if I could identify a single place, perhaps on HSREGISTRY or HSBUS, that I could capture certain events like searches (from all customers) and record transfers (with requester and provider).  

The goal is to have a dashboard that would show simple stats such as searches by participant, records shared by participant and records consumed by participant.  These are the 3 most important.

I appreciated the feedback on the other question of "how" but now I'm hoping to find the "Where".  

1
0 440
Question Javier Lorenzo Mesa · Jun 30, 2016

Hi,

I'm trying to perform a SELECT with parameters using the EnsLib.SQL.OutboundAdapter. The SELECT returns results but seems to discard the parameters I try to send. I have tried two methods.

First:

Set par(1) = "20160630"
Set par(1,"SqlType") = 12
Set sql = "SELECT Cod, Ing, score FROM [bbdd].[dbo].[vw_Test] WHERE MyParam >= '?'"
Set tSC = ..Adapter.ExecuteQueryParmArray(.QueryResultSet,sql,.par)

Second:

Set par(1) = "20160630"
Set par(1,"SqlType") = 12
Set sql = "SELECT Cod, Ing, score FROM [bbdd].[dbo].[vw_Test] WHERE MyParam >= '?'"
Set tSC = .Adapter.

4
0 1425