Oliver Wilms · Oct 16, 2018 go to post

Hello Sean,

Thank you for your response.

We attempted a different approach yesterday using XML Adapter in our persistent class and routing the message to an SQL Outbound Adapter. We were able to insert data into our table. However we see errors logged in our SQL Operation (Business Operation):

ERROR <Ens>ErrRequestNotHandled: Request message '13@Test.SubscriberX' not handled

Do you know what we need to do to avoid getting these errors?

Thank you

Oliver Wilms · Apr 24, 2019 go to post

Hopefully they will tell the provider of the files to NOT send files that way and we do not need to come up with a work-around.

Oliver Wilms · Jun 6, 2019 go to post

I got the same error occasionally when parsing X12 files. Lock table got filled up when saving a transaction that contains hundreds of objects.

Oliver Wilms · Jun 13, 2019 go to post

My problem was in the Response class definition. I had Property BillingCodes As %Collection.ArrayOfObj; I replaced it with Property BillingCodes As array Of xyz; Everything gets passed along in the Response object from one BPL to the calling one. Thanks!!

Oliver Wilms · Jun 20, 2019 go to post

Since I do not know how to create a new segment and then append to my target, I set x = target.OutputToString() and then append segments to my string as in Set x=x_"HL*5*4*0~...." and x=x_"SE*...~" and then set target=##class(EnsLib.EDI.X12.Document).ImportFromString(x).

I feel there should be a better way than doing string manipulation using Document Map etc.

Oliver Wilms · Jul 5, 2019 go to post

I am working on DTL to transform X12 HIPAA_5010:278Review into HIPAA_5010:278Response.

My challenges are I do not know an elegant way to create multiple 2000E loops in the target. The source can have only one loop 2000E, I need to create as many 2000E loops as I find authorizations.

On top of that, I may need to create possibly hundreds of 2000F loops under one or more 2000E loops. The source may have zero or many 2000F loops.

The scenario I have been working on has zero 2000F loops and I need to create about 600 2000F loops in the target. Any guidance will be appreciated. I am not sure if subtransform will work because I can only create a Document or a Segment, not a Loop in a transformation.

Oliver Wilms · Aug 14, 2019 go to post

Evgeny,

Thank you for your comment. 

I am new to DeepSee and I do not know if I should created a cube for this. Or a Business Metric? Or just SQL Data??

Really I just need to show a report that can be printed or exported with start and end dates and times. I saw that Dashboards are easy to access from Management Portal compared to opening a DeepSee Report.

And I want to show a line graph.

Maybe a Zen report which I have not really done yet either.

I am not sure what to do ???

Oliver Wilms · Aug 17, 2019 go to post

I have added the Business Metric to my production monitor. It works good. However it only shows the most recent data for Availability. I need to be able to allow user to choose dates and times and show Availability status for the selected time period. I am able to run SQL query and show the data on a CSP page. However I am lacking the line graph. I tried to set up a cube but it is not working as expected.

My persistent data is very simple class:

AETMON.AvailabilityLog Extends (%Persistent, %XML.Adaptor)
{
Property CreatedDate As %Date;
Property CreatedTime As %Time;
Property availabilityStatus As %Boolean;
Storage Default
{
<Data name="AvailabilityLogDefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>CreatedDate</Value>
</Value>
<Value name="3">
<Value>CreatedTime</Value>
</Value>
<Value name="4">
<Value>availabilityStatus</Value>
</Value>
</Data>
<DataLocation>^AETMON.AvailabilityLogD</DataLocation>
<DefaultData>AvailabilityLogDefaultData</DefaultData>
<IdLocation>^AETMON.AvailabilityLogD</IdLocation>
<IndexLocation>^AETMON.AvailabilityLogI</IndexLocation>
<StreamLocation>^AETMON.AvailabilityLogS</StreamLocation>
<Type>%Library.CacheStorage</Type>
}
}
 

I have properties for Date, Time, and boolean Status. My cube produced the class below:

/// 
Class AETMON.Cube.Availability Extends %DeepSee.CubeDefinition [ DependsOn = AETMON.AvailabilityLog, ProcedureBlock ]
{
/// Cube definition from Architect.
XData Cube [ XMLNamespace = "http://www.intersystems.com/deepsee]
{
<cube xmlns="http://www.intersystems.com/deepseename="Availability" displayName="Availability" disabled="false" abstract="false" sourceClass="AETMON.AvailabilityLog" countMeasureName="%COUNT" bucketSize="8" bitmapChunkInMemory="false" precompute="0" disableListingGroups="false">
  <dimension name="availabilityStatus" displayName="Status" disabled="false" hasAll="false" allCaption="All availabilityStatus" allDisplayName="availabilityStatus" type="data" calendar="gregorian" iKnowType="entity" hidden="false" showHierarchies="default">
    <hierarchy name="H1" disabled="false" hidden="false">
      <level name="availabilityStatus" displayName="Status" disabled="false" sourceProperty="availabilityStatus" list="false" useDisplayValue="true" useAsFilter="true" hidden="false">
      </level>
    </hierarchy>
  </dimension>
</cube>
}
Parameter DOMAIN;
}
 

When I try DeepSee Analyzer, I just see Working..., but no Count

Oliver Wilms · Aug 17, 2019 go to post

When I add the Business Metric to a Dashboard or Production Monitor, I see the most recent data for the Business Metric. I need to be able to go back in time and show data for selected dates and times. I think a Pivot Table is what I need. I tried to define a Cube based on my persistent class, but it did not work as expected.

Oliver Wilms · Aug 23, 2019 go to post

Hello,

I am trying Zen Report and Zen Page. I have Zen Page that displays a calendar to choose Date. I can display Zen Report inside iFrame when User clicks a button. It looks good EXCEPT my line graph shows no data values. I copy my Report class below. I hope someone will tell me what I am missing or what is wrong. This is my first Zen Report. Thanks

/// AETMON.Report
Class AETMON.Report Extends %ZEN.Report.reportPage
{
/// Class name of application this report belongs to.
Parameter APPLICATION;
/// Specifies the default display mode used for this report if
/// the URL parameter, <var>$MODE</var>, is not present.
Parameter DEFAULTMODE As STRING [ Constraint = ",html,tohtml,toxslfo,pdf,xml,xslfo,excel,toexcel,ps,pdfprint,xlsx,tiff,displayxlsx,fo2pdf,foandpdf", Flags = ENUM ] = "html";
/// This is the optional XML namespace used for the report.
Parameter REPORTXMLNAMESPACE;
Property Availability As %ZEN.Datatype.list(DELIMITER = ",");
Property AvaiDateTime As %ZEN.Datatype.list(DELIMITER = ",");
Property CreatedDate As %ZEN.Datatype.string(ZENURL = "CreatedDate");
/// This XML defines the logical contents of this report.
XData ReportDefinition [ XMLNamespace = "http://www.intersystems.com/zen/report/definition]
{
<report xmlns="http://www.intersystems.com/zen/report/definition"
 name="Report" 
 sql="SELECT ID, CreatedDate, CreatedTime, availabilityStatus FROM AETMON.AvailabilityLog WHERE CREATEDDATE=ORDER BY CreatedDate, CreatedTime">
<parameter expression='..CreatedDate'/>
<group name="CreatedDate" breakOnField="CreatedDate">
<attribute name="Date" field="CreatedDate" />
<group name="record">
<attribute name="id" field="ID" />
<attribute name="Time" field="CreatedTime" />
<attribute name="Status" field="availabilityStatus" />
</group>
<aggregate name="Count" type="SUM" field="availabilityStatus" />
</group>
</report>
}
/// This XML defines the display for this report.
/// This is used to generate the XSLT stylesheets for both HTML and XSL-FO.
XData ReportDisplay [ XMLNamespace = "http://www.intersystems.com/zen/report/display]
{
<report xmlns="http://www.intersystems.com/zen/report/display"
 name="Report" title="AET Availability Report">
<!-- Optional Init element inserts custom XSLT instructions at the top level of the generated XSLT stylesheet. -->
<init ></init>
<!-- Optional Document element specifies page layout and style characteristics. -->
<document width="8.5in" height="11in" marginLeft="1.25in" marginRight="1.25in" marginTop="1.0in" marginBottom="1.0in" ></document>
<!-- Optional Pageheader element. -->
<pageheader ></pageheader>
<!-- Optional Pagefooter element. Does not apply in HTML output. -->
<pagefooter ></pagefooter>
<!-- Required Body element. -->
<body>
<class="banner1">AET Availability Report</p>
<clineChart
ongetData="getchartdata"
title="Availability"
height="400px" width="400px"
markersVisible="true"
plotStyle="stroke-width: 1px;"
seriesYAxes="0"
ongetLabelX="getAxisTime"
>
<yAxis minValue="0" maxValue="1" />
</clineChart>
<group name="CreatedDate" line="1px">
<table orient="row" width="6in">
<item field="@Date" width="2in">
<caption value="Date:" width="2in"/>
</item>
<group name="record" line="1px">
<table orient="row" width="6in">
<item field="@Time" width="2in">
<caption value="Time:" width="2in"/>
</item>
<item field="@Status" >
<caption value="Status:"/>
</item>
</table>
</group>
</table>
</group>
</body>
</report>
}
Method getAxisTime(
val,
yseries)
{
Set tTime = $Piece(..AvaiDateTime,",",(val+1))
Quit $ZTime(tTime)
}
Method getchartdata(
ByRef var,
chart)
{
Do ##class(AETMON.Utility).DebugAETMON("AETMON.Report getchartdata")
Try {
Set sc = $System.Status.OK()
Set tTestDate = "08/06/2019"
Set pFrom = $ZDateH(tTestDate)
Set pTo = $ZDateH(tTestDate)
// Get a resultset containing Availability data
Set sc = ##class(AETMON.AvailabilityLog).GetAvailability(pFrom,pTo,.rs)
Quit:$System.Status.IsError(sc)
Set tCount = 0
While (rs.%Next()) {
Set var(tCount,0) = rs.%Get("availabilityStatus")
Set var(tCount,1) = rs.%Get("CreatedTime")
If $Increment(tCount)
}
}
Catch(ex) {
Set sc = ex.AsStatus()
}
Set tCreatedTimes = var(0,1) _ "," _ var(1,1)
Do ##class(AETMON.Utility).DebugAETMON("AETMON.Report getchartdata ..AvaiDateTime = "_tCreatedTimes)
Set ..AvaiDateTime = tCreatedTimes
Quit sc
}
}
 

Oliver Wilms · Aug 27, 2019 go to post

Alexander,

Thank you for your response. I understand that get data method only needs to return the Y-Axis values. In my case they will be 0 if the system I monitor is down or 1 if the status is good. I envision I may calculate a Uptime % per time selected by user later. Actually very soon. I need to demo this today.

The values for x-Axis, Date/Time stamp when system status was checked, are supplied by a separate method.

Do you think it is good to try and store values for x and y-Axes in the same data array?

I will post another update soon after I get a chance to try it out.

Oliver

Oliver Wilms · Aug 27, 2019 go to post

Alexander,

I still get no line even though everything else seems correct from what I can tell on my end. I do a lot of debugging / logging and I observe getAxisY and getAxisTime are called way more often than what seems necessary...

Oliver Wilms · Nov 28, 2019 go to post

I believe I need System DSN, not User DSN. How do I create System DSN? I need to run Control Panel as Administartor? It does not allow me...

Oliver Wilms · Nov 28, 2019 go to post

System DSN and Credential was required. Now it works without error. Thank you

Oliver Wilms · Dec 16, 2019 go to post

I am pretty sure I have used SQL Outbound Adapter with local cache database / namespace. I think you should be able to do the same for Inbound Adapter. I had to create a system DSN when I set this up on my Windows laptop.

Oliver Wilms · Jan 30, 2019 go to post

We understand what happened after we looked at the console log.

We failed to acquire locks when there were two actors because the lock table was full.

The rollback failed because journaling was off.

We will address our configuration.

Oliver Wilms · Sep 19, 2019 go to post

I removed the outer group and it worked correctly:

<group name="record" excelSheetName="Availability"> <element field="CreatedDate" name="CreatedDate" excelName="Report Date" isExcelDate="true"/> <element field="CreatedTime" name="CreatedTime" excelName="Report Time" isExcelTime="true"/> <element field="availabilityStatus" name="Status" excelName="Status" />

Oliver Wilms · Feb 12, 2020 go to post

I decided to create a new FileService class extending EnsLib.RecordMap.Service.ComplexBatchFileService.

The intention is to strip any $Char(13) out of the stream that gets parsed / passed to Re3cordMap.

I found CopyReplace() method in %IO.I.Stream class. I try to overwrite OnProcessInput() in FileService class. I try pInput.CopyReplace() but that method does not exist for pInput stream.

Is this a good solution approach? What am I missing? Any Stream objects experts available to help out?

Thank you for your attention

Oliver Wilms · Feb 13, 2020 go to post

All I need to do is create a new stream and write the contents of pInput stream with $Char(13) removed and then pass the new stream to the superclass:

Class Utility.RecordMap.Service.ComplexBatchFileService Extends EnsLib.RecordMap.Service.ComplexBatchFileService
{/// Parse the incoming file and send the resulting ComplexBatch to the targets in TargetConfigNames.
/// *** In Windows strip out any Char(13) *** Oliver T Wilms *** 2/11/2020
Method OnProcessInput(
pInput As %Stream.Object,
Output pOutput As %RegisteredObject,
ByRef pHint As %String) As %Status
{
Set tStatus = $$$OK
Try {
Set tLookAhead = ""
Set tmpStream = ##class(%Stream.GlobalCharacter).%New()
While 'pInput.AtEnd {
Set = pInput.Read(.len,.tStatus)
If ([ $Char(13)) {
Set = $Translate(x,$Char(13))
}
Do tmpStream.Write(x)
}
Set tStatus = ##super(tmpStream,.pOutput,.pHint)
}
Catch ex {
Set tStatus = $$$EnsSystemError
}
Quit tStatus
}}
 

Oliver Wilms · Mar 23, 2020 go to post

Hello,

For the contest we use Iris Community Edition. Does it support Ensemble? I got compile error because Ens.BusinessOperation base class did not exist.

Thanks,

Oliver

Oliver Wilms · Mar 23, 2020 go to post

Evgeny, it still does not work. I had tried to use "yes" instead of "no" for "Ensemble" flag. Now I also tried "1". It still gives me error that superclasses do not exist. Can you please look at my terminal output? I show Installer.cls at the bottom below:

[node1] (local) root@192.168.0.23 ~
$ git clone https://github.com/oliverwilms/iriscontest2020
Cloning into 'iriscontest2020'...
remote: Enumerating objects: 64, done.
remote: Counting objects: 100% (64/64), done.
remote: Compressing objects: 100% (56/56), done.
remote: Total 64 (delta 21), reused 19 (delta 4), pack-reused 0
Unpacking objects: 100% (64/64), done.
[node1] (local) root@192.168.0.23 ~
$ cd iriscontest2020/
[node1] (local) root@192.168.0.23 ~/iriscontest2020
$ docker-compose build
Building iris
Step 1/16 : ARG IMAGE=store/intersystems/irishealth:2019.3.0.308.0-community
Step 2/16 : ARG IMAGE=store/intersystems/iris-community:2019.3.0.309.0
Step 3/16 : ARG IMAGE=store/intersystems/iris-community:2019.4.0.379.0
Step 4/16 : ARG IMAGE=store/intersystems/iris-community:2020.1.0.199.0
Step 5/16 : ARG IMAGE=intersystemsdc/iris-community:2019.4.0.383.0-zpm
Step 6/16 : FROM $IMAGE
2019.4.0.383.0-zpm: Pulling from intersystemsdc/iris-community
898c46f3b1a1: Pull complete
63366dfa0a50: Pull complete
041d4cd74a92: Pull complete
6e1bee0f8701: Pull complete
973e47831f38: Pull complete
b0c3b996c3e3: Pull complete
b48eef952cda: Pull complete
8254746f78e2: Pull complete
ec1f0f74baf0: Pull complete
fdc6015ec77d: Pull complete
b72c9a7f8270: Pull complete
c108d032e6d0: Pull complete
caf30f8515db: Pull complete
02b9549ccbc9: Pull complete
Digest: sha256:fc52a2359da312a5c39010a24d15e84a09ed6f3f2828e54021ebed54a3cb4c1a
Status: Downloaded newer image for intersystemsdc/iris-community:2019.4.0.383.0-zpm
 ---> 2f9eb08f28e3
Step 7/16 : USER root
 ---> Running in 78efd07fbcb0
Removing intermediate container 78efd07fbcb0
 ---> c8f8dddbd96e
Step 8/16 : WORKDIR /opt/irisapp
 ---> Running in a436b17bdd9c
Removing intermediate container a436b17bdd9c
 ---> da8cdcae02a1
Step 9/16 : RUN chown ${ISC_PACKAGE_MGRUSER}:${ISC_PACKAGE_IRISGROUP} /opt/irisapp
 ---> Running in 1698d44c50eb
Removing intermediate container 1698d44c50eb
 ---> c9c75c4960cd
Step 10/16 : USER irisowner
 ---> Running in dd49a263a773
Removing intermediate container dd49a263a773
 ---> abef13ffc4de
Step 11/16 : COPY  Installer.cls .
 ---> b01d3b536e89
Step 12/16 : COPY  src src
 ---> 6ed1aa33393e
Step 13/16 : COPY irissession.sh /
 ---> 2b8436f61475
Step 14/16 : SHELL ["/irissession.sh"]
 ---> Running in 9eca533f3ef5
Removing intermediate container 9eca533f3ef5
 ---> 63ee158e5412
Step 15/16 : RUN   do $SYSTEM.OBJ.Load("Installer.cls", "ck")   set sc = ##class(App.Installer).setup()
 ---> Running in afd2046fb280
This copy of InterSystems IRIS has been licensed for use exclusively by:
InterSystems IRIS Community
Copyright (c) 1986-2019 by InterSystems Corporation
Any other use is a violation of your license agreement
Starting IRIS

Node: afd2046fb280, Instance: IRIS

%SYS>

%SYS>

Load started on 03/24/2020 02:21:26
Loading file Installer.cls as udl
Compiling class App.Installer
Compiling routine App.Installer.1
Load finished successfully.
2020-03-24 02:21:26 0 App.Installer: Installation starting at 2020-03-24 02:21:26, LogLevel=3
2020-03-24 02:21:26 3 Evaluate: #{$system.Process.CurrentDirectory()}src -> /opt/irisapp/src
2020-03-24 02:21:26 3 SetVariable: SourceDir=/opt/irisapp/src
2020-03-24 02:21:26 3 SetVariable: Namespace=IRISAPP
2020-03-24 02:21:26 3 SetVariable: app=irisapp
2020-03-24 02:21:26 3 Evaluate: ${Namespace} -> IRISAPP
2020-03-24 02:21:26 3 Evaluate: ${Namespace} -> IRISAPP
2020-03-24 02:21:26 3 Evaluate: ${Namespace} -> IRISAPP
2020-03-24 02:21:26 3 Evaluate: ${Namespace} -> IRISAPP
2020-03-24 02:21:26 3 Evaluate: /opt/${app}/data -> /opt/irisapp/data
2020-03-24 02:21:26 3 Evaluate: %DB_${Namespace} -> %DB_IRISAPP
2020-03-24 02:21:26 1 CreateDatabase: Creating database IRISAPP in /opt/irisapp/data/ with resource %DB_IRISAPP
2020-03-24 02:21:26 2 CreateDatabase: Overwriting /opt/irisapp/data/IRIS.DAT
2020-03-24 02:21:26 2 CreateDatabase: Adding database IRISAPP
2020-03-24 02:21:26 2 CreateDatabase: Creating and assigning resource '%DB_IRISAPP' to IRISAPP
2020-03-24 02:21:26 1 CreateNamespace: Creating namespace IRISAPP using IRISAPP/IRISAPP
2020-03-24 02:21:26 2 CreateNamespace: Adding namespace IRISAPP
2020-03-24 02:21:26 1 ActivateConfiguration: Activating Configuration
2020-03-24 02:21:26 3 Evaluate: ${SourceDir} -> /opt/irisapp/src
2020-03-24 02:21:26 1 Import: Loading /opt/irisapp/src (isdir=1) into IRISAPP, recurse=1

Load of directory started on 03/24/2020 02:21:26

Loading file /opt/irisapp/src/DMLSS/FilePassthroughService.cls as udl
Loading file /opt/irisapp/src/DMLSS/EmailPassthroughOperation.cls as udl
Loading file /opt/irisapp/src/DMLSS/Production.cls as udl
Loading file /opt/irisapp/src/PackageSample/ObjectScript.cls as udl
Loading file /opt/irisapp/src/DMLSS/Util.cls as udl
Loading file /opt/irisapp/src/PackageSample/PersistentClass.cls as udl

Compilation started on 03/24/2020 02:21:26 with qualifiers 'ck'
ERROR #5373: Class 'Ens.BusinessOperation', used by 'DMLSS.EmailPassthroughOperation:superclass', does not exist
Skip class DMLSS.EmailPassthroughOperation
ERROR #5373: Class 'Ens.BusinessService', used by 'DMLSS.FilePassthroughService:superclass', does not exist
Skip class DMLSS.FilePassthroughService
ERROR #5373: Class 'Ens.Production', used by 'DMLSS.Production:superclass', does not exist
Skip class DMLSS.Production
Compiling 3 classes, using 3 worker jobs
Compiling class DMLSS.Util
Compiling class PackageSample.ObjectScript
Compiling class PackageSample.PersistentClass
Compiling table PackageSample.PersistentClass
Compiling routine PackageSample.ObjectScript.1
Compiling routine DMLSS.Util.1
Compiling routine PackageSample.PersistentClass.1
Detected 3 errors during compilation in 0.112s.

ERROR #5373: Class 'Ens.BusinessOperation', used by 'DMLSS.EmailPassthroughOperation:superclass', does not exist
Detected 3 errors during load.
2020-03-24 02:21:26 0 App.Installer: ERROR #5373: Class 'Ens.BusinessOperation', used by 'DMLSS.EmailPassthroughOperation:superclass', does not exist
2020-03-24 02:21:26 0 App.Installer: ERROR #ConfigFailed: Unknown status code: <Ins>ConfigFailed )
  > ERROR #5373: Class 'Ens.BusinessOperation', used by 'DMLSS.EmailPassthroughOperation:superclass', does not exist
2020-03-24 02:21:26 0 App.Installer: Installation failed at 2020-03-24 02:21:26
2020-03-24 02:21:26 0 %Installer: Elapsed time .423668s

%SYS>
ERROR: Service 'iris' failed to build: The command '/irissession.sh do $SYSTEM.OBJ.Load("Installer.cls", "ck")   set sc = ##class(App.Installer).setup()' returned a non-zero code: 1
[node1] (local) root@192.168.0.23 ~/iriscontest2020
$ cat Installer.cls
Class App.Installer
{

XData setup
{
<Manifest>
  <Default Name="SourceDir" Value="#{$system.Process.CurrentDirectory()}src"/>
  <Default Name="Namespace" Value="IRISAPP"/>
  <Default Name="app" Value="irisapp" />

  <Namespace Name="${Namespace}" Code="${Namespace}" Data="${Namespace}" Create="yes" Ensemble="1">

    <Configuration>
      <Database Name="${Namespace}" Dir="/opt/${app}/data" Create="yes" Resource="%DB_${Namespace}"/>

      <Import File="${SourceDir}" Flags="ck" Recurse="1"/>
    </Configuration>
    <CSPApplication Url="/csp/${app}" Directory="${cspdir}${app}"  ServeFiles="1" Recurse="1" MatchRoles=":%DB_${Namespace}" AuthenticationMethods="32"
       
    />
  </Namespace>

</Manifest>
}

ClassMethod setup(ByRef pVars, pLogLevel As %Integer = 3, pInstaller As %Installer.Installer, pLogger As %Installer.AbstractLogger) As %Status [ CodeMode = objectgenerator, Internal ]
{
  #; Let XGL document generate code for this method. 
  Quit ##class(%Installer.Manifest).%Generate(%compiledclass, %code, "setup")
}

}

Oliver Wilms · Mar 26, 2020 go to post

I could not send an email from my Iris container. I created a TestProduction for testing my production. I added a lot of debug statements logging what happens in FileMaker into ^TESTdmlss. Try running the FileMailer application (follow instructions in Read me) and review ^TESTdmlss by typing ZW ^TESTdmlss.

Oliver Wilms · Mar 27, 2020 go to post

I tried this again today and it worked. No more errors. I did not change anything. I observed that the Login gets a response with a server name and today it is different compared to yesterday's server. Maybe the server I got logged in yesterday did not like me.

Oliver Wilms · Mar 28, 2020 go to post

Thanks to all who put on this contest. It motivated me to get my hands on Docker. Unfortunately I chose a bad topic for my application. I have no mail server to send my email. I tried to work with TCP because that is an alternate solution to a problem I am working on at my regular job. With default steps, I have no ports open to work with local tcp connections. I developed unit testing production for my contest application. I got an error in container that I did not get outside. I learned a lot this week while working on this. It is great if someone can work on what they enjoy doing and enjoy their work. That's me, happy!

Oliver Wilms · Apr 17, 2020 go to post

Good morning,

I encountered this error when I had to save a lot of data. It happened to me, because either the lock table was full (check console log) or I exceeded the lock threshold so a process would try to lock the entire table which failed because there were other processes also inserting data into the same tables.

Hope to help.

Oliver

Oliver Wilms · Apr 29, 2020 go to post

Patrick,

Thanks for your reply. Can Intersystems get us a list of the standards they presently support for their existing customers (FHIR, HL7v2.3, 2.4 0r 2.5, Edi or X12, etc.)?

From this list we can xmap to our requested protocol and determine if any gaps exist for other protocols.

Thanks,

Oliver and Terry

Oliver Wilms · May 5, 2020 go to post

I am learning Iris and Docker in my free account with Amazon Web Services. I started a new EC2 instance and with Docker. I copied your Docker run command. Then I got into Iris Terminal with this command:

docker exec -it iris21 iris session IRIS

I was in USER namespace and I populated the global: 

USER>for i=1:1:10 set ^tmp(i)=""

I viewed the global in Management Portal:

34.228.219.65:52773/csp/sys/exp/UtilExpGlobalView.csp?$ID2=tmp&$NAMESPACE=USER&$NAMESPACE=USER  

I halt out of Iris terminal and review storage. I find two IRIS.DAT for %SYS and user.

ubuntu@ip-172-31-45-10:/data/dur/iconfig/mgr$ ls -lt
total 194660
-rw-rw---- 1 51773 52773 104857600 May  6 02:53 IRIS.WIJ
-rw-r----- 1 51773 52773  94371840 May  6 02:50 IRIS.DAT
-rw-rw-r-- 1 51773 52773     38723 May  6 02:48 messages.log
-rwxrw-r-- 1 52773 52773        66 May  6 02:38 SystemMonitor.log
drwxrwxr-x 3 root  52773      4096 May  6 02:38 user
drwxrwxr-x 3 root  52773      4096 May  6 02:38 irisaudit
drwxrwxr-x 2 52773 52773      4096 May  6 02:38 Temp
-rw-rw---- 1 51773 52773       219 May  6 02:38 journal.log
drwxrwxr-x 2 51773 52773      4096 May  6 02:38 journal
drwxrwxr-x 3 52773 52773      4096 May  6 02:38 iristemp
drwxrwxr-x 3 root  52773      4096 May  6 02:38 irislocaldata
-rw-rw---- 1 51773 52773        35 May  6 02:38 iris.lck
-rw-rw---- 1 51773 52773        12 May  6 02:38 iris.ids
-rw-rw-rw- 1 51773 52773        58 May  6 02:38 startup.last
-rw-rw-rw- 1 51773 52773         2 May  6 02:38 iris.shid
-rw-rw-r-- 1 51773 52773         5 May  6 02:38 iris.use
drwxrwxr-x 2 root  52773      4096 May  6 02:38 stream
-rw-rw---- 1 51773 52773       938 Feb  7 16:00 irisodbc.ini
-rwxrwxrwx 1 51773 52773         0 Feb  7 16:00 ilock
ubuntu@ip-172-31-45-10:/data/dur/iconfig/mgr$ cd user
ubuntu@ip-172-31-45-10:/data/dur/iconfig/mgr/user$ ls -lt
total 11272
-rw-rw---- 1 51773 52773 11534336 May  6 02:50 IRIS.DAT
-rw-rw---- 1 51773 52773       35 May  6 02:38 iris.lck
drwxrwxr-x 2 51773 52773     4096 Feb  7 16:01 stream

I remove iris21 container from Docker by this command:

docker rm --force iris

The IRIS.DAT remained in user directory on my EC2 instance.

Management Portal would not work at this time.

I reboot EC2 instance from AWS console.

I login to EC2 using SSH and check IRIS.DAT files are still there.

I rerun the Docker run command to run iris21 again. I can return to Management Portal. It remembered the changed password when I log in. I can see the 10 enties in ^tmp global.

I believe you need to use port 51773 to connect Studio to Iris running in Docker container.

Oliver Wilms · May 6, 2020 go to post

Ken,

I copied your Docker command and I observed user IRIS.DAT database file was under durable storage. I believe it is because of "--env ISC_DATA_DIRECTORY=/dur/iconfig". 

Best regards,

Oliver

Oliver Wilms · May 19, 2020 go to post

Only a local database on the current primary failover member can be added to a mirror; it is added on the primary first,
then on the backup, and then on any desired async members. All mirrored databases must be journaled.
You must add the same set of mirrored databases to both the primary and backup failover members, as well as to any DR
async members.