Effacer le filtre
Annonce
Irène Mykhailova · Août 11, 2022
InterSystems est actuellement à la recherche de développeurs full stack pour rejoindre nos équipes de développement dans le domaine de la santé. De solides compétences en conception et développement de logiciels sont requises. Les développeurs travaillent avec leurs équipes Scrum pour définir, concevoir, planifier et mettre en œuvre des fonctionnalités destinées à prendre en charge les systèmes de santé à l'échelle mondiale. Vous développerez davantage des compétences telles que la conception de schémas de base de données, la surveillance des performances, le travail dans des frameworks côté client et un codage orienté objet propre.
En plus des langages et des cadres de codage standard de l'industrie, notre pile s'appuie sur une suite complète de technologies InterSystems. La plate-forme de données IRIS et le langage couplé à une base de données nous donnent accès à l'ensemble de la pile technologique, jusqu'aux compilateurs et aux structures de base de données.
Vous êtes encouragé à postuler si vous êtes :
Un résolveur de problèmes : aimez travailler sur des problèmes humains percutants en relevant des défis techniques complexes
Un membre de l'équipe enthousiaste : créer activement au sein d'une équipe interfonctionnelle aux côtés d'experts du domaine
Curieux : Apportez un appétit pour la connaissance et perfectionnez votre art
Responsabilités :
Écrire du code prêt pour la production à déployer chez nos clients dans le monde entier
Faire preuve de diligence dans la rédaction des tests unitaires et de la documentation
Adhérer et contribuer aux normes de conception d'application, aux normes de codage et au cadre d'application
Fournir des commentaires constructifs aux autres développeurs via des revues de code
Travailler en étroite collaboration avec les membres techniques et non techniques de votre équipe Scrum pour livrer dans un cadre Agile
Collaborer avec la gestion des produits, les concepteurs, les représentants régionaux et les autres équipes Scrum pour définir la feuille de route, les initiatives de portée et établir les priorités
Qualifications :
Expérience en tant que développeur de logiciels au sein d'une équipe interfonctionnelle
Familiarité avec la programmation orientée objet, les bases de données et le développement frontal
Une expérience avec Scrum ou d'autres méthodologies Agiles est un plus
Une connaissance de Javascript, Angular, React, SQL, Python ou Java n'est pas nécessaire mais un plus
Lien vers l'offre d'emploi.
Article
Guillaume Rongier · Juil 8, 2022
InterSystems [Native SDK pour Python](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=BPYNAT_about) est une interface légère pour les API d'InterSystems IRIS qui n'étaient auparavant disponibles que via ObjectScript.
Je suis particulièrement intéressé par la possibilité d'appeler des méthodes ObjectScript, plus précisément des méthodes de classe. Cela fonctionne, et cela fonctionne très bien, mais par défaut, les appels ne supportent que les arguments scalaires : chaînes de caractères, booléens, nombres intégraux et flottants.
Mais si vous voulez :
- Transmettre ou retourner des structures, telles que des dicts ou des listes
- Transmettre ou retourner des flux
Vous aurez besoin d'écrire un code glue ou de prendre ce [projet](https://github.com/eduard93/edpy) (s'installe avec `pip install edpy`). Le paquet `edpy` vous donne une signature simple :
```python
call(iris, class_name, method_name, args)
```
qui vous permet d'appeler n'importe quelle méthode ObjectScript et d'obtenir des résultats en retour. Importez-le comme ceci :
```python
from edpy import iris
```
`call` accepte 4 arguments requis :
- `iris` - la référence à un [objet IRIS](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=BPYNAT_refapi#BPYNAT_refapi_class-iris)
- `class_name` - Classe IRIS à appeler
- `method_name` - Méthode IRIS à appeler
- `args` - liste de 0 ou plusieurs arguments
## Arguments
Chaque argument peut être l'un des suivants :
- une chaîne de caractères (n'importe quelle longueur, si elle est supérieure à `$$$MaxStringLength` ou à 3641144 symboles, elle sera automatiquement convertie en un flux de données
- booléen
- nombre entier
- flottant
- dict (se transforme en un objet dynamique)
- liste ou tuplet (converti en tableau dynamique)
Les arguments de type dict, liste et tuplet peuvent contenir récursivement d'autres dicts, listes et tuplets (tant que la mémoire le permet).
## Valeur de retour
En retour, nous attendons soit une table/ un objet dynamique, soit une chaîne/un flux JSON. Dans ce cas, edpy le convertit d'abord en chaîne Python et, si possible, l'interprète comme un dict ou une liste Python. Sinon, le résultat sera retourné à l'appelant tel quel.
C'est à peu près tout, mais laissez-moi vous donner quelques exemples de méthodes ObjectScript et comment les appeler en utilisant cette fonction Python.
## Exemple 1: Pong
```objectscript
ClassMethod Test(arg1, arg2, arg3) As %DynamicArray
{
renvoie [(arg1), (arg2), (arg3)]
}
```
Appelez avec:
```
>>> iris.call(iris_native, "User.Py", "Test", [1, 1.2, "ABC"])
[1, 1.2, 'ABC']
```
Pas de surprise ici. Les arguments sont regroupés dans une liste et renvoyés à l'appelant.
## Exemple 2: Propriétés
```objectscript
ClassMethod Test2(arg As %DynamicObject) As %String
{
renvoie arg.Prop
}
```
Appelez comme ça :
```
>>> iris.call(iris_native, "User.Py", "Test2", [{"Prop":123}])
123
```
Maintenant, pour une invocation plus intégrée :
```
>>> iris.call(iris_native, "User.Py", "Test2", [{"Prop":{"Prop2":123}}])
{'Prop2': 123}
```
Si une propriété est trop longue, ce n'est pas grave non plus - des flux seront utilisés pour l'envoyer à IRIS et/ou la renvoyer :
```
ret = iris.call(iris_native, "User.Py", "Test2", [{"Prop":"A" * 10000000}])
>>> len(ret)
10000000
```
Si vous avez besoin de flux garantis du côté d'InterSystems IRIS, vous pouvez utiliser [%Get](https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic.cls?&LIBRARY=%25SYS&CLASSNAME=%25Library.DynamicObject#%25Get):
```objectscript
set stream = arg.%Get("Prop",,"stream")
```
Si le flux est codé en base64, vous pouvez le décoder automatiquement avec :
```objectscript
set stream = arg.%Get("Prop",,"stream
Article
Guillaume Rongier · Fév 6, 2023
Visual Studio Code (VSCode) est l'éditeur de code le plus populaire du marché. Il a été créé par Microsoft et distribué en tant qu'IDE gratuit. VSCode supporte des dizaines de langages de programmation, y compris ObjectScript, Until 2018, Atelier (basé sur Eclipse). Il était considéré comme l'une des principales options pour développer les produits InterSystems. Cependant, en décembre 2018, lorsque la communauté des développeurs d'InterSystems a lancé le support de VSCode, une partie pertinente des professionnels d'InterSystems a commencé à utiliser cet éditeur et ne cesse de le faire depuis, en particulier les développeurs aui travaillent avec de nouvelles technologies (Docker, Kubernetes, NodeJS, Angular, React, DevOps, Gitlab, etc.). Certaines des meilleures fonctionnalités de VSCode sont les capacités de débogage. C'est pourquoi cet article démontrera en détail comment déboguer le code ObjectScript, y compris le code de classe et le code %CSP.REST.
## Qu'est-ce que le débogage ?
Le débogage est un processus qui consiste à détecter et à résoudre les "bugs", c'est-à-dire les erreurs dans votre code ObjectScript. C'est pourquoi pour les comprendre dans la logique d'exécution de votre code source, vous devez voir le programme s'exécuter ligne par ligne. C'est la meilleure façon d'identifier les conditions ou la logique de programmation et de trouver les erreurs logiques. Les autres erreurs sont des erreurs d'exécution. Pour pouvoir déboguer ce type de problème, il est essentiel de vérifier d'abord les valeurs des variables assignées.
## Installation des extensions InterSystems IRIS pour VSCode
Tout d'abord, il faut installer les extensions IRIS d'InterSystems dans votre IDE VSCode. Pour ce faire, allez dans Extensions, cherchez InterSystems et installez les extensions InterSystems suivantes :
.png)
La dernière extension (InterSystems ObjectScript Extension Pack) doit être installée en premier, car il s'agit d'un paquet d'extensions nécessaires pour connecter, éditer, développer et déboguer ObjectScript. Les autres extensions listées sont optionnelles.
## Application modèle
Nous allons utiliser une application de mon référentiel GitHub (https://github.com/yurimarx/debug-objectscript.git) pour les exemples de débogage dans cet article. Donc, suivez les étapes ci-dessous pour obtenir, exécuter et déboguer l'application dans VSCode :
1. Créez un répertoire local et récupérez le code source du projet dans ce répertoire :
$ git clone https://github.com/yurimarx/debug-objectscript.git
2. Ouvrez le terminal dans ce répertoire (répertoire iris-rest-api-template) et exécutez :
$ docker-compose up -d --build
3. Ouvrez VSCode dans le répertoire iris-rest-api-template en utilisant $code . ou clic-droit sur le dossier et sélectionnez Open with Code.
4. Dans le pied de page, cliquez sur ObjectScript pour ouvrir les options configurées dans .vscode/launch.json :
.png)
5. Sélectionnez Toggle Connection pour activer la connexion actuelle :
.png)
6. Après avoir activé cette connexion, vous obtiendrez la connexion indiquée ci-dessous :
.png)
7. Si vous n'êtes pas connecté avec IRIS dans VSCode, vous ne pourrez pas déboguer le code ObjectScript. Vérifiez donc votre connexion en cliquant sur l'extension ObjectScript VSCode :
.png)
8. Ouvrez Person.cls, allez à la ligne numéro 25 et pointez la souris sur le chiffre 25 à votre gauche.
.png)
9. Maintenant, pointez la souris sur la ClassMethod supérieure et cliquez sur "Debug this method" (Débugger cette méthode) :
.png)
10. VSCode ouvrira une boîte de dialogue pour vous permettre de définir les valeurs des paramètres, alors définissez les valeurs comme indiqué ci-dessous, et cliquez sur Entrée :
.png)
11. VSCode va interrompre l'exécution du code à la ligne 25 :
.png)
12. Maintenant, en haut à gauche, vous pouvez voir les valeurs actuelles des variables.
.png)
13. En bas à gauche, vous pouvez maintenant voir la liste des points d'arrêt et la pile d'appels pour le point d'arrêt actuel.
.png)
14. En haut à droite, vous pouvez voir le code source avec le point d'arrêt et une série de boutons pour contrôler l'exécution du débogage.
.png)
15. Si vous avez besoin d'utiliser la console de débogage pour y taper quelque chose, tapez : Name\_",""\_Title pour voir la concaténation des variables en utilisant la Debug Console :
.png)
16. Sélectionnez la variable de résultat, cliquez sur le bouton droit de la souris et sélectionnez "Add to Watch" (Ajouter à la liste) :
.png)
17. Vous pouvez maintenant surveiller ou modifier la valeur actuelle de la variable de résultat dans la section WATCH :
.png)
18. Enfin, la barre de bas de page est orange, et elle indique le débogage :
.png)
## Utilisation de la console de débogage
La console de débogage vous permet d'écrire des expressions pendant le débogage, de sorte que vous pouvez vérifier les valeurs de différentes variables (de type simple ou de type objet) ou valider la valeur actuelle et d'autres conditions. Elle peut exécuter tout ce qui peut retourner des valeurs, donc $zv fonctionnera également. Suivez ces étapes pour voir quelques options :
1. Écrire Nom\_", "\_Title\_" à partir de "\_Company" sur l'invite du terminal de débogage et voyez les valeurs concaténées de Nom, Titre et Société en sortie :
 ou valider la valeur actuelle et d'autres conditions. Elle peut exécuter tout ce qui peut retourner des valeurs, donc $zv fonctionnera également. Suivez ces étapes pour voir quelques options :).png)
## Utilisation de la barre d'outils de débogage
La barre d'outils de débogage vous permet de contrôler l'exécution du débogage. Découvrez les fonctions des boutons ici :
.png)
1. Bouton Continuer (F9) : poursuit l'exécution jusqu'au prochain point d'arrêt. S'il n'y a pas de point d'arrêt à atteindre, le programme continue jusqu'à la fin.
2. Step Over (F8) : passe à la ligne suivante sans entrer dans le code source d'une méthode interne (ne pas entrer dans la méthode Populate).
3. Step Into (F7) : aller à la ligne suivante à l'intérieur du code source de la méthode interne (aller à la première ligne de la méthode Populate).
4. Step Out (Shift + F8) : aller à la ligne courante du code source de l'appelant d'une méthode.
5. Redémarrer (Crtl + Shift + F5) : relancer le débogage.
6. Stop : arrête la session de débogage.
## Déboguer les méthodes de la classe %CSP.REST
Pour déboguer les méthodes des classes REST, il est nécessaire d'appliquer une petite astuce révélée par Fábio Gonçalves (voir l'article ici https://community.intersystems.com/post/atelier-debugging-attach-process). Il est nécessaire d'ajouter un HANG (ma recommandation est entre 20 et 30 secondes). Il suffit de suivre les étapes suivantes :
1. Ouvrez le fichier src\dc\Sample\PersonREST.cls et allez à la méthode GetInfo(), ajoutez HANG 30 (ceci est nécessaire pour obtenir le temps, 30 secondes, pour commencer le débogage de cette méthode) :
.png)
2. Fixez des points d'arrêt sur les lignes de version HANG et SET (cercles rouges) :
.png)
3. Ouvrez un client HTTP pour appeler une méthode REST (je vais appeler GetInfo de la classe PersonREST) :
.png)
4. Définissez Basic Auth sur Authorization (nom d'utilisateur _SYSTEM et mot de passe SYS) :
.png)
5. Envoyer un GET http://localhost:52773/crud/.
6. Cliquez sur ObjectScript Attach dans la barre de bas de page :
.png)
7. Sélectionnez Attachement ObjectScript :
.png)
8. Sélectionnez le processus PersonREST :
.png)
9. Attendez quelque temps (environ 30 secondes) pour que VSCode interrompe l'exécution en cours sur le point d'arrêt :
.png)
Remarque 1 : supprimez le HANG 30 lorsque vous avez terminé votre débogage, car le HANG met l'exécution en pause.
Remarque 2 : si le processus PersonREST n'apparaît pas, redémarrez votre VSCode, et réessayez.
10. Maintenant vous pouvez procéder au débogage.
## Modification du point d'arrêt
Vous pouvez faire un clic droit sur le point d'arrêt pour supprimer ou configurer les points d'arrêt conditionnels (rupture sur le point d'arrêt avec la condition "true"). La commande de rupture intégrée directement dans le code sera également prise en compte par le débogueur. Vous pouvez également essayer cette fonction.
1. Faites un clic droit sur le point d'arrêt et sélectionnez Edit Breakpoint :
.png)
2. Saisissez l'expression mentionnée ci-dessous et appuyez sur Entrée :
.png)
Remarque : essayez la version = 1.0.5 pour voir le point d'arrêt faux et 1.0.6 pour voir le point d'arrêt vrai.
## Configuration de l'option de débogage sur le fichier .vscode/launch.json
Le fichier Launch.json est utilisé pour configurer les options de débogage pour votre projet. Pour voir les alternatives, allez dans le fichier suivant :
.png)
Pour ce modèle, nous avons deux options à choisir pour le débogage :
1. Nous pouvons lancer le débogage sur la classe configurée sur l'attribut programme directement avec un programme (dans cet exemple le débogueur va démarrer dans la classe PackageSample.ObjectScript, méthode Test().
2. Nous pouvons attacher PickProcess au processus du programme sélectionné que nous voulons déboguer. Dans cet exemple, le débogueur ouvrira en haut une liste de processus pour sélectionner le processus (chaque programme a son processus) qui sera débogué. La deuxième option est Le fichier Launch.json, qui est utilisé pour configurer les options de débogage pour votre projet. Pour voir les alternatives, allez dans le fichier suivant : more common.
D'une manière générale, ces attributs sont obligatoires pour toute configuration de débogage (source : https://intersystems-community.github.io/vscode-objectscript/rundebug/):
* "type" - Identifie le type de débogueur à utiliser. Dans ce cas, objectcript est fourni par l'extension InterSystems ObjectScript.
* "request" - Identifie le type d'action pour cette configuration de lancement. Les valeurs possibles sont "launch" et "attach".
* "name" - Un nom arbitraire pour identifier la configuration. Ce nom apparaît dans la liste déroulante Start Debugging.
En outre, pour une configuration de lancement ObjectScript, vous devez fournir l'attribut program, qui spécifie la routine ou la ClassMethod à exécuter lors du lancement du débogueur, comme le montre l'exemple suivant :
"launch": {
"version": "0.2.0",
"configurations": [
{
"type": "objectscript",
"request": "launch",
"name": "ObjectScript Debug HelloWorld",
"program": "##class(Test.MyClass).HelloWorld()",
},
{
"type": "objectscript",
"request": "launch",
"name": "ObjectScript Debug GoodbyeWorld",
"program": "##class(Test.MyOtherClass).GoodbyeWorld()",
},
]
}
Pour une configuration d'attachement ObjectScript, vous pouvez fournir les attributs suivants :
* "processId" - Spécifie l'ID du processus à attacher à une chaîne ou un nombre. La valeur par défaut est "${command:PickProcess}" pour fournir une liste déroulante d'ID de processus à attacher au moment de l'exécution.
* "system" - Spécifie si les pièces jointes doivent être autorisées ou non dans le processus système. La valeur par défaut est "false".
L'exemple suivant montre plusieurs configurations d'attachement ObjectScript valides :
"launch": {
"version": "0.2.0",
"configurations": [
{
"type": "objectscript",
"request": "attach",
"name": "Attach 1",
"processId": 5678
},
{
"type": "objectscript",
"request": "attach",
"name": "Attach 2",
"system": true
},
]
}
Maintenant, vous pouvez sélectionner une configuration de débogage dans la liste que VS Code fournit dans le champ Run and Debug en haut de la barre latérale de débogage (source : https://intersystems-community.github.io/vscode-objectscript/rundebug/):
.png)
Si vous cliquez sur la flèche verte, la configuration de débogage actuellement sélectionnée sera exécutée.
Lorsque vous lancez une session de débogage ObjectScript, assurez-vous que le fichier contenant le programme que vous déboguez est ouvert dans votre éditeur et se trouve dans l'onglet actif. VS Code lancera une session de débogage avec le serveur du fichier dans l'éditeur actif (l'onglet sur lequel l'utilisateur est concentré). Ceci s'applique également aux sessions de débogage ObjectScript attachées.
Cette extension utilise WebSockets pour communiquer avec le serveur InterSystems pendant le débogage. Si vous rencontrez des problèmes lorsque vous essayez de lancer une session de débogage, vérifiez si le serveur Web d'InterSystems autorise les connexions WebSocket.
Les commandes de débogage et les éléments du menu "Run" fonctionnent à peu près de la même manière que pour les autres langues prises en charge par VS Code. Pour plus d'informations sur le débogage de VS Code, consultez les ressources documentaires mentionnées au début de cette section.
## Définition de la synchronisation entre un code source local et un code source serveur (dans IRIS Server)
Il est également important de disposer d'une structure de dossiers pour le code source, qui peut être adoptée par les paramètres "objectcript.export". Cette information sera utilisée pour convertir les noms de classes du serveur en fichiers locaux. Si elle est incorrecte, il est possible que les classes soient ouvertes en mode lecture seule même si elles n'existent que localement.
1. Ouvrez le fichier .vscode\settings.json et configurez objectcript.export :
.png)
2. Passez la souris sur le dossier, et ajoutez la catégorie et d'autres paramètres pour voir la documentation correspondante.
## Autres techniques pour compléter le processus de débogage
En plus du débogage de votre programme, n'oubliez pas de bien documenter votre code source, de consigner les opérations effectuées par le code important et d'effectuer des tests unitaires et des outils d'analyse statique du code source. De cette façon, la qualité de vos programmes sera beaucoup plus élevée, ce qui réduira le temps et le coût de la maintenance et des ajustements.
## Plus d'informations
Vous pouvez en savoir plus sur le débogage d'ObjectScript sur VSCode si vous révisez les ressources suivantes :
1.
2.
3.
4.
5.
Article
Iryna Mykhailova · Fév 14, 2023
Avec InterSystems IRIS 2022.2, nous avons introduit le stockage en colonne comme une nouvelle option pour la persistance de vos tables IRIS SQL qui peut booster vos requêtes analytiques d'un ordre de grandeur. La capacité est marquée comme expérimentale dans les versions 2022.2 et 2022.3, mais passera à une capacité de production entièrement prise en charge dans la prochaine version 2023.1.
La documentation du produit et cette vidéo d'introduction, décrivent déjà les différences entre le stockage en ligne, toujours la valeur par défaut sur IRIS et utilisé dans l'ensemble de notre clientèle, et le stockage en table en colonnes et fournissent des conseils de haut niveau sur le choix de la disposition de stockage appropriée pour votre cas d'utilisation. Dans cet article, nous développerons ce sujet et partagerons quelques recommandations basées sur les principes de modélisation des pratiques de l'industrie, les tests internes et les commentaires des participants au Early Access Program.
En règle générale, nos conseils sur le choix d'une disposition de table appropriée pour votre schéma IRIS SQL sont les suivants :
Si vous déployez une application qui tire parti d'IRIS SQL ou d'objets, telle qu'une application de traitement EHR, ERP ou transactionnelle, il n'est pas nécessaire de modifier sa disposition de stockage de lignes actuelle en une disposition en colonnes. La plupart des requêtes SQL émises pour les applications d'utilisateur final ou les transactions par programme ne récupèrent ou ne mettent à jour qu'un nombre limité de lignes, et les lignes de résultat correspondent généralement aux lignes de table, avec une utilisation très limitée des fonctions d'agrégation. Dans de tels cas, les avantages offerts par le stockage en colonnes et le traitement des requêtes vectorisées ne s'appliquent pas.
Si une telle application intègre également des analyses opérationnelles, envisagez d'ajouter des indices en colonnes si les performances actuelles des requêtes analytiques correspondantes ne sont pas satisfaisantes. Cela inclut, par exemple, des tableaux de bord montrant l'inventaire actuel ou des rapports financiers de base sur des données en direct. Recherchez les champs numériques utilisés dans les agrégations (par exemple, les quantités, les devises) ou les champs à cardinalité élevée utilisés dans les conditions de plage (par exemple, les horodatages). Un bon indicateur de ces opportunités est l'utilisation actuelle d'index bitmap pour accélérer le filtrage d'un grand nombre de lignes, généralement sur des champs à faible cardinalité (par exemple, des champs catégoriels ou ordinaux). Il n'est pas nécessaire de remplacer ces index bitmap ; les index colonnaires supplémentaires fonctionnent bien en conjonction avec eux et sont destinés à éviter les lectures excessives à partir de la carte principale ou des cartes d'index régulières (un seul gref par ligne).
Si vos tables IRIS SQL contiennent moins d'un million de lignes, il n'est pas nécessaire d'envisager le stockage en colonnes. Nous préférons ne pas nous limiter à des nombres spécifiques, mais les avantages du traitement des requêtes vectorisées ne feront probablement pas de différence dans ces plages basses.
Si vous déployez un schéma IRIS SQL pour Data Warehouse, Business Intelligence ou des cas d'utilisation analytiques similaires, envisagez de le remplacer par défaut par le stockage en colonnes. Les schémas en étoile, les schémas en flocon de neige ou d'autres structures de table dénormalisées ainsi que l'utilisation généralisée d'index bitmap et l'ingestion de lots sont de bons indicateurs pour ces cas d'utilisation. Les requêtes analytiques qui bénéficieront le plus du stockage en colonnes sont celles qui analysent un grand nombre de lignes et agrègent les valeurs sur celles-ci. Lors de la définition d'une "table en colonnes", IRIS recourra de manière transparente à une disposition des lignes pour les colonnes de cette table qui ne conviennent pas au stockage en colonnes, telles que les flux, les chaînes longues ou les champs en série. IRIS SQL prend entièrement en charge ces dispositions de table mixtes et utilisera le traitement des requêtes vectorisées pour les parties éligibles du plan de requête. La valeur ajoutée des index bitmap sur les tables en colonnes est limitée, ils peuvent donc être omis.
Le kilométrage variera en fonction des paramètres environnementaux et liés aux données. Par conséquent, nous recommandons vivement aux clients de tester les différentes dispositions dans une configuration représentative. Les index en colonnes sont faciles à ajouter à une table régulière organisée en lignes et fourniront rapidement une perspective réaliste sur les avantages des performances des requêtes. Ceci, associé à la flexibilité des dispositions de table mixtes, est un différenciateur clé d'InterSystems IRIS qui aide les clients à obtenir une amélioration des performances d'un ordre de grandeur.
Nous avons l'intention de rendre ces recommandations plus concrètes au fur et à mesure que nous acquérons une expérience plus réelle sur la version de production complète. De toute évidence, nous pouvons fournir des conseils plus concrets basés sur le schéma et la charge de travail réels des clients via le programme d'accès anticipé et les engagements POC, et attendons avec impatience les commentaires des clients et des membres de la communauté. Columnar Storage fait partie de la licence InterSystems IRIS Advanced Server et est également activé dans l'édition communautaire d'InterSystems IRIS et IRIS for Health. Pour un environnement de démonstration entièrement scripté, veuillez vous référer à ce référentiel GitHub.
Article
Sylvain Guilbaud · Juil 5, 2023
Ci-dessous figure une liste de certains des utilitaires disponibles dans InterSystems IRIS.
Cliquez sur le nom de chaque utilitaire dans le tableau ci-dessous pour obtenir des informations détaillées sur l'utilitaire.
Nom de l'utilitaire
Aperçu
^BACKUP
Exécution d'opérations de sauvegarde et de restauration
^DATABASE
Gestion des bases de données, y compris la création, la modification et la suppression de bases de données
^DATACHECK
Vérification de la concordance du contenu des deux fichiers IRIS.DAT
^DBSIZE
Détermination de la taille des bases de données
^GBLOCKCOPY
Capture des données globales d'une base de données vers une autre base de données ou un autre espace de noms
^GETPPGINFO
Vérification des globales temporaires utilisées dans la base de données IRISTEMP
^%GCMP
Une simple comparaison du contenu des deux globales
^%GSIZE
Vérification de la taille des données de chaque globale dans l'espace de noms
^INTEGRIT
Vérification de l'intégrité structurelle d'un ensemble de bases de données ou d'un sous-ensemble de globales dans une base de données
^JOBEXAM
Affichage d'une liste de processus. Des informations détaillées sur chaque processus peuvent également être affichées et arrêtées.
^JOURNAL
Configuration de la journalisation
^LOCKTAB
Affichage et suppression des informations de verrouillage en cours d'utilisation
^mgstat
Enregistrement continu des informations du compteur d'accès global dans un fichier en unités de cycles d'échantillonnage
^MIRROR
Exécution des opérations de configuration, de gestion et d'état de la mise en miroir
^MONMGR
Surveillance des journaux de messages (messages.log) afin de générer des notifications ou d'envoyer des courriels
^SECURITY
Exécution de la configuration et de la maintenance des données essentielles au bon fonctionnement de la sécurité d'IRIS.
^%SS
Affichage d'une liste de processus (référence uniquement).
^SYSLOG
Diffusion des informations du journal des erreurs internes d'IRIS enregistrées dans une partie de la mémoire partagée.
^SystemCheck
IRIS recueille des informations sur l'état des processus en cours d'utilisation, la mémoire partagée, etc.
^SystemPerformance
Collecte de données détaillées sur les performances d'IRIS et de la plate-forme sur laquelle l'instance fonctionne.
^TASKMGR
Planification et gestion des tâches.
※Tous les utilitaires doivent être exécutés dans l'espace de noms %SYS, à l'exception des utilitaires avec %.
※Portail de gestion : indique les fonctions cibles qui peuvent être exécutées à partir du portail de gestion.
※★En cliquant sur le nom de l'utilitaire, la description se trouve dans la documentation du produit (certains ne sont pas répertoriés).
### ★^BACKUP
Processus de sauvegarde et de restauration.
L'utilitaire ^BACKUP comporte les éléments de menu suivants.
%SYS>do ^BACKUP
) Backup // Exécution des sauvegardes de la base de données
2) Restore ALL // Restauration de toutes les bases de données
3) Restore Selected or Renamed Directories // Restauration des répertoires sélectionnés ou renommés
4) Edit/Display List of Directories for Backups // Modification/affichage de la liste des répertoires
5) Abort Backup // Annulation de la sauvegarde
6) Display Backup volume information // Affichage des informations sur le volume de sauvegarde
7) Monitor progress of backup or restore // Contrôle de la progression de la sauvegarde ou de la restauration
Portail de gestion :
Fonctionnement du système > Sauvegarde
 【Pour référence】
[Les sauvegardes de bases de données(InterSystems Symposia 2014)](https://www.intersystems.com/assets/sites/6/a2.pdf)
[La différence entre la sauvegarde _accumulative_ et la sauvegarde _différentielle_.](https://jp.community.intersystems.com/node/490151)
[Comment effectuer des sauvegardes sans arrêter une instance en cours d'exécution ?](https://jp.community.intersystems.com/node/486281)
[Comment sauvegarder une base de données](https://jp.community.intersystems.com/node/484471)
### ★^DATABASE
La gestion des bases de données, y compris la création, la modification et la suppression des bases de données, s'effectue à l'aide de cette fonction.
L'utilitaire ^DATABASE comporte les éléments de menu suivants
%SYS>do ^DATABASE
1) Create a database // Création d'une base de données
2) Edit a database // Modification des attributs des bases de données existantes.
3) List databases // Affichage de la liste de bases de données
4) Delete a database // Suppression de la base de données existante
5) Mount a database // Montage de la base de données
6) Dismount a database // Démontage de la base de données.
7) Compact globals in a database // Compression des données globales de la base de données. Cette fonction est limitée aux versions disponibles (※).
8) Show free space for a database // Affichage de l'espace libre disponible dans la base de données
9) Show details for a database // Affichage d'informations détaillées sur la base de données spécifiée
10) Recreate a database // Création d'une nouvelle base de données vide basée sur les paramètres d'une base de données existante
11) Manage database encryption // Gestion du cryptage de la base de données.
12) Return unused space for a database // Libération de l'espace inutilisé dans la base de données
13) Compact free space in a database // Compression de l'espace libre dans la base de données. Cette fonction est limitée aux versions disponibles (※).
14) Defragment a database // Défragmentation de la base de données. Cette fonction est limitée aux versions disponibles(※).
15) Show background database tasks // Affichage des tâches de base de donnéesde référence
※[Limitation](https://www.intersystems.com/jp/product-alerts-advisories/alert-possible-data-integrity-issues-after-compaction-or-defragmentation/):Veuillez noter que les fonctions de compression et de défragmentation peuvent ne pas être disponibles en fonction de votre version.
Pour plus d'informations, [voir](http://www.intersystems.com/jp/product-alerts-advisories/alert-possible-data-integrity-issues-after-compaction-or-defragmentation/).
Portail de gestion :
Administration du système > Configuration > Configuration du système > Base de données
 【Pour référence】
[Comment compresser le fichier de la base de données](https://jp.community.intersystems.com/node/502001)
[Comment créer des espaces de noms et des bases de données à l'aide du terminal ou de l'API ?](https://jp.community.intersystems.com/node/476221)
[Comment monter/démonter la base de données par programmation ?](https://faq.intersystems.co.jp/csp/faq/result.csp?DocNo=54)
### ★^DATACHECK
Vérification de la concordance du contenu des deux fichiers IRIS.DAT.
 【Pour référence】
[Comment comparer plusieurs globales ou routines dans deux bases de données ?](https://jp.community.intersystems.com/node/488411)
### ★^DBSIZE
Mesure de la taille de la base de données.
Par exemple, elle est utilisé pour calculer l'espace disque nécessaire à une sauvegarde juste avant de l'effectuer.
 【Pour référence】
[Comment estimer la taille de la sauvegarde pour les sauvegardes en ligne](https://jp.community.intersystems.com/node/484116)
### ★^GBLOCKCOPY
Les données globales d'une base de données sont copiées dans une autre base de données ou un autre espace de noms.
Dans ce cas, la taille supplémentaire (la taille libérée par Kill) n'est pas copiée, ce qui permet de réduire la taille de la base de données.
 【Pour référence】
[[FAQ] Comment réduire la taille du fichier de base de données IRIS.DAT ?](https://faq.intersystems.co.jp/csp/faq/result.csp?DocNo=127)
### ★^GETPPGINFO
Affichage des noms de tous les globales privés du processus en cours et l'espace qui leur est alloué en blocs.
 【Pour référence】
[Comment identifier les globales temporaires qui consomment de l'espace dans la base de données IRISTEMP ?](https://jp.community.intersystems.com/node/513496)
[Qu'est-ce que globale privé du processus](https://docs.intersystems.com/irislatest/csp/docbookj/DocBook.UI.Page.cls?KEY=GCOS_variables#GCOS_variables_procprivglbls)
### ★^%GCMP
Comparaison du contenu pour voir s'il y a des différences entre les deux globales.
 【Pour référence】
[Comment comparer le contenu de deux globales ?](https://jp.community.intersystems.com/node/537296)
### ★^%GSIZE
Vérification de la taille des données de chaque globale dans l'espace de noms.
Portail de gestion :
Administration du système > Configuration > Base de données locale > Globale
 【Pour référence】
[Comment trouver la taille des données pour chaque globale ?](https://jp.community.intersystems.com/node/507726)
[Signification de chaque élément sorti via ^%GSIZE](https://jp.community.intersystems.com/node/491676)
### ★^INTEGRIT
Vérification de l'intégrité structurelle d'un ensemble de bases de données ou d'un sous-ensemble de globales dans une base de données.
Portail de gestion :
Fonctionnement du système > Base de données > Contrôle d'intégrité
### ★^JOBEXAM
Affichage d'une liste de processus. Il est également possible d'afficher les détails de chaque processus et de l'arrêter.
Portail de gestion :
Fonctionnement du système > Processus
### ★^JOURNAL
Configuration de la journalisation.
L'utilitaire ^JOURNAL comporte les éléments de menu suivants
%SYS>do ^JOURNAL
1) Begin Journaling (^JRNSTART) // Démarrage de journalisation
2) Stop Journaling (^JRNSTOP) // Arrêt de journalisation
3) Switch Journal File (^JRNSWTCH) // Commutation des fichiers du journal
4) Restore Globals From Journal (^JRNRESTO) // Restauration des fichiers du journal
5) Display Journal File (^JRNDUMP) // Affichage des fichiers du journal
6) Purge Journal Files (PURGE^JOURNAL) // Suppression du fichier du journal
7) Edit Journal Properties (^JRNOPTS) // Modification des options du journal
8) Activate or Deactivate Journal Encryption (ENCRYPT^JOURNAL()) // Activer ou désactiver le cryptage du journal
9) Display Journal status (Status^JOURNAL) // Affichage de l'état actuel du journal
10) -not available-
11) -not available-
12) Journal catch-up for mirrored databases (MirrorCatchup^JRNRESTO) // Rattrapage du journal pour les bases de données mises en miroir
13) -not available-
Portail de gestion :
Administration du système > Configuration > Configuration du système > Paramètres du journal
Fonctionnement du système > Journaux
### ★^LOCKTAB
Affichage et suppression des informations de verrouillage actuellement utilisées.
Portail de gestion :
Fonctionnement du système > Verrouillage
 【Pour référence】
[Comment obtenir des informations sur le verrouillage au sein d'un programme](https://jp.community.intersystems.com/node/484976)
### ★^mgstat
Enregistrement continu des informations du compteur sur l'accès global à un fichier en unités de cycles d'échantillonnage (la valeur par défaut est de 2 secondes).
^mgstat est également exécuté lors de l'exécution de l'utilitaire ^SystemPerformance et fait partie du rapport de performance HTML.
 【Pour référence】
[GUI basée sur Grafana pour mgstat (outil de surveillance du système InterSystems Caché / Ensemble / HealthShare).](https://jp.community.intersystems.com/node/483581)
### ★^MIRROR
Les fonctions de configuration, de gestion et d'état de la mise en miroir.
Portail de gestion :
Administration du système > Configuration > Paramètres du miroir
 【Pour référence】
Exemple de configuration HA et DR avec mise en miroir de la base de données
Performance 101
[Synchroniqation et conditions de suppression des fichiers miroir du journal](https://jp.community.intersystems.com/node/503381)
[À propos de la fonction de mise en miroir](https://jp.community.intersystems.com/node/494286)
###
★^MONMGR
Contrôle du journal des messages (messages.log) de l'instance IRIS afin de détecter les alertes signalées par le système et de générer des notifications (alert.log) ou d'envoyer des courriers électroniques.
 【Pour référence】
[Comment faire pour que le journal des messages (messages.log) envoie un courriel avec une sévérité de 2 ou supérieure ?](https://jp.community.intersystems.com/node/527591)
### ★^SECURITY
Cette fonction permet de configurer et de maintenir les données essentielles au bon fonctionnement de la sécurité d'IRIS.
L'utilitaire ^SECURITE comporte les éléments de menu suivants.
%SYS>do ^SECURITY
1) User setup // Affichage, ajout et modification de la configuration utilisateur
2) Role setup // Affichage, ajout et modification de la configuration des rôles
3) Service setup // Affichage ou modification de la configuration du service
4) Resource setup // Affichage, ajout et modification de la configuration des ressources.
5) Application setup // Affichage, ajout et modification des configurations de l'application.
6) Auditing setup // Affichage et exportation des journaux d'audit
8) SSL configuration setup // Affichage, ajout et modification des configurations SSL
9) Mobile phone service provider setup // Affichage ou modification des configurations des fournisseurs de services de téléphonie mobile
10) OpenAM Identity Services setup // Configuration du service OpenAM ID
11) Encryption key setup // Configuration et gestion des fichiers de clés de cryptage des bases de données
12) System parameter setup // Navigation et modification des paramètres de sécurité de l'ensemble du système
13) X509 User setup // Affichage, ajout et modification des informations d'identification X.509 utilisées pour la sécurité des services web
14) KMIP server setup // Gestion et configuration des serveurs KMIP (le protocole d'interopérabilité de gestion des clés)
15) Exit
Portail de gestion :
Administration du système > Sécurité
 【Pour référence】
[Les applications CSP/REST ne se connectent pas. Comment faut-il procéder pour résoudre ce problème ?](https://faq.intersystems.co.jp/csp/faq/result.csp?DocNo=535)
[Conseils sur l'exportation et l'importation des paramètres de sécurité](https://jp.community.intersystems.com/node/534526)
### ★^%SS
Liste des informations sur l'état de chaque processus actif dans le système actuel ( fonction de référence uniquement).
Pour obtenir des informations détaillées sur chaque processus ou pour mettre fin à un processus, utilisez [^JOBEXAM](http://tyoap1.iscinternal.com/csp/knowledge/result.csp?DocNo=563#u10).
Portail de gestion :
Fonctionnement du système > Processus
### ★^SYSLOG
Sortie des informations du journal des erreurs internes d'IRIS qui sont enregistrées dans une partie de la mémoire partagée.
Ce journal peut contenir des informations de diagnostic importantes en cas de problèmes avec le système.
1) La méthode d'exécution est la suivante
USER>zn "%SYS"
%SYS>do ^SYSLOG
Device: // Appuyez sur "Enter" ou saisissez le chemin du fichier de sortie
Right margin: 80 => // Appuyez sur "Enter"
Show detail? No => Yes // Appuyez sur "Yes" +
InterSystems IRIS System Error Log printed on May 19 2023 at 11:53 AM
--------------------------------------------------------
Printing the last 8 entries out of 8 total occurrences.
Err Process Date/Time Mod Line Routine Namespace
3 30848 05/19/2023 09:01:02AM 91 1304 BF0+1373^SYS.Datab %SYS
:
※L'erreur ci-dessus est Err = 3, il s'agit donc d'une erreur du système d'exploitation "Le chemin d'accès spécifié est introuvable".
Err n'est pas nécessairement une erreur du système d'exploitation. Veuillez contacter notre centre d'assistance pour plus d'informations.
C:\>net helpmsg 3
Le chemin d'accès spécifié est introuvable.
2) Les informations SYSLOG étant stockées dans la mémoire partagée, elles sont perdues lors de l'arrêt d'IRIS.
En définissant les paramètres de configuration IRIS suivants, les informations du journal des erreurs internes sont enregistrées dans messages.log lorsque IRIS est arrêté.
Portail de gestion :
Administration du système > Configuration > Paramètres supplémentaires > Compatibilité
[ShutDownLogErrors](https://docs.intersystems.com/irislatestj/csp/docbook/DocBook.UI.Page.cls?%24ZEN_POPUP=1&KEY=RACS_ShutDownLogErrors) Faux (par défaut) -> Vrai
 【Pour référence】
[syslog - Ce que cela représente et ce que cela signifie](https://jp.community.intersystems.com/node/492146)
### ★^SystemCheck
IRIS recueille des informations sur l'état des processus en cours d'utilisation, la mémoire partagée, etc.
En cas de problème, il faut d'abord obtenir ces informations de diagnostic (^SystemCheck).
※Dans Caché/Ensemble, le nom de l'utilitaire était ^Buttons.
La méthode d'exécution est la suivante
%SYS>do ^SystemCheck
Diagnostic Report Build # 087 Evidence Logging Tool
Cet outil de reporting fournit les informations nécessaires pour InterSystems
L'assistance technique est en mesure d'analyser la plupart des problèmes. Veuillez envoyer le fichier résultant avec
chaque nouveau problème envoyé à l'assistance technique.
Cette procédure prendra environ 5 minutes. Veuillez faire preuve de patience.
Continuer (Y)? y // Appuyer sur Enter ou "oui"(y)
Signaler les informations spécifiques à l'interopérabilité ? [Non] n //Appuyer sur Non (n)
Collecte d'informations, veuillez ne pas interrompre ce processus.
Veuillez attendre environ 30 secondes pour %SS les instantanés.
Veuillez attendre environ 1 minute pour les instantanés "irisstat".
Collecte des informations GloStat en cours.
Veuillez attendre environ 1 minute and 40 secondes.
Envoyez les fichiers suivants par FTP à ISC Support :
c:\intersystems\iris\mgr\***202208260909.html in text mode - 579,486 bytes
%SYS>
// \bin
C:\InterSystems\IRIS\bin>IRISHung.cmd
Nom complet du répertoire InterSystems IRIS : C:\InterSystems\IRIS // Saisissez le répertoire d'installation d'IRIS.
Écrire des informations à "C:\InterSystems\IRIS\Mgr\IRISHung_mmss.html"
Veuillez patienter...
Fichier du journal enregistré à :
"C:\InterSystems\IRIS\Mgr\IRISHung_mmss.html"
La taille du fichier est de ***** octets
C:\InterSystems\IRIS\bin>
 【Pour référence】
[Guide de dépannage d'InterSystems IRIS - Collecte d'informations (^Comment utiliser SystemCheck/IRISHung)](https://www.intersystems.com/jp/wp-content/uploads/sites/6/2019/03/InterSystemsIRIS_troubleguide.pdf)
※P.7 (1). Exécution de rapports de diagnostic (^SystemCheck).
[[Comment collecter des informations lorsqu'un problème survient (IRIS / IRIS for Health / UCR eds.)](https://jp.community.intersystems.com/node/489511)
###
★^SystemPerformance
Collecte de données détaillées sur les performances des instances IRIS et des plates-formes sur lesquelles elles s'exécutent.
※Dans Caché/Ensemble, le nom de l'utilitaire était ^pButtons.
 【Pour référence】
[InterSystems: plates-formes de données et performances - Partie 1](https://jp.community.intersystems.com/node/477621)
[InterSystems: plates-formes de données et performances - Partie 2 ](https://jp.community.intersystems.com/node/477711)
[InterSystems: plates-formes de données et performances - Partie 3: accent sur la CPU](https://jp.community.intersystems.com/node/477741)
###
★^TASKMGR
Planification et gestion de tâches telles que la suppression des journaux et les sauvegardes automatiques.
Portail de gestion :
Fonctionnement du système > Tâches
 【Pour référence】
[Méthode de notification par courrier électronique en cas d'erreur lors du démarrage d'une tâche](https://jp.community.intersystems.com/node/518651)
Article
Guillaume Rongier · Avr 14
Les référentiels, applications et serveurs FHIR servent généralement des données cliniques en petites quantités, par exemple pour renvoyer des données sur un patient, ses médicaments, ses vaccins, ses allergies, ou d'autres renseignements. Cependant, il est courant qu'une grande quantité de données au format FHIR/JSON soit demandée pour être utilisée pour charger des Data Lakes, identifier des cohortes étudiées, la santé de la population ou transférer des données d'un DME (dossier médical électronique) à un autre. Pour répondre à ces scénarios d'activités commerciales qui nécessitent d'importantes extractions et charges de données, il est recommandé d'utiliser la fonctionnalité d'accès aux données en masse FHIR fournie par l'institution HL7.
InterSystems IRIS for Health met en œuvre l' ccès aux données de masse FHIR (FHIR Bulk Data Access) avec la fonctionnalité BFC - Bulk FHIR Coordinator (https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.UI.Page.cls?KEY=HXFHIR_bulk). Selon la documentation d'InterSystems, le BFC « simplifie l'interaction des données de masse FHIR pour les clients et, pour ne pas surcharger un serveur FHIR avec des demandes de données de masse, le Bulk FHIR Coordinator (BFC) d'InterSystems sert d'intermédiaire dans l'interaction entre un client de données de masse et un point d'extrémité de serveur de ressources FHIR pour les demandes de données de masse. Le Bulk FHIR Coordinator peut faciliter l'exportation de données de masse FHIR pour les serveurs de ressources FHIR qui ne prennent pas en charge nativement l'interaction de données de masse". Le diagramme de la documentation illustre comment le coordinateur FHIR en bloc sert d'intermédiaire dans l'interaction entre un client et les endpoints FHIR:
Ainsi, si vous souhaitez migrer d'un serveur FHIR vers IRIS for Health, vous pouvez utiliser BFC pour vous connecter à un serveur FHIR cible afin d'obtenir toutes les données dont vous avez besoin sous forme de fichiers json (ressources ndjson), et les importer dans votre serveur FHIR InterSystems.
Dans cet article, vous découvrirez étape par étape les différentes manières de configurer et d'utiliser BFC pour obtenir toutes les données patient d'un référentiel FHIR dans des fichiers JSON en vue d'une utilisation ultérieure.
Étape 1 - Obtenir/configurer une instance IRIS for Health pour utiliser BFC
Si vous n'avez pas d'instance IRIS for Health, cliquez sur le lien suivant pour en obtenir une: https://openexchange.intersystems.com/package/iris-fhir-template. Suivez les procédures d'installation suivantes:
1.1 Installation de Docker:
Clone/git extrait le référentiel dans n'importe quel répertoire local
git clone https://github.com/intersystems-community/iris-fhir-template.git
Ouvrez le terminal dans ce répertoire et lancez:
docker-compose up -d
1.2 Ou installation de l'IPM (nécessite un IRIS for Health en cours d'exécution):
Ouvrez l'installation d'IRIS for Health avec le client IPM installé. Appel dans n'importe quel espace de nom:
USER>zpm "install fhir-server"
Ainsi, le serveur FHIR sera installé dans l'espace de noms FHIRSERVER.
Ou encore, pour une installation programmée, on peut appeler ce qui suit:
set sc=$zpm("install fhir-server")
Étape 2 - Création d'un nouveau justificatif d'identité
1. Access the Management Portal for the namespace FHIRSERVER (http://localhost:32783/csp/sys/%25CSP.Portal.Home.zen?$NAMESPACE=FHIRSERVER).
2. Accédez à l'Interopérabilité > Configuration > Informations d'identification:
3. Paramétrez les valeurs BulkCreds et enregistrez:
Identifiant: BulkCreds
Nom d'utilisateur: _SYSTEM
Mot de passe: SYS
Étape 3 - Configuration du BFC (Bulk Data Coordinator)
1. Accédez à BFC UI (http://localhost:32783/csp/healthshare/fhirserver/bulkfhir/index.html):
2. Appuyez sur le bouton + Nouvelle configuration > Création d'une nouvelle:
3. Configuration des paramètres:
Nom: BFC_Patients
Endpoint BFC (tout chemin relatif): /bulkfhir/patients
Gardez tous les autres paramètres tels quels
4. Appuyez sur le bouton Next.
5. Selectionnez HS.BulkFHIR.Auth.BasicAuth.Adapter et appuyez sur le bouton Next
6. Selectionnez HS.BulkFHIR.Fetch.PureFHIR.Adapter pour le champ Fetch Adapter et définissez les valeurs suivantes:
URL de l'endpoint: http://fhir-template:52773/fhir/r4
Configuration SSL: BFC_SSL
Type d'autorisation: HTTP
Identifiant HTTP: BulkCreds
Acceptez les valeurs par défaut pour tous les autres champs
7. Appuyez sur le bouton Next.
8. Selectionnez la valeur de HS.BulkFHIR.Storage.File.Adapter pour le champ Storage Adapter et définissez les valeurs suivantes:
Storage Adapter: HS.BulkFHIR.Storage.File.Adapter
URL du fichier: /bulkfhir/file
Répertoire: /usr/irissys/mgr/Temp/BulkFHIR/FHIRSERVER/
9. Appuyez sur le bouton Next.
10. Vérifiez la configuration et cliquez sur le bouton de configuration "Configure" en bas de la page:
11. Vous verrez le message de réussite:
Étape 4 (étape finale) - Récupération de vos données de masse
1. Accéder à Exportations (Exports):
2. Appuyez sur le bouton + Nouvelle demande d'exportation:
3. Sélectionnez la valeur du champ de configuration BFC_Patients et appuyez sur le bouton Next
4. Sélectionnez l'option Patient et appuyez sur le bouton Export Now (Exportation immédiate):
5. Vous verrez le message de réussite:
6. Appuyez sur le bouton d'actualisation "Refresh" en haut de la page:
7. Consultez la session de configuration BFC_Patients terminée:
8. Appuyez sur le dernier bouton de téléchargement "Download" ():
9. Consultez la liste des fichiers json exportés:
10. Téléchargez n'importe quel fichier et consultez son contenu:
11. Pour lancer une exportation FHIR en masse à partir d'un client REST, envoyez une requête GET à votre endpoint BFC en indiquant l'opération souhaitée, par exemple:
Système — GET https://bfcEndpoint/$export
Patient — GET https://bfcEndpoint/Patient/$export
Groupe — GET https://bfcEndpoint/Group/groupID/$export
12. Plus de détails sur l'utilisation via l'API: https://docs.intersystems.com/healthconnectlatest/csp/docbook/DocBook.UI.Page.cls?KEY=HXFHIR_bulk#HXFHIR_bulk_export_rest_initiate
13. Plus de détails sur l'utilisation de BFC:
https://docs.intersystems.com/healthconnectlatest/csp/docbook/DocBook.UI.Page.cls?KEY=HXFHIR_bulk#HXFHIR_bulk_intro
https://www.youtube.com/watch?v=J-AVP9MFMWI
Profitez-en!!
Article
Irène Mykhailova · Mars 27, 2022
[](https://hackinghealth.camp/)
Salut les développeurs !
Le dernier jour du Hacking Health Camp 2022 à Strasbourg, France, approche à grands pas et aujourd'hui nous verrons toutes les merveilleuses créations des équipes. Ils ont travaillé toute la nuit et nos équipes sur site et en ligne ont travaillé avec eux et ont répondu à leurs questions.

Nos coachs se sont reuni plus tard dans la matinée pour discuter et échanger les nouvelles.

*MIS A JOUR 16:00:*
Les équipes ont terminé leurs présentations et le jury délibère.


*MIS A JOUR 19:00:*
Les prix ont été décernés. InterSystems a décerné son prix (un emplacement de stand au salon SANTEXPO du 17 au 19 mai 2022, Paris et 6 mois de XSmall (1 500 demandes par minute) ou 3 mois de Small (4 500 demandes par minute) d’accès gratuit au service cloud FHIR InterSystems) au projet [Néo](https://hhcamp.sparkboard.com/project/61f15710a3eec9003df13871). @Laurent.Viquesnel a remis le prix.

Bien sûr, après la fin de la partie officielle, notre équipe s'est réunie à l'extérieur pour célébrer la conclusion de l'événement.

Et nous avons encore une fois félicité l'équipe qui a remporté notre prix !

C'est la conclusion de cette incroyable expérience de 3 jours ! Nous reviendrons l'année prochaine pour voir d'autres équipes formidables et des projets intéressants ! Merci pour le partage <3
Annonce
Robert Bira · Jan 31, 2023
Chez InterSystems, nous croyons en la divulgation responsable des vulnérabilités de sécurité récemment découvertes. Nous fournissons des informations opportunes à nos clients, tout en les gardant hors de la portée des personnes susceptibles d'en faire un mauvais usage. Nous comprenons également que chaque client a des exigences différentes liées à la résolution des problèmes de sécurité.
Alors que nous commençons 2023, nous avons apporté deux changements importants à notre approche des corrections des failles de sécurité que je voudrais souligner :
Des correctifs de vulnérabilité de sécurité seront inclus dans chaque version
Notification client améliorée
Correctifs de vulnérabilité de sécurité dans chaque version
Au lieu d'attendre de fournir des correctifs dans une version de sécurité, chaque version peut désormais inclure des correctifs pour les vulnérabilités de sécurité. Notre cadence de publication améliorée fournira des correctifs sur le terrain en temps opportun.
Notification client améliorée
Les éléments à impact faible et moyen, qui incluent souvent des vulnérabilités telles que les attaques de reconnaissance ou les attaques de script intersite, seront inclus dans chaque version et décrits dans les notes de version du produit.
Les correctifs pour les éléments de gravité supérieure seront également inclus dans chaque version dès qu'ils seront prêts, mais les informations concernant le correctif seront sous embargo jusqu'à ce que les correctifs soient dans toutes les versions prises en charge.
Une alerte de sécurité sera publiée pour les problèmes de gravité élevée et critique lorsqu'ils auront été corrigés dans toutes les versions prises en charge.
Pourquoi InterSystems a-t-il apporté ces changements ?
Nous pensons que ces améliorations vont :
Transmettre plus rapidement les correctifs de sécurité à nos clients
Aider à se concentrer sur les correctifs les plus graves
Rendre possible, dans certains cas, de fournir des correctifs de sécurité sous forme de correctifs au lieu de kits complets
Fournir plus de transparence sur la façon dont les vulnérabilités de sécurité sont gérées en regroupant les vulnérabilités en fonction de leur impact sur la sécurité
Autoriser les administrateurs système à appliquer davantage de correctifs en fonction de leurs besoins et de leurs exigences
Bien sûr, le processus devient beaucoup plus compliqué avec la notion de versions de maintenance et de livraison continue. Afin d'aider les clients à comprendre quand et comment ils peuvent obtenir des correctifs de sécurité, nous avons publié notre politique de gestion des vulnérabilités avec des informations plus détaillées.
J'attends avec impatience 2023 où nous pourrons continuer à améliorer votre expérience liée à notre programme de gestion de la sécurité et des vulnérabilités.
Question
William Glover · Déc 9, 2022
J'essaie d'installer les packages requis pour utiliser .Net avec HealthShare comme ci-dessous.
Mais je ne peux pas utiliser Nuget pour le faire, et la documentation semble assez vague, doit-elle être configurée sur la même machine que l'instance InterSystems ? Je n'ai jamais utilisé Nuget mais en général IRISClient.dll, XEP.dll et au minimum IRIS client doit être sur la même machine que le projet. Les versions client d'IRIS/ HealthShare sont fournis avec l'installation du Serveur dans le dossier suivant :
<dossier d'install>/dev
example sous linux :
/usr/irissys/dev/dotnet/
`-- bin
|-- InterSystems.Data.Bindings.2.0.0.nupkg
|-- InterSystems.Data.IRISClient.2.0.0.nupkg
|-- InterSystems.Data.Utils.2.0.0.nupkg
|-- InterSystems.Data.XEP.2.0.0.nupkg
|-- net5.0
| |-- InterSystems.Data.Gateway.pdb
| |-- InterSystems.Data.Gateway.xml
| |-- InterSystems.Data.GatewayArm
| |-- InterSystems.Data.GatewayLinux
| |-- InterSystems.Data.GatewayOSX
| |-- InterSystems.Data.IRISClient.dll
| |-- InterSystems.Data.IRISClient.xml
| |-- InterSystems.Data.Utils.dll
| |-- InterSystems.Data.Utils.xml
| `-- Newtonsoft.Json.dll
`-- net6.0
|-- InterSystems.Data.Gateway.pdb
|-- InterSystems.Data.Gateway.xml
|-- InterSystems.Data.GatewayArm
|-- InterSystems.Data.GatewayLinux
|-- InterSystems.Data.GatewayOSX
|-- InterSystems.Data.IRISClient.dll
|-- InterSystems.Data.IRISClient.xml
|-- InterSystems.Data.Utils.dll
|-- InterSystems.Data.Utils.xml
`-- Newtonsoft.Json.dll
Toutes ces libraires peuvent etre utilisées sur une autre machine, elles ouvreront une socket TCP pour effectuer la connection sur le superserver port (1972 par default, 51773 pour HealthShare, enfin je crois).
Article
Irène Mykhailova · Avr 12, 2023
Cet article est le deuxième d'une série expliquant comment créer un système d'apprentissage automatique de bout en bout.
### Exploration des données
L'Intersystème IRIS dispose déjà de ce dont nous avons besoin pour explorer les données : un moteur SQL ! Pour les personnes qui ont l'habitude
d'explorer des données dans des fichiers
csv ou des fichiers texte, cela pourrait aider à accélérer cette étape. Fondamentalement, nous explorons toutes les données pour comprendre l'intersection
(jointures), ce qui devrait permettre de créer un jeu de données préparé pour être utilisé par un algorithme d'apprentissage automatique.
##### Tableau d'articles ( Fourni par l'équipe Intersystems )

##### Tableaude balises ( Fourni par l'équipe Intersystems )

Notre défi consiste à classer un **article** avec les bonnes **balises**. Et nous avons un tas d'articles et toutes les balises avec
description.
Il existe plusieurs techniques de classification, mais les cas les plus courants de classification utilisent des données structurées ! Un article,
un long texte n'est pas exactement structuré de ce point de vue.
### L'apprentissage automatique fonctionne la plupart du temps avec des NOMBRES - Faites avec !
Oui ! Même le modèle de données le plus normalisé contient du **texte**, mais lorsque nous devons utiliser des algorithmes de ML, nous devons trouver une solution
pour convertir tous les textes en nombres. Mais n'oubliez pas que les **données non structurées* ne prendront pas les nombres prêts à être utilisés
dans un modèle de classification. Il est temps de...
### Ingénierie des caractéristiques
Dans cette étape, nous convertissons le texte, les nombres, les éléments non structurés et le chaos dans une **matrice** (la plupart du temps)...
oui, cet élément de vos cours d'algèbre d'autrefois. Si nous avons un tableau qui ressemble déjà à une matrice, vous aurez probablement moins
de travail que nous ! Nous avons un grand texte avec des tailles, des formes et des mots différents...
### Sac de mots
L'une des façons de transformer un texte long en une matrice est le sac de mots :
|expression|
|------------|
|Nicole devrait acheter une voiture|
|Jack devrait vendre son bateau|
```
[Nicole, Jack, devrait, acheter, vendre, une, son, voiture, bateau]
[1 , 0, 1, 1, 0, 1, 0, 1, 0]
[0 , 1, 1, 0, 1, 0, 1, 0, 1]
```
Ce n'est qu'un petit exemple. Mais vous pouvez constater que plus il y a de mots, plus la matrice est grande. Heureusement, nous disposons de nombreux
composants pour vous aider à créer des sacs de mots. Dans ce cas, j'ai utilisé les composants de Sklearn pour le faire.
```
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.preprocessing import MultiLabelBinarizer
ml_bin = MultiLabelBinarizer(classes=all_tags)
matrix_y = ml_bin.fit_transform(a_dataframe)
count_vec = CountVectorizer(ngram_range=(1,1), tokenizer=tokenize, strip_accents='unicode', stop_words=stop_words)
matrix_x = count_vec.fit_transform(a_dataframe)
```
Après avoir exécuté les méthodes ci-dessus, nous disposons d'un vectoriseur que nous devrons conserver tout le temps que nous voulons prédire.
Si nous changeons le vectoriseur, nous risquons de perturber les matrices et rien ne devrait fonctionner par la suite.
### Est-ce que je vous ai déjà dit que nous ne devions utiliser que des chiffres ?
Il y a un autre problème ! Pour certains algorithmes, la taille du nombre peut perturber vos intentions. En bref, si un élément de la matrice a
une valeur de 1 et qu'un autre élément a une valeur de 987, certains algorithmes pourraient interpréter cela
comme l'importance de l'élément et prendre la mauvaise direction.
### Algorithmes de classification ML
Il existe de nombreux documents à lire sur les algorithmes de classification, vous pouvez commencer par cet article :
[https://machinelearningmastery.com/types-of-classification-in-machine-learning/](here)
### Article suivant : stratégie de formation (pour les données, oubliez les GIMS)
J'espère que vous appréciez. Si vous aimez le texte et mon application, votez sur
[https://openexchange.intersystems.com/contest/current](https://openexchange.intersystems.com/contest/current) dans mon application **iris-ml-suite**
Article
Lorenzo Scalese · Fév 1, 2023
# Ajout de VSCode dans votre conteneur IRIS
L'une des façons les plus simples de mettre en place des environnements de développement reproductibles est de créer des conteneurs pour ces environnements. Je trouve que lors d'itérations rapides, il est très pratique d'héberger une instance de vscode dans mon conteneur de développement. Ainsi, j'ai créé un rapide script de conteneur pour ajouter un vscode basé sur un navigateur dans un conteneur IRIS. Cela devrait fonctionner pour la plupart des conteneurs 2021.1+. [Mon référentiel de code est disponible ici](https://github.com/nickmitchko/Hosting-vscode-in-a-container)
> Conteneur InterSystems IRIS avec vscode et pré-connecté
| Réf. | Valeur |
|--------------|:--------:|
| Utilisateur | _SYSTEM |
| Mot de passe | SYS |

## Aperçu
Ce projet crée un conteneur IRIS avec une version hébergée (basée sur le web) de vscode disponible dans le même conteneur IRIS. Ceci fournit :
* Modification du code du même conteneur
* Pré-connexion à l'instance IRIS du conteneur
* Liens à partir du Portail de gestion
* Démarrage automatique de l'IDE avec le conteneur
# Démarrage rapide
1. [Téléchargez](https://github.com/nickmitchko/Hosting-vscode-in-a-container/archive/refs/heads/master.zip) ou `git clone https://github.com/nickmitchko/Hosting-vscode-in-a-container.git`
2. A la racine du projet, lancez `docker build . -t vscode-irishealth-ml:latest --no-cache`
3. Lancez `docker-compose up`
* Vous n'utilisez pas docker compose ? Voir [ici](#No-Docker-Compose)
4. Naviguez vers [Management Portal](http://localhost:52773/csp/sys/%25CSP.Portal.Home.zen)
5. Connectez-vous avec l'utilisateur et le mot de passe figurant en haut de ce guide
6. Cliquez sur VSCODE Link dans la fenêtre Favoris
7. Lorsque vous y êtes invité, utilisez le même mot de passe dans le vscode pour vous connecter à l'instance IRIS.
```bash
# Nouveau dossier pour le projet
mkdir vscode-iris
cd vscode-iris
# Clonez le référentiel ici
git clone https://github.com/nickmitchko/Hosting-vscode-in-a-container.git .
# Créez une image
docker build . -t vscode-irishealth-ml:latest --no-cache
# Exécution (A) ou (B) uniquement
#
# (A) Exécution du fichier de composition
docker-compose up
# OU (B) si vous préférez un démon
docker-compose up -d
```
## Ajoutez la persistance
Si vous cherchez une instance iris persistante, il faut commenter les lignes 16-20 du fichier docker-compose.yml. Cela permet d'ajouter un montage de stockage persistant au conteneur.
```yml
volumes:
- "./durable/:/durable/"
environnement:
- ISC_DATA_DIRECTORY=/durable/iconfig
```
## Modification de l'image de base
Cette image est construite à partir des images zpm de la communauté des développeurs d'InterSystems ([disponible ici](https://hub.docker.com/r/intersystemsdc/iris-community/tags)). Ces images incluent la commande zpm qui nous permet d'installer facilement à partir du référentiel de paquets, mais la licence communautaire n'est que de 90 jours.
La balise d'image utilisée pour les constructions est la suivante :
```dockerfile
FROM intersystemsdc/irishealth-ml-community:latest
```
Si vous voulez remplacer l'image, remplacez la première ligne du fichier docker par l'étiquette de l'image souhaitée (soit une instance IRIS personnalisée, soit une instance [prise en charge](https://docs.intersystems.com/components/csp/docbook/DocBook.UI.Page.cls?KEY=PAGE_containerregistry#PAGE_containerregistry_public)). Par exemple :
```dockerfile
FROM containers.intersystems.com/intersystems/irishealth-community:2021.2.0.651.0
```
# Pas de Docker-Compose
Si vous n'utilisez pas docker compose, vous pouvez toujours exécuter le conteneur comme suit :
```bash
# Après avoir créé le conteneur
# --après la commande est nécessaire
docker run --name vscode -d \
--publish 1972:1972 \
--publish 52773:52773 \
--publish 51773:51773 \
--publish 53773:53773 \
--publish 8080:8080 \
--publish 8888:8888 \
vscode-irishealth-ml:latest \
--after "/bin/bash /install/boot.sh"
```
Article
Guillaume Rongier · Oct 19, 2022
Bonjour, chers développeurs !
Dans cet article, nous allons nous concentrer sur OAuth2, un protocole qui est de plus en plus utilisé en combinaison avec FHIR pour effectuer des autorisations.
Dans cette partie 1, nous allons démarrer le conteneur Docker pour IRIS for Health et Apache, configurer la fonction de serveur d'autorisation OAuth2 sur IRIS for Health, y accéder depuis l'outil de développement REST Postman, et obtenir un jeton d'accès.
En outre, dans la deuxième partie et au-delà, nous ajouterons la fonctionnalité de référentiel FHIR à IRIS for Health, nous ajouterons la configuration du serveur de ressources OAuth2 et nous expliquerons comment exécuter des requêtes FHIR avec des jetons d'accès depuis Postman.
Plusieurs excellents articles ont déjà été publiés au sein de la communauté des développeurs pour expliquer la fonctionnalité OAuth2 des produits d'InterSystems ; cependant, je voudrais expliquer à nouveau comment configurer la dernière version.
[Mise en œuvre d'InterSystems IRIS Open Authorization Framework (OAuth 2.0) - partie 1](https://community.intersystems.com/post/intersystems-iris-open-authorization-framework-oauth-20-implementation-part-1)
Dans cet article, nous utiliserons la dernière version d'InterSystems IRIS for Health 2020.3 Preview Edition. Si vous envisagez de créer un environnement basé sur cet article, veillez à utiliser cette version ou une version ultérieure du kit. Certaines fonctionnalités ne sont pas incluses dans les produits antérieurs à cette version.
## Préparatifs préliminaires
La première étape consiste à effectuer des préparatifs préliminaires. Il y a beaucoup de choses à préparer pour construire un environnement sécurisé.
IRIS for Health 2020.3 Preview Edition est uniquement disponible en version conteneur Docker. ([InterSystems Docker Hub/IRIS for Health](https://hub.docker.com/_/intersystems-iris-for-health/))
Pour effectuer la configuration d'OAuth2, vous devrez également effectuer la configuration du serveur web et de SSL. Dans cet article, nous utiliserons Apache.
Lors de la configuration SSL sur Apache, le certificat de configuration SSL doit correspondre au nom d'hôte du serveur. Veuillez tenir compte de ce point.
### Obtenir des fichiers d'exemple à partir du dépôt GitHub d'intersystems-jp
Le fichier docker-compose.yml/Dockerfile et d'autres exemples de fichiers utilisés dans cette configuration sont disponibles dans le dépôt GitHub réservé à la communauté des développeurs InterSystems.
Tout d'abord, décompressez ce fichier dans votre environnement à l'aide de la commande suivante. (Vous pouvez également le faire à partir de la pièce jointe à cet article).
Ce fichier docker-compose.yml/Dockerfile et d'autres fichiers sont créés en se référant à l' [application iris-webgateway-example](https://openexchange.intersystems.com/package/iris-webgateway-example) published on OpenExchange.
```console
git clone https://github.com/Intersystems-jp/IRIS4H-OAuth2-handson.git
```
### Modification de la configuration en fonction du kit utilisé
Dans ce fichier docker-compose.yml, deux conteneurs sont configurés pour être démarrés : le conteneur IRIS for Health et le conteneur Apache (httpd) seront créés par la commande docker build.
Le fichier docker-compose.yml, disponible sur GitHub, fait référence à IRIS for Health Community Edition Preview Edition (2020.3.200.0).
L'édition communautaire peut être utilisée pour l'évaluation des produits InterSystems.
```docker
iris:
image: store/intersystems/irishealth-community:2020.3.0.200.0
```
Si vous utilisez une version différente (version officielle ou version plus récente), veuillez modifier cette partie de la spécification.
Le conteneur Apache sera construit avec le contenu du Dockerfile, qui nécessite un kit [WebGateway](https://docs.intersystems.com/irisforhealth20201/csp/docbook/DocBook.UI.Page.cls?KEY=GCGI) pour se connecter à IRIS depuis Apache.
Pour savoir comment obtenir ce kit, les partenaires d'InterSystems peuvent consulter le site de téléchargement du kit WRC ou contacter le centre de support WRC.
Pour toute autre question, veuillez nous contacter à [cet adresse](mailto:jpcommunity@intersystems.com?subject=howtogetWebGatewayKit).
Modifiez les parties suivantes du Dockerfile en fonction du produit que vous avez obtenu. Quel que soit le système d'exploitation de la machine hôte (Windows/Ubuntu/CentOS), la plate-forme sera lnxubuntux64 car le système d'exploitation du conteneur httpd de base est Debian.
```docker
ARG version=2020.3.0.200.0
ARG platform=lnxubuntux64
ADD WebGateway-${version}-${platform}.tar.gz /tmp/
```
### Préparation d'un certificat SSL
À l'étape suivante, un certificat SSL est préparé. Lorsque l'on accède à l'autorisation OAuth2, le certificat SSL défini dans le serveur Web est vérifié pour voir s'il correspond à l'URL à laquelle on accède.
Il n'est pas nécessaire d'utiliser un certificat officiel ; il est possible d'utiliser OpenSSL, etc. Saisissez le nom d'hôte dans le champ "Nom commun" lors de la création du certificat.
De plus, comme le certificat que vous avez créé sera chargé automatiquement au moment du lancement, vous devez modifier le fichier pour qu'il ne nécessite pas de mot de passe. Veuillez vous référer à la commande suivante.
```console
$ openssl rsa -in cert.key.org -out cert.key
```
Placez les fichiers CRT et KEY créés dans le même répertoire que le Dockerfile, avec les noms de fichiers **server.crt / server.key** respectivement.
En plus de l'utiliser avec le serveur web Apache, vous aurez besoin d'un certificat SSL pour la configuration d'OAuth2. Il n'est pas nécessaire d'entrer un nom d'hôte, etc., mais vous devez créer trois ensembles. (Dans les configurations suivantes, ils apparaissent sous la forme auth.cer/auth.key , client.cer/client.key , resserver.cer/resserver.key)
### Construction de docker et démarrage d'un conteneur docker
Maintenant, vous êtes enfin prêt ! En plus des quatre fichiers que vous avez téléchargés, vous avez maintenant un ensemble d'installation de la passerelle Web et deux certificats SSL dans votre répertoire. Faites attention aux autorisations d'accès et d'exécution de chaque fichier. (Par exemple, j'ai ajouté la permission d'exécution à webgateway-entrypoint.sh).
```docker
docker-compose build
docker-compose up -d
```
Une fois lancé, utilisez la commande docker ps pour vérifier que les deux conteneurs fonctionnent.
```
Nom du conteneur Apache:_web
Nom du conteneur IRIS for Health:store/intersystems/irishealth-community:2020.3.0.200.0(ou autre nom en fonction de l'ensemble)
```
Essayez maintenant d'accéder au portail de gestion selon les trois méthodes suivantes. Si la troisième méthode fonctionne, votre configuration SSL via le serveur web Apache est un succès !
http://[hostname]**:52773**/csp/sys/UtilHome.csp :L'accès à cette URL se fait par le biais de Private Apache dans le conteneur IRIS. Elle ne passe pas par l'Apache configuré.
http://[hostname]/csp/sys/UtilHome.csp : Cette URL permet d'accéder au portail de gestion via l'Apache configuré.
http**s**://[hostname]/csp/sys/UtilHome.csp : Cette URL permet d'accéder au portail de gestion en utilisant une connexion SSL via Apache, que vous avez configurée.
### Création d'une configuration SSL
Maintenant que IRIS for Health est opérationnel et que nous avons accès au portail de gestion, créons la configuration SSL pour les derniers préparatifs.
Allez sur le Portail de gestion -> Administration du système -> Sécurité -> Configuration SSL/TLS et créez trois configurations SSL en utilisant les trois paires de clés de certificat que vous avez préparées.
Vous pouvez choisir le nom que vous voulez, mais dans cet article, nous utiliserons SSL4AUTH/SSL4CLIENT/SSL4RESSERVER, conformément aux articles précédents sur OAuth2.

*À propos du partage de répertoire entre les hôtes et les conteneurs
La spécification des volumes suivants dans le fichier docker-compose indique l'emplacement actuel du répertoire hôte = /ISC dans le conteneur.
Veuillez utiliser ce répertoire lorsque vous spécifiez le fichier de certificat dans les paramètres ci-dessus, etc.
```docker
volumes:
- .:/ISC
```
Ce répertoire contiendra non seulement des fichiers mais aussi des fichiers de base de données IRIS et des fichiers de configuration.
Consultez le document “[Persistant %SYS pour le stockage des données d'instance persistantes](https://docs.intersystems.com/irisforhealthlatest/csp/docbook/Doc.View.cls?KEY=ADOCK#ADOCK_iris_durable)” pour plus d'information.
## Configuration de OAuth2 dans IRIS for Health
Il est maintenant temps d'entrer dans les détails de l'accès à IRIS for Health en utilisant OAuth2 !
### Configuration du serveur d'autorisation OAuth2
Tout d'abord, configurons le serveur d'autorisation OAuth2 !
Allez dans Portail de gestion → Administration du système → Sécurité → OAuth 2.0 → Serveur.
Suivez les instructions ci-dessous pour configurer les paramètres.
|Paramètres dans l'onglet "Général"||
|---|---|
|Point de terminaison de l'émetteur : Nom d'hôte|Saisissez le nom d'hôte réel.|
|Point de terminaison de l'émetteur : Prefix |Vous pouvez saisir la valeur de votre choix, mais ici nous l'avons fixée à "authserver".|
|Types de subventions pris en charge|Dans cet article, nous n'utiliserons que le "Code d'autorisation", mais si vous souhaitez tester d'autres "Types de subventions", veuillez ajouter une coche. Ajoutez également une coche à "Autorisation JWT"|
|Configuration SSL/TLS|Spécifiez la configuration SSL que vous venez d'ajouter.|

Dans l'onglet "Scopes", cliquez sur " Ajouter un Scope supporté " pour les ajouter.
Plus tard, l'écran de connexion du code d'autorisation affichera la "description" que vous avez écrite ici.

Ne modifiez pas l'onglet "Intervalles" par rapport à la valeur par défaut.
Dans l'onglet " Paramètres JWT ", sélectionnons " RS512 " comme algorithme de signature.

Dans le denier onglet "Personnalisation", changez la spécification "Génération de classe de jeton" en %OAuth2.Server.JWT.

Une fois que vous avez saisi les informations, cliquez sur le bouton "Enregistrer" pour sauvegarder la configuration.
Maintenant que vous avez la configuration nécessaire pour qu'IRIS for Health fonctionne comme un serveur d'autorisation OAuth2, vous êtes prêt à l'essayer ! Essayons d'y accéder à partir de Postman et voyons si nous pouvons obtenir un jeton d'accès !
Cependant, avant de faire cela, nous devons effectuer deux autres configurations.
### Ajout d'une description du client
Tout d'abord, ajoutez les informations de Postman auxquelles vous souhaitez accéder en tant que client OAuth2. L'enregistrement du client OAuth2 peut être ajouté par le biais d'un enregistrement dynamique ou d'autres méthodes.
Cliquez sur "Description du client" sur la page de configuration du serveur pour continuer.

Cliquez sur "Créer une description du client" pour ajouter une entrée.
Suivez les instructions ci-dessous pour créer une souscription du client.
| Paramètres dans l'onglet "Général" | |
|---|---|
| Nom | Entrez un nom de votre choix. Dans ce cas, nous avons choisi " postman ". |
| Type du Client | Selectionnez “Confidentiel” |
| Redirection d'URLs | Cliquez sur le bouton "Add URL" pour ajouter une URL de redirection pour Postman. https://www.getpostman.com/oauth2/callback comme URL de redirection pour Postman. |
| Types de subventions pris en charge | Spécifiez le même "Code d'autorisation" (Authorization Code) qui a été configuré dans les paramètres du serveur d'autorisation OAuth2. (Par défaut) Ajoutez un contrôle si vous souhaitez également tester d'autres types de subventions. Cependant, les paramètres doivent être les mêmes que la configuration du serveur d'autorisation. Cochez également la case "Autorisation JWT". Précisez ici |
| Authenticated Signing Algorithm | Vérifiez "JWT authorization" sous Supported grant Types (Types de subventions pris en charge) pour pouvoir le sélectionner. Sélectionnez "RS512". |
| | |

Une fois que vous avez saisi les informations, cliquez sur le bouton "Enregistrer" pour sauvegarder la description du client.
Cliquez sur l'onglet " Références du client " pour voir l'ID du client et la clé privée du client pour cette entrée.
Vous aurez besoin de cet ID et de cette clé privée lorsque vous effectuerez des tests à partir de POSTMAN.

### Ajout d'une application Web
Un autre paramètre important doit être ajouté avant d'y accéder à partir de POSTMAN.
L'écran de configuration du serveur d'autorisation OAuth2 a déterminé que le point de terminaison pour cette configuration est https:///authserver/oauth2.
Pour que l'accès à ce point de terminaison soit traité correctement par IRIS, nous devons ajouter une application Web pour cette route URL.
Allez dans Administration système→Sécurité→Applications→Applications Web, et cliquez sur "Créer une nouvelle application Web".

Un modèle d'application web OAuth2 est fourni, il faut donc d'abord sélectionner "/oauth2" dans " Copier à partir de ".
| Paramètres "Editer l'application Web" | |
|---|---|
| Copie à partir de | “/oauth2” : Sélectionnez toujours celui-ci en premier dans la liste déroulante. |
| Nom | /authserver/oauth2 |
| Activation | Cochez la case d'option "REST". |
| | |
Après avoir saisi chaque valeur, enregistrez-la.

## Test d'OAuth2 à partir de POSTMAN
Testons-le à partir de POSTMAN.
Les tests peuvent également être effectués à partir d'autres outils ou du programme lui-même.
L'explication détaillée de POSTMAN dépasse le cadre de cet article, mais un point à noter est que la vérification du certificat SSL doit être changée en OFF dans les paramètres de POSTMAN.
Après avoir créé une nouvelle demande dans POSTMAN, sélectionnez "OAuth 2.0" dans l'onglet TYPE d'autorisation et cliquez sur "Obtenir un nouveau jeton d'accès".
.png)
Dans l'écran suivant, saisissez les valeurs selon les indications suivantes.
| Paramètres「GET NEW ACCESS TOKEN」 | |
|---|---|
| Nom du jeton | Entrez un nom de votre choix. |
| Type de subvention | Choisissez "Code d'autorisation". |
| Callback URL | |
| Auth URL | https:///authserver/oauth2/authorize Saisissez la valeur du point de terminaison +/authorize. En ajoutant ?ui_locales=ja, vous pouvez afficher l'écran de connexion en japonais. |
| Auth Token URL | https:///authserver/oauth2/token. Saisissez la valeur du point de terminaison +/token. |
| Client ID | Saisissez l'ID du client affiché dans l'onglet Références du client après l'enregistrement de la description du client.|
| Clé Secrète du client | Saisissez la clé privée du client, affichée dans l'onglet Références du client après l'enregistrement de la description du client. |
| Champ | Entrez le champ d'application enregistré dans la configuration du serveur d'autorisation, par exemple "scope1". Vous pouvez également spécifier plusieurs champs séparés par des espaces. |
| État | Entrez le paramètre d'état "State", qui est utilisé pour les contre-mesures contre CSRF. Il n'est pas explicitement utilisé mais ne peut pas être laissé vide, donc nous entrons une chaîne arbitraire. |
| | |
.png)
Après avoir entré les paramètres et cliqué sur le bouton " Demande de jeton ", vous voyez l'écran de connexion comme indiqué ci-dessous.

Essayez de vous connecter avec les informations de l'utilisateur (par exemple, _SYSTEM) ayant accès au portail de gestion.
Sur l'écran suivant après la connexion, vous pouvez décider d'accorder des permissions à cette application.
Après avoir cliqué sur " Autoriser ", si le jeton d'accès s'affiche sur l'écran suivant, comme indiqué ci-dessous, le test d'acquisition du jeton d'accès est réussi !
.png)
### Test d'OpenID Connect
IRIS for Health peut effectuer un traitement d'autorisation OAuth2 ainsi qu'un traitement d'authentification conforme à OpenID Connect.
Pour plus de détails consultez [ce document](https://docs.intersystems.com/irisforhealth20201/csp/docbook/DocBook.UI.Page.cls?KEY=GOAUTH).
Dans cette configuration, OpenID Connect est activé, alors testons si nous pouvons également obtenir le jeton d'identification OpenID Connect !
C'est facile à mettre en œuvre. Dans l'écran GET NEW ACCESS TOKEN, ajoutez "openid" à son champ d'application et faites une demande.
.png)
OpenID Connect sera également affiché sur la page de demande d'autorisation. Après avoir ouvert une session et donné vos autorisations, assurez-vous que vous obtenez également un jeton d'identification (id_token) lorsque vous voyez l'écran suivant. (Vous devrez peut-être faire défiler l'écran).
.png)
Avez-vous réussi à obtenir le jeton d'accès et l'id_token ?
Bien que certains préparatifs, tels que les certificats, nécessitent un peu de temps et d'efforts, nous pourrions construire un serveur d'autorisation OAuth2 avec une telle simplicité en utilisant IRIS for Health, une plateforme de base de données.
Dans la prochaine partie de cette série, je vous montrerai enfin comment construire un référentiel FHIR, enregistrer le référentiel FHIR en tant que serveur de ressources OAuth2 et vous montrer comment accéder par REST au référentiel FHIR en utilisant un jeton d'accès OAuth2 depuis POSTMAN.
Article
Irène Mykhailova · Mai 23, 2023
Salut la Communauté !
SantExpo a déjà ouvert ses portes et nous sommes là et prêts à vous rencontrer ! Nos équipes sont déjà sur place, au stand F43 (Hall 1, Porte de Versailles) et sont prêtes à discuter avec les acteurs majeurs de la santé.
Voici notre emploi du temps pour la première partie de la journée :
MISE À JOUR 12H00
Nous avons eu une présentation super positive et fructueuse à propos d'emélioration de la coordination Ville-Hôpital avec InterSystems & Docteur Smart ! Il est essentiel de bâtir un système de santé connectée pour faciliter l'échange sécurisé d'informations médicales et assurer une meilleure coordination des soins.
Voici notre emploi du temps pour la deuxième partie de la journée :
MISE À JOUR 17H00
La première discussions d'après-midi on a parlé comment prévenir les risques et améliorer la santé d'un territoire avec une prise en charge ciblée pour chaque patient. L'analyse populationnelle couplée à l'IA et au partage de données à grande échelle est une force pour prédire les risques de demain.
Après @Guillaume.Rongier7183 a parlé d'un de son sujets aimé - FHIR et comment il facilitent l'accès aux données pour les cliniciens.
C'est tout pour ce court récit du déroulement de la première journée de SantExpo. À demain! Reste en contact.
Article
Irène Mykhailova · Nov 15, 2022
Salut la communauté,
Nous sommes heureux de partager avec vous ce qui se passe au salon Supply Chain Event où nous sommes actuellement présents! Nos experts @Sylvain.Guilbaud, @Robert.Bira, @Adeline.Icard, Bertrand Cayzac, Mark S. Holmes et @Ming.Zhou sont prêts à vous accueillir et vous présenter nos solutions pour une Supply Chain étendue digitale et intelligente.
Vous nous trouverez au stand F22
Le programme d'aujourd'hui est très chargé
Nous vous rencontrerons aujourd’hui à 14 h en salle 3 pour notre atelier sur "la conception d'une nouvelle tour de contrôle plus intelligente pour votre supply chain", présenté par David Haverlant (Directeur Senior Retail, CPG, Luxe Talan), Benoit Hollebecq (Responsable Transformation Numerique, Voies navigables de France) et @Sylvain.Guilbaud (Expert InterSystems IRIS Data Platform, InterSystems France). Restez à l'écoute pour les mises à jour!
Ce matin a commencé par les Digital Supply Chain Awards. Le jury attend avec impatience d'écouter tous les pitchs des finalistes:
Start-Up Digital Supply Chain Award
klareo Magma TechnologyEasy Truck InRMAN SyncMonstock
Digital Supply Chain Award
SAP France SiemensB2wiseDashdocDCBrainDDS LogisticsLocus RoboticsMapotempoMytowerProject44
Restez à l'écoute pour les prochaines mises à jour!
MIS A JOUR 14h00
Les finalistes ont terminé leurs présentations.
Voici quelques citations intéressantes de candidats:
Siemens Supply chain du chaos car le contexte est changeant.Retard de digitalisation en France => plateforme sas pour héberger toutes les applications SC Siemens.
Mapotempo Orchestration des flux du dernier km grace à un outil de DMS unifié.Lancement de la solution au niveau européen.
MytowerExperience des controls douaniers 👉 Collecter la donnée 👉 Archiver les documents 👉 Analyser les informations et les risques Plateforme de collecte de données pour une vision globale et un accès rapide aux informations
Project44Plateforme de Collaboration instantanée pour une visibilité multimodale de la chaîne de transport.
Annonce des lauréats et Remise des prix auront lieu aujurd'hui à partir de 18h15. On attend!
Mais pour l'instant, nous allons dans le hall 3 où notre présentation doit débuter prochainement ! On se voit là-bas!
MIS A JOUR 15h30
Notre présentation au hall 3 a eu un grand succès!
Beaucoup de monde est venu écouter notre discours: “Construire une tour de contrôle nouvelle génération à la fois collaborative, résiliente, prescriptive et descriptive”.
Pour ceux qui l'ont raté, voici les points principaux:
Les obstacles ont été nombreux pour les acteurs de la supply chain en 2022 et ils continuent à persister : crise sanitaire, pénurie de composants, difficultés d’approvisionnement, tensions politiques, énergétiques et maintenant risque de récession. Autant de paramètres qui ont un impact sur l’agilité et la résilience de votre chaîne d’approvisionnement.Dans ce contexte, la capacité à adapter vos modèles pour intégrer ces informations provenant de sources variées est vitale pour conserver une longueur d’avance dans cet environnement très concurrentiel et incertain.Pour réussir sur le long terme, il est indispensable d’avoir une vue d’ensemble de la chaîne d’approvisionnement afin de pouvoir identifier les dysfonctionnements, les opportunités, les analyser rapidement à l’aide de méthodologies prédictives et prescriptives et de les traiter dans les meilleurs délais.
Passer d’une gestion Just in Time au Just in Case ✅
MIS A JOUR 17h00
Venez nous rejoindre sur notre stand F22 pour vous faire prendre une photo et recevoir une surprise. Animation sur le stand InterSystems : ICI ON SOURIT ♥️
@Adeline.Icard et @Ming.Zhou. N'est-ce pas mignon ?
MIS A JOUR 19h00
Après des débats houleux, les lauréats ont été annoncés !
Le StartUp Digital Supply Chain Award est attribué à Monstock !Plateforme de gestion et pilotage d’entrepôts« Dans un monde complexe, la simplicité et adaptabilité de la solution a séduit le jury »
Le Digital Supply Chain Award est attribué à DCBrain Optimisation des plans de transports pour aller chercher des économies d’énergie En partenariat avec Lidl« Une solution verte qui nous a particulièrement touchée et une équipe particulièrement persévérante et dynamique »
Nos meilleurs voeux pour les gagnants !
Mais n'oubliez pas tous les participants.
Donc c'est tout pour aujourd'hui. À demain !
Annonce
Robert Bira · Nov 14, 2022
InterSystems a le plaisir d'annoncer la sortie de la version 2.0 de System Alerting & Monitoring (SAM).
Qu'est-ce que SAM ?
SAM combine l'API de surveillance et Log Monitor avec des outils standard familiers de l'industrie tels que Grafana et Prometheus pour créer une solution de surveillance et d'alerte de base pour les clusters IRIS.
Pour en savoir plus sur SAM, consultez le Guide d'alerte et de surveillance du système.
Quoi de neuf dans SAM 2.0 ?
Les outils standard de l'industrie sur lesquels SAM s'appuie ont tous été mis à niveau.
Exportation et importation de configuration – Vous pouvez désormais exporter votre configuration SAM et la réimporter dans une autre instance SAM. Cela facilite le passage d'un environnement à un autre.
Plusieurs tableaux de bord Grafana - Vous pouvez désormais créer plusieurs tableaux de bord dans Grafana et choisir celui que vous souhaitez afficher par défaut pour chaque instance IRIS.
HTTPS et préfixes d'URL – SAM peut désormais utiliser HTTPS pour collecter des données d'observabilité à partir de vos instances IRIS. De plus, vous avez la possibilité de spécifier un "préfixe de chemin d'URL" qui permet à SAM de surveiller plusieurs instances IRIS exécutées sur le même hôte.
Consultez la documentation pour plus d'informations sur SAM 2.0.