Michel Liberado · Sep 12, 2025 go to post

An online survey was sent in April 2024 to all HL7 affiliates and other known national standards developers across the globe, with the intent to gather responses from a small number-at least one-of knowledgeable sources from each country. See  2024 State of FHIR Survey Results - interop.esante.gouv.fr
openEHR is mentioned only once by Slovenia (maybe because the only integrator+platform provider that provides clean openEHR tools is from Slovenia: https://www.better.care/).
Can we assume that openEHR is not dead because never really been alive ?

Can we assume that its safer to use "everything" FHIR and, just in case, be "future proof" some something like this https://open-fhir.com/ that can database level synchronization ?

Michel Liberado · Jul 25, 2023 go to post

Just to be sure, this is a typo in "Interger", right ?
Parameter HandleCorsRequest = 1; Parameter UseSession As Interger = 1;

Michel Liberado · Jul 24, 2023 go to post

InterSystems enforced SOAP/REST licensing but may have removed it.
In the InterSystems IRIS® Upgrade Checklist (2023.1) you can see in the Google cached webpage:
 

DP-417320: Enforce SOAP/REST licensing

Category: Licensing
Platforms: All
Version: 2023.1.0

In previous versions, the product did not enforce the SOAP/REST licensing rules.

With this version, we are now enforcing those licensing rules. Each authenticated SOAP/REST request will be licensed as a concurrent user (with multiple connections allowed). Unauthenticated requests (i.e. $Username = "UnknownUser") will be counted as independent user connections and subject to a 10-second minimum connection time.
Maybe you can try again with a more recent release or rework your app to use authenticated users.

Michel Liberado · Dec 14, 2022 go to post

Hi, what about deploying using a Docker container ?
I'm not sure you absolutely need Studio, Visual Studio Code + InterSystems plugins should do fine.
You could eventually also provide just a ZPM of your application and let the client manage its license + IRIS.

Michel Liberado · Sep 20, 2022 go to post

Hi, I just did the same thing.
I am using Visual Studio Code with InterSystems plugins.
Using the plugin, connect to your server in the appropriate namespace.

Once done, locate your Production.cls in VSCode explorer, right click and select Export, this will export from IRIS to your local filesystem.


You should be able to find the location of the exported class in your filesystem in the output panel:

export "Namespace.Production.cls" as "/Users/yourself/Developer/Project/Namespace/Production.cls" - SuccessExported items: 1

Do the search and replace that you in the local Production.cls. When saving your modifications, the class is automatically compiled in the server:

The output also shows:

Compilation started on 09/20/2022 13:33:15 with qualifiers 'cuk'
Compiling class EAI.Production
Compiling routine EAI.Production.1
Compilation finished successfully in 0.113s.

While working on your changes, pay attention to the notification that can occur

Michel Liberado · Feb 17, 2022 go to post

Hi,

I think you mean IRIS, not ISIS.

can you give more precisions about the installation ?  Platform ? Distribution ? Firewall somewhere ? 

Michel Liberado · Feb 14, 2022 go to post

Thanks everyone, I've read all your answers.


I​​ am using a %DocDB.Database. I have many colons created using %CreateProperty and some of them have the UNIQUE indicator set to true, therefore an index is created.
BUT, the %CreateProperty method is quite limited and I couldn't find how to make indexes on multiple columns/properties without doing some kind of trick (adding a property whose propertyExpression is the combination of other properties).
Anyway, I ended up building some indexes manually like that:

SET className = tfullDatabaseName
SET indexDefinition = ##class(%Dictionary.IndexDefinition).%New()
DO indexDefinition.parentSetObjectId(className)
SET indexDefinition.Name = "col1AndColB"
SET indexDefinition.Properties = "col1,colB"
SET indexDefinition.Unique = 1
SET status = indexDefinition.%Save()


Whenever I want to update my database schema, our strategy is to remove all properties and indexes.
Of course, the original %DropProperty drops indexes associated to the property to drop using an internal server only method dropIndex:
 

/// dropIndex() - delete an index definition and its structure. This method returns an oref referencing the index definition
/// document that was removed from the index definition database.
/// <br>
/// <pre>
/// SAMPLES>set people = $system.DocDB.GetDatabase("People")
/// SAMPLES>set index = people.%DropIndex("HC")
/// SAMPLES>write index.%ToJSON()
/// {"database":"People","name":"HC","type":"bitmap","class":"%DocDB.Server.Index.Bitmap","key":[["HomeCity","string"]]}
/// </pre>

Method dropIndex(indexName As %RawString = "") As %Library.DynamicAbstractObject [ Internal, ServerOnly = 1 ]

{
    TRY {
        SET response = $THIS
        $$$THROWONERROR(status,$CLASSMETHOD(..ClassName,"%PurgeIndices",$LISTBUILD(indexName)))
        $$$THROWONERROR(status,##class(%Dictionary.IndexDefinition).%Delete($$$oidForm(..ClassName_"||"_indexName)))
// check status?

    } CATCH exception {
        SET response = ""
        THROW exception
}
RETURN response
}


By the way, the documentation of this method suggest that you can use %DropIndex ... maybe this is an error.
Note that this instance method is called only within the %DropProperty method, within a TSTART TCOMMIT block and the class is also locked.
About my initial question, my original intent was to drop ALL indexes on the database, even those NOT created with %CreateProperty.
I tried to mimic the code of %DroptProperty (TSTART TCOMMIT, lock class, ...) with no success. When I try to recreate properties and columns for all my %DocDb.Databases it fails randomly.
 

Michel Liberado · Feb 11, 2022 go to post

Thanks, this works.
But, my question did not exactly reflect my thoughts, I needed the ID of a class' indices in order to delete them manually since I haven't found any method that would be %RemoveIndices(pIndexList As %List=""...).
So, in order to get the IDs, I use 

SELECT ID
FROM %Dictionary.IndexDefinition
WHERE  parent = 'your.class'

Then we use %DeleteId to delete the found indices. This is not fully tested yet.
 

Michel Liberado · Nov 26, 2021 go to post

We are looking forward for Embedded Python ! About the mindset|languages, don't be rude please ! 😚. Whenever a new developer comes in and jumps into ObjectScript, you don't necessarily tell him about this very rule exception when writing arithmetic nor does he think that he should read the documentation SQL/Using SQL/... whilst it's not trivial that is is related. I was just asking about a setting that would make me confident when we deliver our platform to future developers.
I always format my expressions with "(" but for some people this is just some coding style...

Michel Liberado · Nov 26, 2021 go to post

Operator precedence in ObjectScript is strictly left-to-right; within an expression operations are performed in the order in which they appear. This is different from other languages in which certain operators have higher precedence than others

I am fine with each language having its own operator precedence, but, is there a setting somewhere, even hidden or activable with some obscur guru command to have the same as pretty much everyone else ?

Michel Liberado · Mar 2, 2020 go to post

Problem is solved, it was my fault. I forgot a '.' in one of the many nested calls ...
The thing to remember is to pass the response argument by reference everywhere, from REST to BO1.

Michel Liberado · Mar 2, 2020 go to post

Hi,

I don't really get it, I don't understand the flow.

The documentation says :

structure your code to use SendRequestAsync() instead of this method, and handle response messages in the OnResponse() callback method

But I want a synced request.

Set tSC = SendRequestSync(request, .response)
// Now I continue the flow from here ... but you're telling me I should handle in OnResponse() ... but how do I take control right back here if I use OnResponse() +?

Michel Liberado · Feb 20, 2020 go to post

The following post (How to - Customize Ensemble Settings) details your answers.
I had not seen it while searching for answers because it didn't show up in the results while typing "settings" in the search field it but it does when typing "customize":

 vs 

Anyway, thank you for your help.

Michel Liberado · Feb 4, 2020 go to post

You are right, my calling code is inside a web application, so I need to give the ressource %NSone_SRC to the web application.

Thank you.

Michel Liberado · Jul 9, 2019 go to post

Hi there, this is not related to Atelier but rather to your Eclipse installation.

In the menu bar, click "Windows" and then "Preferences", a window will happen. On the top left corner, type "proxy" in the "Type filter text".

In the right part, you enter your proxy settings (ask your IT department).

Here is an example for me: