Vic Sun · Oct 19, 2021 go to post

Michael,

What's the use case? You might be able to design something with SQL triggers but that feels ripe for complications. You can find people discussing this kind of solution (using triggers) for other databases online, and from what I can tell people generally agree this is a messy option.

If the idea is that people are accidentally executing improper SQL commands, perhaps I would tackle this from a training perspective, or by restricting SQL commands to a more limited audience.

Vic Sun · Oct 18, 2021 go to post

Hello Michael,

If the Ensemble log reports an arbiter loss of connection, Ensemble doesn't really have more logs that can explain why that happened. These messages are just reporting the underlying condition that Ensemble experiences.

Confirming the cause of connection losses is really more a matter of reviewing network/other logging in the environment.

Vic Sun · Oct 14, 2021 go to post

Michel,

This is an "internal" method that has made its way into the wild. I'm going to file a ticket with ISC to check whether it should be made public.

Vic Sun · Oct 13, 2021 go to post

On top of Robert's answer, I would add - why are you copying from another namespace at all? If you just need the standard interoperability mappings, those get generated from the "enable namespace for Interoperability productions" checkbox.

You can't run 2 productions (even if you assign 2 namespaces) from the same databases simultaneously, so I would probably avoid "copy from" in general, particularly because you are trying to use EnsLib code.

There are probably specific cases where you might want to copy a namespace from another one, but I'd be cautious and make sure that copying is what you actually want.

edit: I am unsure whether using "copy from" on HSSYS is a good idea. Personally, I haven't done that, but I would be concerned that you might have similar issues to copying from %SYS, as HSSYS is a shipped database.

Vic Sun · Sep 30, 2021 go to post

Hello Michel,

Ens.Config.Item has a Category property. Is that what you are looking for?

sample:

TEST>s item=##class(Ens.Config.Item).%OpenId(244)                            

TEST>zw item
item=4@Ens.Config.Item  ; <OREF>
+----------------- general information ---------------
|      oref value: 4
|      class name: Ens.Config.Item
|           %%OID: $lb("244","Ens.Config.Item")
| reference count: 2
+----------------- attribute values ------------------
|       %Concurrency = 1  <Set>
|        AlertGroups = ""  <Get>
|           Category = "test.cat"
|          ClassName = "Ens.Enterprise.MsgBankOperation"  <Set>
|            Comment = ""
|  DisableErrorTraps = ""
|            Enabled = 0
|         Foreground = 0
|     LogTraceEvents = 0
|               Name = "Ens.Enterprise.MsgBankOperation"  <Get>
|           PoolSize = 1
|           Schedule = ""
+----------------- swizzled references ---------------
| i%ModifiedSettings = ""  <Set>
| r%ModifiedSettings = ""  <Set>
|       i%Production = "TESTPKG.FoundationProduction"
|       r%Production = ""
|         i%Settings = ""
|      i%Settings(1) = $lb($lb("IPAddress","Adapter","127.0.0.1"))
|      i%Settings(2) = $lb($lb("LocalInterface","Adapter",""))
|      i%Settings(3) = $lb($lb("Port","Adapter","9192"))
|      i%Settings(4) = $lb($lb("EnableArchiving","Host","1"))
|      i%Settings(5) = $lb($lb("StayConnected","Adapter","3"))
|         r%Settings = ""  <Set>
|  i%VirtualSettings = ""  <Set>
|  r%VirtualSettings = ""  <Set>
+--------------- calculated references ---------------
| CommentOrClassname   <Get>
|  InactivityTimeout   <Get,Set>
+-----------------------------------------------------

TEST>w item.Category
"test.cat"

Vic Sun · Sep 29, 2021 go to post

I'm not sure about that, Apache has been updated over the years but I don't know which versions and when off the top of my head.

I would suggest investigating this with WRC. I am aware that that error can be thrown in a container environment depending on the OS, so perhaps that is relevant to your situation.

Vic Sun · Sep 28, 2021 go to post

Augusto,

I'd check if the port is taken by something else. Perhaps the OS logs or the IRIS ^SYSLOG will have entries of note?
Maybe you can try restarting the web server to see if you can throw an error?

Vic Sun · Sep 28, 2021 go to post

Lionel,

Check out the following article:

https://community.intersystems.com/post/handling-date-and-time-operations-cach%C3%A9

You might want to try something like:

%SYS>s time=$PIECE($horolog,",",1)-1_","_$PIECE($horolog,",",2)

%SYS>zw time
time="66014,35176"

%SYS>w $zdatetime(time,3)
2021-09-27 09:46:16

When you just do $horolog-1, you're truncating the time off of $horolog. $PIECE lets you modify and combine the date/time segments of $horolog independently.

Vic Sun · Sep 27, 2021 go to post

Hello Garin,

Differing free vs available memory is a natural occurrence for Linux. The buff/cache is what's being used by the OS for memory and can be relinquished to applications as necessary.

I would check underlying items like OS logs and whether the OS version is supported. error 22 is presumably error 22 invalid argument - not sure what exactly that indicates though.

Vic Sun · Sep 24, 2021 go to post

Ah, great. Thanks for the update. I'm glad you were able to figure this one out!

Vic Sun · Sep 23, 2021 go to post

Hello Igor,

What steps did you follow exactly? Do you see any potential permissions issues? Does the messages.log include any useful errors?

Did you follow the documented temp directory unzip steps?
 mkdir /tmp/iriskit 
# chmod og+rx /tmp/iriskit 
# umask 022 
# gunzip -c /download/iris-2019.3.0.710.0-lnxrhx64.tar.gz | ( cd /tmp/iriskit ; tar xf - )

Vic Sun · Sep 23, 2021 go to post

Actually, reviewing more closely, it looks like your version string is for Unified Care Record / Patient Index. That has a different set of requirements than the basic IRIS migration. I'd recommend closely reviewing the HealthShare documentation - I'm not personally very familiar with the HealthShare side of things, but I'm fairly certain there is a version plateau for HealthShare to allow for the move to IRIS.

edit:

this doc page at least is relevant:

Unified Care Record Installation and Migration Guide > Preparing for an Upgrade Installation

https://docs.intersystems.com/hs20211/csp/docbook/DocBook.UI.Page.cls?KEY=HEINS_prep#HEINS_prep_considerations

"If you are upgrading from a Caché-based Unified Care Record or Information Exchange system earlier than version 2019.1, you must first upgrade to the plateau version 2019.1 before upgrading to this release."

Vic Sun · Sep 23, 2021 go to post

Now that you mention it, I think you have not followed a supported migration path. You can find details in the IRIS migration guides available in the WRC distributions page's documents section, but the minimum version to migrate in-place from is 2016.2.x, and it can be used to go to IRIS 2019.1.1+ or 2020.1. It does not support migration directly to 2021.1.

Vic Sun · Sep 23, 2021 go to post

Augusto,

Ens.Director definitely still exists in IRIS. That error means the "%Library.CacheStorage" class doesn't exist. I don't know why that class would be called, however, as it has been replaced by %Library.Persistent by comparing CE / IRIS docs.

Are you sure your in-place migration completed successfully? I assume Ens.Director should try to use the corresponding class in IRIS. I think this is a candidate for WRC investigation.

Vic Sun · Sep 22, 2021 go to post

Can you identify what is being locked? Is it possible the lock is on something internal, and not the table itself?

Vic Sun · Sep 20, 2021 go to post

Sai,

By folder, do you mean moving a class to a different package? It's okay if the class name overlaps, because the package will still differentiate the "full name" of the class.

ex, the following can coexist. 

package1.class

package2.class

You could also use subpackages such as package1.subpackage.class.

Some of the built in class divisions might be helpful for you to compare with - for example, on IRIS for Health, the following packages exist:

EnsLib.HL7.Operation

EnsLib.HL7.Service

etc., for each type of business component.

I certainly agree that having Git / source control set up is a good practice. You may also find the built-in production deployment functionality useful:
https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=EGDV_deploying

Vic Sun · Sep 16, 2021 go to post

Hello Alicia,

I would recommend you reach out to your Athena representative for guidance on what version of IRIS to migrate to. I anticipate you will also need them to distribute to you the appropriate kit.

It also sounds like you are planning to go live with this change in the very near future. I would suggest testing this upgrade before attempting in your live environment.

edit: I may have misinterpreted your org. If you are licensed directly with InterSystems, I'd recommend reaching out to your InterSystems account rep. If you are licensed through somebody else, they can help you with the migration to IRIS.

Vic Sun · Sep 16, 2021 go to post

Sai,

I'm not sure I understand your question, but it sounds like you are asking about code package conventions? Perhaps you can describe in more detail what you are trying to do, or give an example?

Package Options

Vic Sun · Sep 16, 2021 go to post

I'm not sure I understand what you want to do exactly. Presumably, there are at least a few namespaces where you want to access this code. You could test a few namespaces (not the %ALL "namespace", real namespaces) to confirm that you can access the code you have %ALL mapped.

Vic Sun · Sep 16, 2021 go to post

That makes sense to me. As the docs explain, there is not really a "%ALL" namespace, it's more of an abstraction to represent a system-wide mapping.

Once you have set up a %ALL mapping, I would just directly try to verify that the functionality works as you expect. For example, make a AllMapping package and put your test code in there, then make an AllMapping package mapping for %ALL, then confirm that you can access that code in any namespace.

Vic Sun · Sep 16, 2021 go to post

Vivek,

Your version of IRIS for Health doesn't have the SMP UI to create a FHIR server. That was added in 2020.2.

https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.UI.Page.cls?KEY=HXIHRN_new#HXIHRN_new_serverui

I'd suggest you look at the 2019.1 docs for your version's instructions. That being said, IRIS' FHIR support is being actively developed so it is changing frequently. If you can upgrade to the latest version of IRIS for Health, you will get access to the most functionality (and quality of life improvements like the SMP option!)

Vic Sun · Sep 14, 2021 go to post

Hello Apoorva,

I see you've already opened a WRC for this. I think it definitely makes more sense to look into this with InterSystems than on this forum.

In general, my questions would be along the lines of why you needed to force the instance, and what other messages were logged. The OS logs will probably also be helpful.