Article Sylvain Guilbaud · Fév 5 14m read

Dans cette dernière partie de notre présentation des fonctions de fenêtre, nous allons explorer les fonctions restantes qui n'ont pas encore été abordées. Vous découvrirez également des conseils de performance et un guide pratique pour vous aider à décider quand il convient (ou non) d'utiliser efficacement les fonctions de fenêtre.


1. Fonctions de valeur de décalage et de position

Aperçu

Les valeurs de référence de ces fonctions sont calculées à partir d'autres lignes par rapport à la ligne actuelle, ou elles sont extraites des première, dernière ou n-ième valeurs dans une fenêtre.

  • LAG(colonne,
0
1 24
Article Sylvain Guilbaud · Jan 29 8m read

InterSystems IRIS offre de nombreuses options de sécurité configurables, mais beaucoup de développeurs utilisent surtout des rôles et des ressources pour sécuriser des tables ou des routines entières. Aujourd'hui, on va aller plus loin. On peut aussi sécuriser des colonnes et des lignes individuelles séparément, mais ces deux mécanismes fonctionnent très différemment. Commençons par les colonnes.

Sécurité des colonnes

À des fins de test et de démonstration, nous allons conserver une structure de table concise et simple. Nous avons une table appelée "Person" (Personne) dans l'espace de noms USER qui contient une colonne ID, une colonne date de naissance (DOB), et des colonnes prénom et nom. 

0
0 26
Article Sylvain Guilbaud · Jan 21 9m read

Introduction

Dans cet article, nous explorerons différentes approches permettant d'étendre et de personnaliser le comportement des routeurs de messages d'interopérabilité intégrés à InterSystems IRIS (et IRIS Health).

Les routeurs de messages remplissent l'une des fonctions essentielles de l'intégration d'applications d'entreprise (EAI) et font partie des processus métier les plus fréquemment utilisés dans les productions d'interopérabilité.

Après un bref aperçu des classes de routeurs de messages intégrés dans InterSystems IRIS et IRIS for Health, cet article expliquera comment améliorer leurs capacités afin d'obtenir des résultats spécifiques, sans avoir à développer un processus métier à partir de zéro.

Une mise en garde s'impose : la plupart de ces techniques impliquent de remplacer les méthodes de l'implémentation actuelle des classes de routeurs de messages dans IRIS Data Platform et IRIS for Health 2025.x. Elles peuvent ne pas s'appliquer à d'autres versions antérieures ou futures. 

Le référentiel GitHub qui accompagne cet article contient une collection d'exemples simples, minimalistes et volontairement abstraits illustrant les techniques abordées.

Nous vous invitons à nous faire part de vos avis, commentaires et retours constructifs!

0
0 25
Article Sylvain Guilbaud · Jan 15 10m read

Quand j'étais plus jeune (le détail de mon âge exact ne relève pas du sujet de cet article), le mot "jeton" était synonyme de plaisir. En effet, plusieurs fois par an, j'avais la chance d'aller dans une salle d'arcade pour jouer à des jeux vidéo amusants avec mes amis.

De nos jours, les jetons sont synonymes de sécurité.L'authentification JSON Web Token (JWT) est devenue l'une des normes les plus populaires pour sécuriser les API REST.Heureusement pour les utilisateurs d'IRIS, nous disposons d'un moyen simple de configurer les applications afin qu'elles soient protégées de cette manière.

0
0 31
Article Sylvain Guilbaud · Jan 5 1m read

FAQ InterSystems

Les paramètres par défaut pour la connexion permanente et la taille du pool pour les hôtes professionnels utilisant l'adaptateur TCP sont les suivants :

StayConnected = -1(no timeout)
PoolSize = 1

Si un problème réseau entraîne la perte de connexion à un serveur d'entreprise, le système de production ne pourra pas le détecter et refusera toute nouvelle connexion.Dans ce cas, aucun événement n'est consigné dans le journal des événements.

0
0 28
Article Sylvain Guilbaud · Déc 16, 2025 12m read

Dans la Partie 1, nous avons exploré le fonctionnement des fonctions de fenêtre. Nous avons découvert la logique sous-jacente à PARTITION BY, ORDER BY et à des fonctions telles que ROW_NUMBER() et RANK(). Dans cette deuxième partie, nous allons approfondir notre connaissance des fonctions de fenêtre au moyen d'exemples pratiques..


1. Fonctions d'agrégation sur fenêtre

Présentation

Ces fonctions calculent une agrégation (par exemple, somme, moyenne, minimum, maximum, nombre, etc.) sur la fenêtre définie, mais ne regroupent pas les lignes.

0
1 36
Article Sylvain Guilbaud · Déc 15, 2025 4m read

Les fonctions de fenêtre dans InterSystems IRIS permettent de réaliser des analyses puissantes — comme des totaux cumulés, des classements (rankings) ou des moyennes mobiles — directement en SQL.
Ces fonctions s’appliquent à une "fenêtre" de lignes liées à la ligne courante, sans regrouper les résultats comme le fait GROUP BY. Cela signifie que vous pouvez écrire des requêtes plus claires, plus rapides et plus faciles à maintenir — sans boucles, sans jointures, sans tables temporaires.

Dans cet article, nous allons comprendre le fonctionnement des fonctions de fenêtre SQL en abordant certaines

0
1 43
Article Sylvain Guilbaud · Nov 24, 2025 3m read

Récemment, j'ai remplacé mon ancien ordinateur portable par un nouvel ordinateur et j'ai dû migrer toutes mes données. Je cherchais un guide, mais je n'ai rien trouvé décrivant en détail comment migrer les connexions serveur d'InterSystems Studio et de Visual Studio Code d'un PC à un autre. Il ne suffit pas de réinstaller les outils, et migrer toutes les connexions manuellement semblait être une perte de temps. J'ai finalement réussi à résoudre le problème, et vous trouverez dans cet article la marche à suivre.

InterSystems Studio

Exportation des connexions serveur

La migration des connexions

0
0 53
Article Sylvain Guilbaud · Nov 6, 2025 5m read

Introduction

Dans mon article précédent, j'ai présenté le module IRIStool, qui intègre de manière transparente la bibliothèque pandas pour Python à la base de données IRIS. Je vais maintenant vous expliquer comment utiliser IRIStool pour exploiter InterSystems IRIS comme base pour une recherche sémantique intelligente dans les données de soins de santé au format FHIR.

Cet article décrit ce que j'ai fait pour créer une base de données pour mon autre projet, FHIR Data Explorer. Les deux projets sont candidats au concours InterSystems actuel, alors n'hésitez pas à voter pour eux si vous les trouvez utiles.

Ils sont disponibles sur Open Exchange:

Dans cet article, nous aborderons les sujets suivants:

  • Connexion à la base de données InterSystems IRIS via Python
  • Création d'un schéma de base de données compatible FHIR
  • Importation de données FHIR au moyen d'intégrations vectorielles pour la recherche sémantique
0
0 49
Article Sylvain Guilbaud · Oct 29, 2025 14m read

Aperçu

Cette interface Web est conçue pour faciliter la gestion des tables de recherche de données (Data Lookup Tables) via une page Web conviviale. Elle est particulièrement utile lorsque les valeurs de votre table de recherche sont volumineuses, dynamiques et changeantes. Les utilisateurs finaux peuvent gérer efficacement les données de la table de recherche en fonction de leurs besoins grâce à un accès contrôlé à cette interface Web (autorisations de lecture, d'écriture et de suppression limitées à cette page).

Les données gérées via cette interface peuvent être utilisées de manière transparente pour les règles HealthConnect ou les transformations de données, ce qui élimine le besoin d'une surveillance et d'une gestion manuelles constantes des tables de recherche et permet ainsi un gain de temps considérable.

Remarque:
Si la table de recherche de données classique ne répond pas à vos besoins en matière de mappage, vous pouvez créer une table personnalisée et adapter cette interface Web ainsi que sa classe de support avec un minimum de modifications. Un exemple de code de classe est disponible sur demande.

0
0 51
Article Sylvain Guilbaud · Oct 22, 2025 4m read

Bonjour à tous les membres de la communauté!

Beaucoup d'entre vous se souviennent certainement des fonctionnalités NLP disponibles dans IRIS sous le nom iKnow, qui ont été supprimées depuis peu de temps. Mais... Tout a-t-il été supprimé ? NON! Un petit village résiste à la suppression: les index iFind!

0
0 43
Article Sylvain Guilbaud · Oct 7, 2025 5m read

Aperçu Je suis ravi d'annoncer la sortie de testcontainers-iris-node, une bibliothèque Node.js qui facilite le lancement de conteneurs InterSystems IRIS temporaires pour l'intégration et les tests E2E. Ce projet vient naturellement compléter la gamme existante d'adaptateurs Testcontainers pour IRIS, notamment testcontainers-iris-python et testcontainers-iris-java.

Pourquoi testcontainers-iris-node? En tant que développeur Node.js travaillant avec InterSystems IRIS, j'ai souvent été confronté à des difficultés lors de la configuration d'environnements de test imitant la production. testcontainers-iris-node résout ce problème en exploitant le framework testcontainers-node pour créer des environnements IRIS isolés à la demande.

Ceci est particulièrement important pour:

  • Les tests d'intégration avec les bases de données IRIS
  • Les tests de pipelines de données ou de microservices
  • L'automatisation des environnements de test dans les pipelines CI

Fonctionnalités

  • Lancement d'IRIS dans des conteneurs Docker à l'aide de Testcontainers
  • Prise en charge des images et de la configuration Docker personnalisées
  • Stratégies d'attente pour s'assurer qu'IRIS est prêt avant le début des tests
  • Désinstallation de nettoyage entre les exécutions de tests
0
1 41
Article Sylvain Guilbaud · Sept 25, 2025 7m read

artisan cover

Si vous avez jamais observé un véritable artisan, qu'il s'agisse d'un potier transformant de l'argile en chef-d'œuvre ou d'un luthier donnant vie à un morceau de bois brut pour en faire une magnifique guitare, vous savez que la magie ne réside pas dans les matériaux, mais dans le soin, le savoir-faire et le traitement. Je le sais d'expérience : ma guitare électrique faite à la main est une source d'inspiration quotidienne, mais je dois avouer que créer quelque chose de ce genre est un don qui me manque.

Pourtant, dans le monde numérique, je vois souvent des gens qui espèrent que l'IA

0
0 45
Article Sylvain Guilbaud · Sept 5, 2025 1m read

Rubrique FAQ InterSystems

Si vous souhaitez générer une erreur personnalisée arbitraire dans un bloc TRY, vous pouvez transmettre une exception avec un throw comme suit. Dans l'exemple suivant, une erreur personnalisée est générée si Stcount est inférieur à 1.

Class User.Test
{

ClassMethod ExceptionTest()
 {
    try
    {
      // : some codesif (Stcount<1) {
          throw##class(%Exception.General).%New("User-defined error", "5001", "location", "Data at location error")
          // User-created errors are 5001 and above
      }
    }
    catch ex
    {
      write"Er
0
1 34
Annonce Sylvain Guilbaud · Sept 5, 2025

#InterSystems Demo Games


⏯️  Éliminer le gaspillage dans les chaînes d'approvisionnement des soins de santé
 

Entre les rappels de fournitures, les stocks périmés et les dépenses inconsidérées, on estime que 25 milliards de dollars par an sont gaspillés dans les chaînes d'approvisionnement du secteur de la santé. Nous savons à quel point la chaîne d'approvisionnement est cruciale dans le secteur de la santé ; nous savons donc que ce problème mérite d'être résolu ! À quoi pourrait ressembler une solution ? Regardez et découvrez-la !

Présentateurs:
🗣 @Georgia Gans, Sales Engineer, InterSystems
🗣 @Annie Tong, Sales Engineer, InterSystems
🗣 @Boris Mamkin, Senior Sales Engineer, InterSystems

0
1 60
Article Sylvain Guilbaud · Août 29, 2025 1m read

Rubrique FAQ InterSystems

Par défaut, l'ordre des colonnes d'une table est déterminé automatiquement par le système. Pour modifier cet ordre, définissez explicitement l'ordre de chaque propriété à l'aide du mot-clé SqlColumnNumber lors de la définition de la classe.

Exemple :

Property Name As %String [SqlColumnNumber = 2];

Veuillez consulter la documentation ci-dessous.

SqlColumnNumber

Si vous souhaitez modifier le nom de la table SQL, spécifiez SqlTableName. Si vous souhaitez modifier le nom de la colonne (nom du champ), spécifiez SqlFieldName.

Les deux s’appliquent uniquement aux classes

0
0 24
Article Sylvain Guilbaud · Août 14, 2025 3m read

Les données sont au cœur de la transformation numérique qui bouleverse le secteur de la santé. Ce changement radical nécessite de nouvelles bases pour gérer les énormes besoins en données des soins de santé modernes.

Le délai de mise sur le marché est crucial pour développer les prochaines avancées thérapeutiques, les connaissances génomiques et les flux de travail cliniques intelligents. Vous devez les mettre en œuvre dès maintenant.

C'est pourquoi nous avons étendu la puissance de notre plateforme de données InterSystems IRIS afin de répondre aux spécificités des informations de santé.

0
0 18
Article Sylvain Guilbaud · Juil 18, 2025 11m read

🛠️ Gestion des configurations d'InterSystems API Manager (IAM = Kong Gateway) en CI/CD

🔍 Contexte : configurations d'InterSystems IAM

Dans le cadre de l'intégration d'InterSystems IAM dans un environnement sécurisé et contrôlé, InterSystems IAM repose sur Kong Gateway pour gérer les API exposées. Kong agit comme une API Gateway moderne, capable de gérer l’authentification, la sécurité, la gestion du trafic, les plugins, et bien plus encore.

Cependant, maintenir une configuration cohérente de Kong (routes, services, plugins...) entre les différents environnements (développement, test, production)

0
0 38
Article Sylvain Guilbaud · Juil 8, 2025 3m read

Si vous migrez d'Oracle vers InterSystems IRIS, comme beaucoup de mes clients, vous risquez de rencontrer des modèles SQL spécifiques à Oracle nécessitant une conversion.

Prenons l'exemple suivant:

SELECT (TO_DATE('2023-05-12','YYYY-MM-DD') - LEVEL + 1) AS gap_date
FROM dual
CONNECT BY LEVEL <= (TO_DATE('2023-05-12','YYYY-MM-DD') - TO_DATE('2023-05-02','YYYY-MM-DD') + 1);

Dans Oracle:

  • LEVEL est une pseudo-colonne utilisée dans les requêtes hiérarchiques (CONNECT BY). Elle commence à 1 et s'incrémente de 1.
  • CONNECT BY LEVEL <= (...) détermine le nombre de lignes à générer.
  • La différence entre
0
0 49
Article Sylvain Guilbaud · Juin 13, 2025 9m read

J'ai dû récemment rafraîchir mes connaissances sur le module EMPI de HealthShare et, comme je travaillais depuis quelque temps sur les fonctionnalités de stockage et de recherche vectorielle d'IRIS, j'ai tout naturellement fait le rapprochement.

Pour ceux d'entre vous qui ne connaissent pas bien les fonctionnalités EMPI, voici une brève introduction:

Index patient principal "Enterprise Master Patient Index"

En général, tous les EMPI fonctionnent de manière très similaire : ils ingèrent les informations, les normalisent et les comparent avec les données déjà présentes dans leur système.

0
0 36
Article Sylvain Guilbaud · Mai 30, 2025 3m read

Kong fournit en open source un outil de gestion de ses configurations (écrit en Go), appelé decK (pour declarative Kong)

  • Vérifiez que decK reconnaît votre installation Kong Gateway via deck gateway ping
deck gateway ping   
Successfully connected to Kong!
Kong version:  3.4.3.11
  • Exporter la configuration de Kong Gateway dans un fichier "kong.yaml" via deck gateway dump
deck gateway dump -o kong.yaml
  • Après avoir modifié les adresses IP dans le fichier kong.yaml, afficher les différences via deck gateway diff
deck gateway diff kong.yaml

updating service test-iris  {
0
0 49
Article Sylvain Guilbaud · Mai 27, 2025 7m read

Je sais que ceux qui découvrent VS Code, Git, Docker, FHIR et d'autres outils peuvent parfois avoir des difficultés à configurer l'environnement. J'ai donc décidé de rédiger un article qui explique étape par étape l'ensemble du processus de configuration afin de faciliter les premiers pas.

Je vous serais très reconnaissant de bien vouloir laisser un commentaire à la fin de cet article pour me faire savoir si les instructions étaient claires, s'il manquait quelque chose ou si vous avez d'autres suggestions qui pourraient être utiles.

La configuration comprend:

✅ VS Code – Éditeur de code
✅ Git – Système de contrôle de version
✅ Docker – Lancement d'une instance de la communauté IRIS for Health
✅ Extension VS Code REST Client – Pour l'exécution de requêtes API FHIR
✅ Python – Pour l'écriture de scripts basés sur FHIR
✅ Jupyter Notebooks – Pour les tâches liées à l'IA et au FHIR

Avant de commencer: Vérifiez que vous disposiez des privilèges d'administrateur sur votre système.

Outre la lecture du guide, vous pouvez également suivre les étapes décrites dans les vidéos:

Pour Windows

<iframe allowfullscreen="" frameborder="0" height="360" src="https://www.youtube.com/embed/IyvuHbxCwCY" width="640"></iframe>

0
0 43
Article Sylvain Guilbaud · Mai 19, 2025 3m read

Bonjour à la communauté,

Vous cherchez un moyen d'intégrer InterSystems IRIS® for Health à votre équipe ? Exploitez tout le potentiel de cette plateforme grâce à ces ressources de formation InterSystems. Grâce à une combinaison de formations en ligne et en présentiel, vous pouvez accompagner différents rôles au sein de votre organisation et préparer votre équipe à la réussite.

Ressources d'intégration pour chaque rôle

Développeurs

0
1 64
Article Sylvain Guilbaud · Mai 19, 2025 3m read

Bonjour à la communauté,

Exploitez tout le potentiel d'InterSystems IRIS et accompagnez votre équipe dans son intégration grâce à la gamme complète de ressources de formation InterSystems, disponibles en ligne et en présentiel, adaptées à chaque rôle de votre organisation. Les développeurs, administrateurs système, analystes de données et intégrateurs peuvent rapidement se familiariser avec la solution.

Ressources d'intégration pour chaque rôle

Développeurs

0
0 64
Article Sylvain Guilbaud · Mai 9, 2025 9m read

L'indication de requête parallèle augmente les performances de certaines requêtes sur les systèmes multiprocesseurs par le biais du traitement parallèle. L'optimiseur SQL détermine les cas où cela est bénéfique. Sur les systèmes à un seul processeur, cette indication n'a aucun effet.

Le traitement parallèle peut être géré par:

  1.  Définition de l'option auto parallel pour l'ensemble du système.
    
  2. L'utilisation du mot-clé %PARALLEL dans la clause FROM de certaines requêtes.
    

Le mot clé %PARALLEL est ignoré lorsqu'il est appliqué aux requêtes suivantes:

  1. Les requêtes INSERT, UPDATE et DELETE
0
0 62
Article Sylvain Guilbaud · Avr 25, 2025 22m read

TLS, qu'est-ce que c'est ?

La TLS (Transport Layer Security ou "Sécurité de la couche de transport"), qui succède à SSL (Secure Sockets Layer ou "Couche de sockets sécurisée"), fournit de la sécurité (c'est-à-dire le chiffrement et l'authentification) sur une connexion TCP/IP.Si vous avez déjà remarqué le "s" sur les URLs "https" vous avez reconnu une connexion HTTP "sécurisée" par SSL/TLS.

0
0 76
Article Sylvain Guilbaud · Avr 22, 2025 3m read

Rubrique FAQ InterSystems

Les variables globales temporaires stockées dans les bases de données IRISTEMP/CACHETEMP sont utilisées lorsqu'un processus n'a pas besoin de stocker des données indéfiniment, mais requiert les performances élevées des variables globales. Les bases de données IRISTEMP/CACHETEMP ne sont pas journalisées ; leur utilisation ne crée donc pas de fichiers journaux.

Le système utilise les bases de données IRISTEMP/CACHETEMP pour le stockage temporaire et les utilisateurs peuvent y accéder à cette fin.

Pour plus d'informations sur les variables globales temporaires et la base

0
0 39
Article Sylvain Guilbaud · Mars 28, 2025 54m read

Depuis l'introduction d'Embedded Python, il y a toujours eu un doute sur ses performances par rapport à ObjectScript et J'en ai discuté à plusieurs reprises avec @Guillaume Rongier , eh bien, profitant du fait que je faisais une petite application pour capturer les données des concours publics en Espagne et pouvoir effectuer des recherches en utilisant les capacités de VectorSearch, j'ai vu l'opportunité de réaliser un petit test.

Données pour le test

Les informations relatives aux concours publics sont fournies mensuellement dans des fichiers XML à partir de cette URL  et le format typique des

0
0 42
Question Sylvain Guilbaud · Mars 7, 2025

En utilisant IRIS 2024.1.2 lorsque je monte la base de données de routine en lecture seule, j'obtiens une erreur lors de l'exécution de requêtes SQL dynamique.

Quelles globales doivent être mappées dans une base de données en lecture-écriture afin de permettre l'écriture des plans d'exécutions ?

0
0 56