NB : pour le stockage orienté colonne indiqué au niveau de la table via l'instruction WITH STORAGETYPE = COLUMNAR , il est à noter qu'IRIS se laisse la liberté de choisir pour vous le stockage le plus communément optimal (en ligne ou en colonne), en fonction des types de données.

Exemple : 

l'instruction suivante :


CREATE TABLE a.addressV1 (
        city varchar(50),
        zip varchar(15),
        country varchar(15)
    )
    WITH STORAGETYPE = COLUMNAR

Ne créera aucun stockage orienté colonne, lié au risque de données trop disparates, du fait du nombre de caractères autorisés dans chaque colonne (15 ou 50) : 


Class a.addressV1 Extends %Persistent [ ClassType = persistent, DdlAllowed, Final, Owner = {_SYSTEM}, ProcedureBlock, SqlRowIdPrivate, SqlTableName = addressV1 ]

{

Property city As %Library.String(COLLATION = "EXACT", MAXLEN = 50, STORAGEDEFAULT = "ROW") [ SqlColumnNumber = 2 ];

Property zip As %Library.String(COLLATION = "EXACT", MAXLEN = 15, STORAGEDEFAULT = "ROW") [ SqlColumnNumber = 3 ];

Property country As %Library.String(COLLATION = "EXACT", MAXLEN = 15, STORAGEDEFAULT = "ROW") [ SqlColumnNumber = 4 ];

Parameter STORAGEDEFAULT = "columnar";

Parameter USEEXTENTSET = 1;

alors que l'exemple donné dans l'article, retient bien une colonne (et une seule) en stockage orienté colonne, puisqu'ayant seulement 5 caractères autorisés pour la colonne zip.




 CREATE TABLE a.addressV2 (
        city varchar(50),
        zip varchar(5),
        country varchar(15)
    )
    WITH STORAGETYPE = COLUMNAR

Class a.addressV2 Extends %Persistent [ ClassType = persistent, DdlAllowed, Final, Owner = {_SYSTEM}, ProcedureBlock, SqlRowIdPrivate, SqlTableName = addressV2 ]

{

Property city As %Library.String(COLLATION = "EXACT", MAXLEN = 50, STORAGEDEFAULT = "ROW") [ SqlColumnNumber = 2 ];

Property zip As %Library.String(COLLATION = "EXACT", MAXLEN = 5) [ SqlColumnNumber = 3 ];
Property country As %Library.String(COLLATION = "EXACT", MAXLEN = 15, STORAGEDEFAULT = "ROW") [ SqlColumnNumber = 4 ];

Parameter STORAGEDEFAULT = "columnar";
Parameter USEEXTENTSET = 1;

Avec embedded Python, vous pouvez avoir un code assez simple en utilisant pandas :


/// Convert an Excel file to a CSV file
ClassMethod XLStoCSV(source As %String = "/data/sample.xlsx") As %Status [ Language = python ]
{
import pandas as pd
read_file = pd.read_excel(source)
read_file.to_csv(source+'.csv', index = None, header=True)
}
 

En fait, exclure tous les schémas '%' ne fonctionne pas très bien : avec cette option tous les noms de schémas sont masqués et quand on veut voir les données, les requêtes échouent du fait que toutes les tables sont considérées comme appartenant au schema par défaut SQLUser.

La réponse parfaite avec l'API appropriée à utiliser a été donnée par @Vitaliy Serdtsev 

USER>zn "%sys"
%SYS>w ##class(SYS.Database).%OpenId("/is/iris/mgr/irisaudit").Size
11
%SYS>w ##class(%SYS.Audit).Erase(1)
1
%SYS>w ##class(SYS.Database).%OpenId("/is/iris/mgr/irisaudit").Size
1

Avec dans le messages.log  :

08/24/23-17:31:00:649 (23676) 0 [Database.FullExpansion] Expansion completed for database /is/iris/mgr/irisaudit/. Expanded by 10 MB.
08/24/23-17:33:38:885 (48001) 0 [Generic.Event] Dismounted database /is/iris/mgr/irisaudit/ (SFN 4)
08/24/23-17:33:39:955 (48001) 0 [Database.MountedRW] Mounted database /is/iris/mgr/irisaudit/ (SFN 4) read-write.

Bonjour @Taher C,

je te suggère de créer des API REST dans IRIS  et de les consommer depuis PowerApps/PowerAutomate.

Tu trouveras ici un exemple de comment envoyer une requête http depuis PowerAutomate :

https://www.spguides.com/rest-api-in-power-automate/

NB : Hubic est le nom historique du projet chez CFAO, qui n'a pas d'équivalence avec InterSystems Ensemble ni IRIS 😉

Faire la modification depuis la classe %SYSTEM.CSP en utilisant $system.CSP.SetConfig:

CSS>d $system.CSP.DisplayConfig()
...
CSS>w $system.CSP.GetConfig("DefaultPasswordChangePage")
%CSP.PasswordChange.cls

CSS>d $system.CSP.SetConfig("DefaultPasswordChangePage","CSS.CSP.ChangePassword.cls")

CSS>w $system.CSP.GetConfig("DefaultPasswordChangePage")
CSS.CSP.ChangePassword.cls

Bonjour,

vous pouvez aussi utiliser une méthode "low-code" en utilisant le langage DTL avec l'action REMOVE

 

utils.HL7.transfo.removeSegment

FHIR SQL Builder

Le FHIR® SQL Builder, ou Builder, est un outil de projection sophistiqué utilisé pour créer des schémas SQL personnalisés à l'aide de données dans un référentiel FHIR sans déplacer ni dupliquer les données vers un référentiel SQL distinct. Le Builder est conçu spécifiquement pour fonctionner avec les référentiels FHIR et les bases de données multimodèles dans les produits InterSystems.

L'objectif du Builder est de permettre aux analystes de données et aux développeurs de Business Intelligence de travailler avec FHIR à l'aide d'outils analytiques familiers, sans avoir à apprendre une nouvelle syntaxe de requête. Les données FHIR sont codées dans un graphe orienté complexe et ne peuvent pas être interrogées à l'aide de la syntaxe SQL standard. Un langage de requête basé sur des graphes, FHIRPath, est conçu pour interroger les données FHIR, mais il n'est pas relationnel. En permettant à un gestionnaire de données de créer une projection SQL personnalisée de son référentiel FHIR, à l'aide de tables, de colonnes et d'index, le générateur permet aux analystes de données d'interroger les données FHIR sans la complexité de l'apprentissage de FHIRPath ou de la syntaxe de recherche FHIR.

 
Standard vs. Norme
 
FHIR pour les développeurs
 
Cas d'Usage
 
FHIR est le Web 3.0 des données de santé
 
Entrepôts de Données de Santé (EDS)
 
OMOP
 
CQL