Recherche

Effacer le filtre
Annonce
Irène Mykhailova · Mars 31, 2022

Version de la Communauté des Développeurs, mars 2022

Bonjour et bienvenue sur la version de mars 2022 de la Communauté des Développeurs ! Nous avons récemment amélioré votre expérience sur la Communauté d'InterSystems : Nouvelle recherche sur la Communauté Statistiques générales de la Communauté Connexion au profil Facebook Mises à jour des pages de publication : balises, bloc d'auteur, brouillons Regardons de plus près ci-dessous. Recherche sur la Communauté Nous avons mis en place un tout nouveau moteur de recherche sur le site de la Communauté. Il existe deux options de recherche : Recherche rapide Recherche Avancée En utilisant la recherche rapide de la CD vous pouvez facilement trouver une publication / une balise / un utilisateur et accéder directement à cette page Web. Vous n'avez rien trouvé de convenable parmi les options proposées? Essayez d'utiliser la recherche avancée de la CD en cliquant sur le bouton 🔍 : Ici, vous pouvez facilement ajouter des paramètres avancés pour votre requête de recherche : rechercher dans les messages d'un utilisateur spécifique rechercher par balise(s) spécifique(s) rechercher par type de message spécifique ou juste dans vos messages Vous pouvez également trier les résultats par période et pertinence : Statistiques générales de la Communauté Vous pouvez maintenant voir la Communauté des Développeurs d'InterSystems en chiffres : Connexion au profil Facebook Ajoutez un lien Facebook à votre profil CD pour rencontrer de nouveaux amis et vous rapprocher les uns des autres. Accédez à votre profil --> Modifier --> Informations supplémentaires --> Facebook profile Mises à jour des pages de publication : balises, bloc d'auteur, brouillons Vous avez demandé - nous l'avons fait! Maintenant, les balises CD sont dans le corps du post. De plus, sur la page de publication, vous pouvez désormais voir les coordonnées de l'auteur dans le bloc de droite : Les brouillons sur le site de la CD sont maintenant surlignés en bleu : J'espère que vous apprécierez nos mises à jour ! Soumettez vos demandes d'améliorations et rapports de bugs sur DC GitHub. Ou postez vos suggestions dans les commentaires de cette annonce ou de l'originale. Restez connecté!
Annonce
Robert Bira · Sept 21, 2022

On recrute un développeur (H/F) sur Montpellier

InterSystems est à la recherche du développeur qui intégrera une équipe R&D Française de taille humaine et devra collaborer avec les équipes R&D internationales. Il ou ele sera amené à travailler en équipe avec des membres de plusieurs départements (Support, Implémentation, commercial). La capacité d’innovation et la créativité sont des atouts et des qualités vivement encouragées. Le développeur participera à la planification, au développement, à la maintenance et aux tests de nos logiciels (systèmes d’information hospitaliers). Il est de sa responsabilité de créer des logiciels robustes et de vérifier que les solutions répondent à toutes les obligations. Son rôle consiste également à produire la documentation technique ainsi que de participer au cycle de vie complet du développement de logiciels. Le développeur : concevra des structures objets, des schémas SQL et des workflows applicatifs utilisera en partie la technologie propriétaire de la société (cf : Data Management & Healthcare Information Systems | InterSystems ) créera l’agencement de l’IHM dans le respect des normes applicables à chaque application se chargera de planifier, développer et tester les programmes en appliquant ses connaissances des techniques de programmation prêtera assistance pour investiguer et résoudre les erreurs logicielles non reproductibles (support niveau 2) participera aux implémentations techniques sur site si nécessaire se tiendra informé des évolutions des fonctionnalités relatives aux logiciels applicatifs se tiendra informé des évolutions des outils de programmation, des systèmes d’exploitation et des technologies connexes se tiendra informé des évolutions des normes d’échanges de données applicables assistera aux sessions de formation produit pour se familiariser avec les fonctionnalités de base des produits et les workflows Expérience et qualifications Au moins cinq ans d'expérience dans des environnements de développement d'applications Web à grande échelle. Parfaite connaissance du cycle de vie du développement logiciel. Compétences techniques: SQL - Java - Angular - Linux. >> appliquer ici << Rejoignez la team !
Article
Kevin Koloska · Nov 9, 2022

Salutations à tous ceux qui pourraient être intéressés par notre solution VR pour HealthСare

Nous sommes une startup technologique - Virtual Lab qui développe des solutions utilisant des technologies avancées VR / AR. Nous disposons d’un vaste portefeuille de produits et de solutions personnalisés. Aujourd’hui, nous aimerions vous présenter le projet VR ICU® – une plate-forme de formation pour le personnel médical de l’uci, créée à l’ère du Covid pour les besoins des hôpitaux. Comment cela a-t-il commencé? En 2020, une pandémie a frappé notre pays. Les hôpitaux étaient surpeuplés, il y avait un manque de personnel, en particulier dans les soins intensifs. Le chef du département d’anesthésiologie, de réanimation et de soins intensifs est apparu aux nouvelles du soir et a expliqué que si davantage de médecins étaient mis en quarantaine ou malades, ils n’avaient pas assez de personnel qualifié pour faire fonctionner les ventilateurs pulmonaires. Les autres hôpitaux ont confirmé la même situation. Nous avons eu l’idée de créer une copie numérique du ventilateur pulmonaire conçu spécifiquement pour former et aider les hôpitaux à former des médecins d’autres départements. Nous avons approché le chef du département d’anesthésiologie de réanimation - ARO, les experts du centre de simulation. Les gens de la clinique ont soutenu l’idée, et certains ont été impliqués dans le développement. Nous avons également été accompagnés par des fabricants d’équipements médicaux qui voient la valeur ajoutée de la formation en réalité virtuelle. Vous pouvez voir l’application ici Aujourd’hui, UCI vr est® utilisé par les hôpitaux, les universités et les centres de simulation. La réalité virtuelle porte l’éducation et la formation à un nouveau niveau. En apprenant par l’expérience, l’efficacité de la formation et la mémorisation sont augmentées. Chef du département d’anesteziologie et d’examen des soins intensifs Comment procédons-nous dans le projet et quelle est l’importance de la solution? 1. Nous avons évalué la situation actuelle à l’UCI : Plus de 50 % des procédures de soins intensifs ne peuvent pas être formées sans de vrais patients et/ou dispositifs médicaux. Les fabricants de dispositifs médicaux ont du personnel médical problématique au même endroit pour les procédures de formation (seulement 30% des stagiaires restent jusqu’à la fin de la formation) Le taux de roulement au cours des deux dernières années est d’environ 20% en soins intensifs et en soins intensifs. 2. Solution au problème : Plateforme de formation automatisée en réalité virtuelle Simule les procédures de soins intensifs sans patients réels et sans avoir besoin d’utiliser de vrais dispositifs médicaux Économise la technologie et les médicaments Également disponible pour la formation à distance, présence dans un espace virtuel de différents lieux / lieux de travail environnement propice à la pratique de situations à risque Minimise le risque d’erreur humaine 3. Potentiel : Utilisation de l’intelligence artificielle (IA) pour simuler et pratiquer des situations critiques et déterminer les bonnes procédures L’IA permet de simuler les interactions patient-dispositif-patient Les appareils des fabricants concentrés en un seul endroit facilitent la formation des hôpitaux Avantages de travailler avec Intersystems Notre solution VR ICU répond à® des besoins pratiques et est développée en collaboration avec les hôpitaux. En plus de la solution technique et de l’acquisition des compétences elle-même, il est important - pour une gestion efficace de l’hôpital ou des soins intensifs - d’enregistrer les sessions de formation, leurs progrès et leurs taux de réussite. Une vue d’ensemble des personnes ayant suivi une formation et du moment où elle donne aux médecins en chef une idée claire du nombre de personnes compétentes pour travailler avec les appareils dans l’unité de soins intensifs, leur permet de les former efficacement pour maintenir leurs compétences, planifier les réserves du personnel de manière contrôlée et élargir leurs compétences. À cet égard, la coopération avec Intersystems est importante pour nous, ce qui nous permet de stocker les données lors de chaque session de formation dans notre application. Nous suivons le nom du participant, la date et la durée de la formation, le type de formation, le type d’appareil, le nombre et le type d’erreurs et, si nécessaire, l’information que la formation a été complétée avec succès. Une fois la formation terminée, les données sont immédiatement envoyées via l’API FHIR au serveur cloud intersystème FHIR natif à l’aide du magasin de données structurées HL7. À partir de là, les données sont actuellement transférées vers notre application ou vers le système RH ou les systèmes de planification dans les hôpitaux. L’utilisation du serveur cloud FHIR d’InterSystems comme outil de stockage des données de progression de l’entraînement dans UCI VR et de l’API FHIR pour la communication a également eu un impact positif sur notre entrée sur les marchés étrangers, en particulier en Allemagne, où fhir est une solution largement acceptée pour le transfert d’informations RH et® la communication avec des systèmes de planification tiers. Réalisation de la vision L’objectif de UCI® vr est de fonctionner comme une plate-forme où l’hôpital sélectionne des appareils 3D à partir d’un catalogue de ceux qu’il utilise réellement et crée un environnement de formation à partir de ceux-ci. La vision que nous avons présentée aux fabricants de dispositifs médicaux a été initialement soutenue par BBraun, Fresenius et Linet. D’autres entreprises ont ensuite suivi l’exemple de ces pionniers audacieux. Nous élargissons également notre portefeuille d’appareils en fonction des marchés sur lesquels nous pénétrons. Actuellement, nous avons des associés aux États-Unis, en Asie et en Amérique du Sud qui complètent l’information et négocient avec les fabricants. Présentation de l’UCI vr lors® de conférences mondiales. Grâce à notre collaboration avec InterSystems, nous avons eu l’occasion de participer à l’InterSystems Global Summit 2022 à Seattle et nous nous préparons actuellement pour HLTH 2022 à Las Vegas. UCI® vr a remporté de nombreux prix, plus récemment à Linz, en Autriche, où nous avons remporté le prix de la meilleure startup grâce à cette solution. Ces présentations réussies attirent l’attention des investisseurs. Nous accueillons les références à ceux qui voudraient aller plus loin dans notre produit. Nous prévoyons de vendre des licences aux hôpitaux tchèques, slovaques et allemands en 2023. Nous accueillons les partenaires commerciaux ainsi que les partenaires qui accéléreraient l’utilisation pratique de l’UCI VR – le processus® d’entrée sur le marché ou qui souhaitent contribuer au développement de la version AI/VR. Êtes-vous intéressé par UCI VR, avez-vous des questions ou des recommandations – envoyez un e-mail au chef de projet et propriétaire du Virtual Lab Leoš Kubíček à leos@virtual-lab.cz Nous serions heureux de vous contacter. mirka@virtual-lab.cz Aller à l’article original écrit par @Andrej Braguca
Article
Lorenzo Scalese · Mai 7

Gestion du système optimisée par l'IA avec IRIS Agent

Introduction À mesure que l'automatisation pilotée par l'IA devient un élément essentiel des systèmes d'information modernes, l'intégration des capacités d'IA dans les plateformes existantes doit être transparente et efficace. Le projet IRIS Agent montre comment l'IA générative peut fonctionner sans effort avec InterSystems IRIS, grâce à son puissant cadre d'interopérabilité, sans qu'il soit nécessaire d'apprendre Python ou de créer des workflows d'IA distincts à partir de zéro.Ce projet examine la manière dont ChatGPT et Anthropic Claude, deux modèles d'IA parmi les plus avancés, peuvent interagir avec IRIS à l'aide de GPT personnalisés et du protocole MCP (Model Context Protocol). Plutôt que de créer des pipelines d'IA isolés, IRIS Agent traite l'IA comme un service d'interopérabilité, permettant ainsi aux organisations d'améliorer l'automatisation, la prise de décision et le traitement des données sans perturber leur architecture existante.En s'appuyant sur des outils d'interopérabilité natifs d'IRIS, les développeurs peuvent intégrer des modèles d'IA de manière transparente, comme n'importe quel autre composant du système. Cette approche garantit la stabilité, la sécurité, l'évolutivité et l'auditabilité, tout en permettant une interaction en langage naturel, la récupération de données en temps réel et l'administration automatisée du système, le tout dans l'environnement familier d'IRIS. Technologies sous-jacentes à IRIS Agent Le projet IRIS Agent s'appuie sur un ensemble de technologies puissantes pour garantir efficacité, évolutivité et intégration transparente: InterSystems IRIS – Une plateforme robuste dédiée au développement d'applications et à l'intégration de données, qui utilise ObjectScript pour le code côté serveur. Custom GPT Bot – Un assistant IA personnalisé conçu pour rationaliser les interactions avec le système, basé sur ChatGPT. Claude AI Desktop – Facilite la communication avec le serveur via le protocole MCP (Model Context Protocol). Node.js – Gère les communications avec le serveur MCP OpenAPI – Documentation API standardisée. Docker – Compartimente l'application pour simplifier le déploiement et la gestion des dépendances. Présentation interne Voici à quoi ressemble notre projet sous le capot IRIS: La Production comprend les éléments suivants: LanguageModelIn: un service qui reçoit une requête API et la redirige vers l'opération responsable. Meds: une opération qui recherche des médicaments sur une API tierce. Metrics: une opération qui recherche des informations OPS telles que les journaux, les erreurs et les messages dans le système Iris. Namespaces: une opération qui répertorie, recherche et modifie les espaces de noms dans le système Iris. Users: une opération qui répertorie, recherche, crée et supprime des utilisateurs dans le système Iris. Le fonctionnement du service est particulièrement visible dans l'afficheur de messages et les traces. Il peut nous aider à suivre les opérations et à diagnostiquer les problèmes, par exemple les requêtes: …et les réponses: L'un des points forts de ce projet réside dans le fait que le service LanguageModelIn génère automatiquement une documentation API ouverte pour les opérations métier dans le cadre de la production IRIS Interoperability. Cette API nous permet de connecter facilement les GPT personnalisés à ChatGPT et au serveur MCP (Model Context Protocol) à Claude AI Desktop. Intégration avec ChatGPT Après avoir terminé tous les processus d'installation et de configuration, que vous trouverez dans notre fichier ReadMe, ReadMe, demandons à notre agent IRIS GPT d'OpenAI quelles sont ses fonctionnalités actuelles: Et créez un nouvel utilisateur… Vérification des mises à jour... Intégration avec des Sources de données externes L'une des fonctionnalités remarquables de l'agent IRIS est sa capacité à interroger de manière transparente non seulement les données stockées dans la base de données InterSystems IRIS, mais également des sources de données externes. Dans notre exemple, l'agent s'intègre à l'OpenFDA API pour fournir des informations en temps réel sur les médicaments. Cela permet aux utilisateurs de rechercher des informations sur les médicaments, des rapports de sécurité et des données de conformité réglementaire directement dans le système. Dans notre projet, l'API offre la possibilité de rechercher des médicaments par leur nom. Recherchons donc les médicaments dont le nom contient le mot "flu". Si vous souhaitez l'essayer dès maintenant, suivez le lien et engagez une conversation avec notre IRIS Agent démo. Intégration avec Claude AI Desktop L'une des fonctionnalités clés de l'agent IRIS est sa capacité à interagir avec Claude AI Desktop, un assistant IA local développé par Anthropic. L'intégration est assurée par le protocole MCP (Model Context Protocol), qui facilite la communication entre Claude et les applications externes. Pour ce faire, l'agent IRIS utilise un serveur MCP Node.js dédié qui sert d'intermédiaire, traitant les requêtes entrantes et les acheminant entre Claude et le système IRIS.Cette configuration permet aux utilisateurs d'interagir directement avec l'agent IRIS via l'interface Claude, en émettant des commandes en langage naturel pour récupérer des données système, gérer les configurations et exécuter des tâches administratives. Le serveur MCP garantit un échange de données fluide, tout en maintenant l'efficacité et la sécurité, et fournit aux administrateurs un assistant puissant basé sur l'IA pour la gestion du système. Conclusion Le projet IRIS Agent présente le potentiel de l'automatisation pilotée par l'IA dans les environnements d'entreprise modernes. En intégrant de manière transparente InterSystems IRIS, Claude AI et Custom GPT, il simplifie la gestion des systèmes, améliore l'efficacité et ouvre la voie à de futures innovations. Notre projet démontre également que vous êtes déjà prêt pour la révolution de l'IA avec InterSystems IRIS! Si vous avez apprécié la découverte d'IRIS Agent et de ses fonctionnalités et que vous souhaitez nous soutenir, veuillez prendre quelques instants pour voter pour notre application ici https://openexchange.intersystems.com/contest/40. Je vous remercie! Développeurs de projet: Backend: Elena Karpova Backend: Georgii Tatevosian AQ: Alena Krasinskiene Banksia Global est une société de conseil technologique de premier plan qui aide les organisations à exploiter pleinement le potentiel des solutions modernes de gestion des données. En mettant l'accent sur la plateforme InterSystems IRIS, Banksia Global fournit des conseils stratégiques, des services d'intégration de systèmes et de développement de logiciels personnalisés à des clients issus de divers secteurs. Son expertise réside dans la fourniture de solutions hautement performantes et évolutives qui permettent aux entreprises de stimuler l'innovation, de rationaliser leurs opérations et de saisir de nouvelles opportunités. Réputée pour son approche collaborative et agile, Banksia Global travaille en étroite collaboration avec ses clients afin de s'assurer que chaque solution est adaptée à leurs besoins spécifiques, favorisant ainsi des partenariats à long terme et une croissance durable.
Article
Irène Mykhailova · Avr 18, 2022

Accès aux bases de données NoSQL avec l'API native Python

Vous avez probablement entendu parler des bases de données NoSQL. Il existe plusieurs définitions, mais pour simplifier, ce terme est couramment utilisé pour désigner les bases de données qui n'utilisent littéralement pas le langage SQL, c'est-à-dire les bases de données autres que les bases de données relationnelles (RDB). InterSystems IRIS Data Platform vous permet de définir des tableaux et d'accéder aux données en SQL. Par conséquent, InterSystems IRIS Data Platform n'est pas strictement une base de données NoSQL. Cependant, les " Globales " à l'origine des hautes performances d'InterSystems IRIS sont une technologie de base d'InterSystems depuis 40 ans, fournissant ce que nous appellerions aujourd'hui une base de données NoSQL. Cet article montre comment créer des structures graphiques dans les "Globales" InterSystems IRIS et y accéder en Python. ## NoSQL Il y a des bases de données classées comme NoSQL qui traitent une variété de modèles de données. Des exemples typiques sont énumérés ci-dessous. * **Key-Value**: Maintient la correspondance entre les clés et les valeurs. Une base de données typique : [Redis](https://redis.io) * **Document**: JSON ou XML sont utilisés comme modèle de données. Une base de données typique : [MongoDB](https://www.mongodb.com) * **Graph**: Un modèle de structure de graphe comprenant des sections et des nœuds. Une base de données typique : [Neo4j](https://neo4j.com) Il existe une multitude d'autres produits et modèles de données.  ### Historique de NoSQL Pourquoi NoSQL est-il apparu et pourquoi est-il devenu si populaire ? Dans cet article, nous souhaiterions citer les raisons suivantes. * **Les structures de données qui ne peuvent pas être représentées naturellement au moyen de tableaux**: Théoriquement, toute structure de données peut être représentée dans un tableau et accessible par SQL, mais il peut y avoir des problèmes tels que la complexité SQL et des performances médiocres. Dans de tels cas, il est préférable d'utiliser un modèle de données adapté à la structure plutôt qu'un tableau. * **Optimisation pour les environnements distribués**:L'un des domaines où l'utilisation de NoSQL a pris de l'ampleur est celui de l'infrastructure des services de réseaux sociaux tels que Facebook. Pour prendre en charge de grandes quantités de données, de nombreux utilisateurs et une haute disponibilité, il est essentiel de distribuer la base de données. Les RDB ne fonctionnent pas toujours de manière optimale dans un environnement distribué. L'approche transactionnelle et sous-transactionnelle de la RDB, décrite ci-dessous, est également un facteur qui rend difficile sa mise en œuvre dans un environnement distribué. * **Demande de traitement d'une transaction**:Le traitement des transactions et l'intégrité des données sont des fonctions dans lesquelles les RDBs possèdent des points forts. Il va sans dire qu'un support strict du traitement des transactions et de l'intégrité des données est essentiel pour les systèmes qui gèrent les comptes bancaires, par exemple. Cependant, le maintien de l'intégrité des données dans le traitement des transactions est très difficile à mettre en œuvre dans un environnement distribué, notamment en ce qui concerne la compatibilité avec les performances. Par conséquent, si vous souhaitez donner la priorité à l'amélioration des performances et de la disponibilité dans un environnement distribué plutôt qu'au maintien d'une cohérence stricte, NoSQL pourrait mieux répondre à vos besoins que RDB. ## Globales InterSystems IRIS utilise une structure de données appelée Globales au cœur de la base de données. Les Globales sont modélisées comme des variables de tableau, comme le montre la figure suivante. ![](/sites/default/files/inline/images/images/image(816).png) Les Globales n'ont pas besoin d'être définies préalablement (sans schéma), ce qui permet une conception très souple des structures de données. En outre, les données sont toujours triées par ordre d'indice (clé), tant sur le disque que dans le cache mémoire, ce qui localise et accélère l'accès aux données et évite la fragmentation. Bien que les Globales aient la forme de variables de tableau, ils peuvent en fait être utilisés dans IRIS ObjectScript, qui est un langage de script pour IRIS, avec presque la même syntaxe que les variables en mémoire, ce qui améliore les perspectives de développement de programmes. Pour plus d'informations sur les Globales, voir la section [Global Usage Documentation](https://docs.intersystems.com/iris20201/csp/docbookj/Doc.View.cls?KEY=GGBL). ## Accès en utilisant Python Voici un exemple de manipulation de Globales en utiisant Python à l'aide de [Python Native API](https://docs.intersystems.com/iris20201/csp/docbookj/Doc.View.cls?KEY=BPYNAT). Nous utiliserons les données "WikiSpeedia" de [SNAP](https://snap.stanford.edu/data/#web) à l'Université de Standford comme point de départ. WikiSpeedia est un jeu dans lequel les joueurs s'affrontent pour voir à quelle vitesse ils peuvent atteindre un mot cible à partir d'un mot donné en suivant uniquement les liens Wikipédia. SNAP compte environ 110 000 liens suivis par des utilisateurs réels, qui sont stockés globalement dans InterSystems IRIS. ### Structure du graphe Cette section décrit la structure du graphe. ![](/sites/default/files/inline/images/images/image(817).png) La figure suivante présente les principes de base de la structure d'un graphe. Un graphe est constitué de nœuds et d'arêtes. Une arête relie deux nœuds. Par exemple, une relation d'amitié sur Facebook peut être représentée par nœud = utilisateur, arête = relation d'amitié. Une structure de données pouvant être utilisée pour la recherche d'itinéraires est aussi réalisable en définissant le nœud = station, l'arête = station voisine de la précédente station, et la caractéristique de l'arête = distance entre les stations. Dans l'exemple de ce document, la structure du graphe est utilisée comme suit : nœud = article Wikipédia (mot-clé) et arête = relation entre l'article original et l'article lié vers lequel l'utilisateur de WikiSpeedia a cliqué. ### Structure des Globales Examinons la structure des Globales. ^Links("Tokyo", "18th_century")="" ^Links("Tokyo", "London")="" ^Links("Osaka", "Aquarium")="" Par exemple, la ligne supérieure indique que l'utilisateur a cliqué sur un lien à partir de l'article "Tokyo" vers l'article "18th_century". La troisième ligne indique que l'utilisateur a cliqué à partir de "Osaka" vers "Aquarium". Les Globales sont optimisées pour un accès de gauche à droite aux souscripteurs (clés). Ainsi, le ^Links("Article original", "Cliquer sur l'article")="" est optimale. En outre, dans ce cas, la valeur est "", mais si vous voulez que les arêtes aient un certain attribut, vous pouvez le définir sur une valeur globale. ### Code Python Cette section décrit le code Python. D'abord, c'est import. import irisnative import networkx as nx Pour utiliser l'API native Python, importez le module irisnative. Ce module est un fichier .whl placé dans le répertoire dev/python lors de l'installation d'IRIS et installé dans l'environnement python avec la commande pip. De plus, comme [NetworkX](https://networkx.github.io) est utilisé pour maintenir la structure du graphe, importez-le également. connection = irisnative.createConnection("localhost", 9091, "user", "horita","horita") iris_native = irisnative.createIris(connection) Dans ces deux lignes, createConnection() établit la connexion à IRIS et createIris() crée l'objet d'interface pour les opérations globales. def addNodes(key, g, d):     g.add_node(key)     if d > 3:         return          iter = iris_native.iterator("Links", key)     nodelist = [k for k,v in iter.items()]   Limité à 3 liens à suivre pour des raisons de démonstration     random.shuffle(nodelist)     nodelist = nodelist[0:3]     edgelist = [(key, n) for n in nodelist]     g.add_nodes_from(nodelist)     g.add_edges_from(edgelist)          for subk in nodelist:         addNodes(subk, g, d + 1) Définition de la fonction addNodes(). Cette fonction construit une structure de graphe en tant qu'objet NetworkX en suivant les liens des noeuds dans un graphe donné. Des appels récursifs sont utilisés pour traverser le troisième niveau de la hiérarchie. Le point principal ici est     iter = iris_native.iterator("Links", key)     nodelist = [k for k,v in iter.items()] Dans iris_native.iterator("Links", key), l'API native Python crée un itérateur pour l'indice. Par exemple, key='Tokyo' serait un itérateur qui itère sur la chaîne dans la partie \* de ^Links("Tokyo", \*). L'itérateur est ensuite répété dans Python pour créer une liste. Comme vous pouvez le constater, l'itérateur de la globale s'intègre parfaitement au modèle itératif de Python, ce qui permet d'obtenir un code simple. curkey = 'Tokyo' G = nx.Graph() addNodes(curkey, G, 1) Ensuite, addNodes() est appelé en prenant le mot "Tokyo" comme clé. Cela nous donnera l'enchaînement des liens tracés à partir du mot "Tokyo". Il est montré dans la figure suivante. ![](/sites/default/files/inline/images/images/image(818).png) Le réseau des mots cliqués à partir du mot "Tokyo" est ainsi représenté. ## Conclusion Les globales d'InterSystems IRIS sont une force avec laquelle il faut compter dans les cas où une base de données NoSQL est la base de données de choix. En outre, l'API native Python vous permet de manipuler les globales de manière naturelle à partir de vos programmes Python. Nous vous encourageons à l'essayer. Par ailleurs, nous serions très heureux si vous pouviez écrire vos questions dans les commentaires de cet article.
Annonce
Robert Bira · Mai 7, 2022

Annonce de SAM (System Alerting & Monitoring) 1.1

InterSystems a le plaisir d'annoncer la sortie de la version 1.1 de System Alerting & Monitoring (SAM). Qu'est-ce que SAM ? SAM combine l'API de surveillance et le moniteur de journal basés sur les normes d'IRIS avec des outils standard familiers de l'industrie comme Grafana et Prometheus pour créer une solution de surveillance et d'alerte de base pour les clusters IRIS. Pour plus d'informations sur SAM, consultez le Guide d'alerte et de surveillance du système. Quoi de neuf dans SAM 1.1 ? Vous remarquerez des améliorations de performances pour les graphiques du tableau de bord Grafana, en particulier lorsque vous travaillez avec de grands ensembles de données. Si vous effectuez une mise à niveau à partir de SAM 1.0, vous devez vous assurer que vous disposez de suffisamment d'espace disque disponible, car SAM 1.1 ajoute des indices supplémentaires aux données. Consultez les notes de version pour plus d'informations sur la mise à niveau vers SAM 1.1. Écran d'accueil de SAM Page Détails de l'instance de SAM
Article
Sylvain Guilbaud · Mars 10, 2023

FHIR server template

Ce Template s'agit du modèle de base pour utiliser InterSystems IRIS for Health Community Edition en tant que serveur FHIR. Il configure un SERVEUR FHIR, importe les données de test, fait la démonstration de l'utilisation de l'API REST avec une simple page web. Conditions préalables Assurez-vous que vous avez installé git et Docker desktop. Installation IPM 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") Docker (par exemple à des fins de dév) 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 Données sur le patient Le modèle est livré avec 5 brevets préchargés dans le dossier /data/fhir qui sont téléchargés pendant la construction de docker (docker build). Vous pouvez générer plus de patients en procédant comme suit. Ouvrez un terminal shel dans le dossier du référentiel et appelez : #./synthea-loader.sh 10 ainsi, 10 patients supplémentaires seront créés dans le dossier data/fhir. Ensuite, ouvrez le terminal IRIS dans l'espace de noms FHIRSERVER avec la commande suivante : docker-compose exec iris iris session iris -U FHIRServer et appeler la méthode de chargement : FHIRSERVER>d ##class(fhirtemplate.Setup).LoadPatientData("/irisdev/app/output/fhir","FHIRSERVER","/fhir/r4") en utilisant le projet suivant Test de l'API FHIR R4 En ouvrant l'URL http://localhost:32783/fhir/r4/metadata vous devriez voir la sortie des ressources fhir sur ce serveur Test des appels Postman Appel GET des métadonnées des ressources fhir pour http://localhost:32783/fhir/r4/metadata Ouvrez Postman et effectuez un appel GET pour le patient préchargé : http://localhost:32783/fhir/r4/Patient/1 Test des appels de l'API FHIR dans une application de l'interface simple l'application de l'interface très basique avec des appels de recherche et d'obtention aux ressources FHIR Patient et Observation peut être trouvée ici : http://localhost:32783/fhirUI/FHIRAppDemo.html ou à partir du menu VSCode ObjectScript : En ouvrant la page, les résultats de la recherche de patientes anémiques s'affichent ainsi que les graphiques des valeurs d'hémoglobine d'une patiente sélectionnée : Ressources de Développement InterSystems IRIS FHIR Documentation FHIR API Developer Community FHIR section Comment lancer le développement Ce référentiel est prêt à être codé dans VSCode avec le plugin ObjectScript. Installez VSCode, Docker et le plugin ObjectScript et ouvrez le dossier dans VSCode. Ouvrez la classe /src/cls/PackageSample/ObjectScript.cls et essayez d'y apporter des modifications - elle sera compilée dans le conteneur docker IRIS en cours d'exécution. N'hésitez pas à supprimer le dossier PackageSample et à placer vos classes ObjectScript dans un formulaire /src/Package/Classname.cls En savoir plus sur la configuration des dossiers pour InterSystems ObjectScript Le script dans Installer.cls importera tout ce que vous placez sous /src dans IRIS. Contenu du référentiel Dockerfile Le dockerfile le plus simple qui lance IRIS et importe Installer.cls, et qui exécute ensuite la méthode Installer.setup, laquelle crée l'espace de nom IRISAPP et y importe le code ObjectScript du dossier /src. Utilisez le fichier docker-compose.yml correspondant pour configurer facilement des paramètres supplémentaires tels que le numéro de port et l'emplacement des clés et des dossiers d'hôte. Utilisez le fichier .env/ pour ajuster le dockerfile utilisé dans docker-compose. .vscode/settings.json Fichier de configuration pour vous permettre de coder immédiatement en VSCode avec le plugin VSCode ObjectScript. .vscode/launch.json Fichier de configuration si vous voulez déboguer avec VSCode ObjectScript Dépannage ERROR #5001: Error -28 Creating Directory /usr/irissys/mgr/FHIRSERVER/ Si vous voyez cette erreur pendant la création de dossiers, cela signifie probablement que vous avez manqué d'espace dans docker. vous pouvez le nettoyer avec la commande suivante : docker system prune -f Et ensuite commencer à reconstruire l'image sans utiliser le cache : docker-compose build --no-cache et lancez le conteneur avec: docker-compose up -d Cette commande et d'autres commandes utiles peuvent être trouvées dans dev.md
Annonce
Irène Mykhailova · Août 11, 2022

Senior Software Developer: International Healthcare

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

Appel de classmethods avec Native API pour Python

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

Débogage du code ObjectScript à l'aide de VSCode

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 : ![](/sites/default/files/inline/images/images/image(4687).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 : ![](/sites/default/files/inline/images/images/image(4688).png) 5.    Sélectionnez Toggle Connection pour activer la connexion actuelle : ![](/sites/default/files/inline/images/images/image(4689).png) 6.    Après avoir activé cette connexion, vous obtiendrez la connexion indiquée ci-dessous : ![](/sites/default/files/inline/images/images/image(4690).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 : ![](/sites/default/files/inline/images/images/image(4691).png) 8.    Ouvrez Person.cls, allez à la ligne numéro 25 et pointez la souris sur le chiffre 25 à votre gauche. ![](/sites/default/files/inline/images/images/image(4692).png) 9.    Maintenant, pointez la souris sur la ClassMethod supérieure et cliquez sur "Debug this method" (Débugger cette méthode) : ![](/sites/default/files/inline/images/images/image(4693).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 : ![](/sites/default/files/inline/images/images/image(4694).png) 11.    VSCode va interrompre l'exécution du code à la ligne 25 : ![](/sites/default/files/inline/images/images/image(4695).png) 12.    Maintenant, en haut à gauche, vous pouvez voir les valeurs actuelles des variables.   ![](/sites/default/files/inline/images/images/image(4696).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.   ![](/sites/default/files/inline/images/images/image(4697).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.   ![](/sites/default/files/inline/images/images/image(4698).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 : ![](/sites/default/files/inline/images/images/image(4699).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) : ![](/sites/default/files/inline/images/images/image(4700).png) 17.    Vous pouvez maintenant surveiller ou modifier la valeur actuelle de la variable de résultat dans la section WATCH : ![](/sites/default/files/inline/images/images/image(4701).png) 18.    Enfin, la barre de bas de page est orange, et elle indique le débogage : ![](/sites/default/files/inline/images/images/image(4702).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 : ![](/sites/default/files/inline/images/images/image(4703La 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 :).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 : ![](/sites/default/files/inline/images/images/image(4704).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) : ![](/sites/default/files/inline/images/images/image(4705).png) 2.    Fixez des points d'arrêt sur les lignes de version HANG et SET (cercles rouges) : ![](/sites/default/files/inline/images/images/image(4706).png) 3.    Ouvrez un client HTTP pour appeler une méthode REST (je vais appeler GetInfo de la classe PersonREST) : ![](/sites/default/files/inline/images/images/image(4707).png) 4.    Définissez Basic Auth sur Authorization (nom d'utilisateur _SYSTEM et mot de passe SYS) : ![](/sites/default/files/inline/images/images/image(4708).png) 5.    Envoyer un GET http://localhost:52773/crud/. 6.    Cliquez sur ObjectScript Attach dans la barre de bas de page : ![](/sites/default/files/inline/images/images/image(4709).png) 7.    Sélectionnez Attachement ObjectScript : ![](/sites/default/files/inline/images/images/image(4710).png) 8.    Sélectionnez le processus PersonREST : ![](/sites/default/files/inline/images/images/image(4719).png) 9.    Attendez quelque temps (environ 30 secondes) pour que VSCode interrompe l'exécution en cours sur le point d'arrêt : ![](/sites/default/files/inline/images/images/image(4712).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 : ![](/sites/default/files/inline/images/images/image(4713).png) 2.    Saisissez l'expression mentionnée ci-dessous et appuyez sur Entrée : ![](/sites/default/files/inline/images/images/image(4714).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 : ![](/sites/default/files/inline/images/images/image(4715).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/): ![](/sites/default/files/inline/images/images/image(4716).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 : ![](/sites/default/files/inline/images/images/image(4717).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

Dans quels cas utiliser le stockage en colonne

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

Liste des utilitaires disponibles dans IRIS

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 ![enlightened](https://jp.community.intersystems.com/sites/all/libraries/ckeditor/plugins/smiley/images/lightbulb.png "enlightened") 【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  ![enlightened](https://jp.community.intersystems.com/sites/all/libraries/ckeditor/plugins/smiley/images/lightbulb.png "enlightened") 【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. ![enlightened](https://jp.community.intersystems.com/sites/all/libraries/ckeditor/plugins/smiley/images/lightbulb.png "enlightened") 【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.  ![enlightened](https://jp.community.intersystems.com/sites/all/libraries/ckeditor/plugins/smiley/images/lightbulb.png "enlightened") 【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. ![enlightened](https://jp.community.intersystems.com/sites/all/libraries/ckeditor/plugins/smiley/images/lightbulb.png "enlightened") 【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. ![enlightened](https://jp.community.intersystems.com/sites/all/libraries/ckeditor/plugins/smiley/images/lightbulb.png "enlightened") 【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. ![enlightened](https://jp.community.intersystems.com/sites/all/libraries/ckeditor/plugins/smiley/images/lightbulb.png "enlightened") 【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 ![enlightened](https://jp.community.intersystems.com/sites/all/libraries/ckeditor/plugins/smiley/images/lightbulb.png "enlightened") 【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  ![enlightened](https://jp.community.intersystems.com/sites/all/libraries/ckeditor/plugins/smiley/images/lightbulb.png "enlightened") 【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. ![enlightened](https://jp.community.intersystems.com/sites/all/libraries/ckeditor/plugins/smiley/images/lightbulb.png "enlightened") 【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 ![enlightened](https://jp.community.intersystems.com/sites/all/libraries/ckeditor/plugins/smiley/images/lightbulb.png "enlightened") 【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. ![enlightened](https://jp.community.intersystems.com/sites/all/libraries/ckeditor/plugins/smiley/images/lightbulb.png "enlightened") 【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é ![enlightened](https://jp.community.intersystems.com/sites/all/libraries/ckeditor/plugins/smiley/images/lightbulb.png "enlightened") 【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   ![enlightened](https://jp.community.intersystems.com/sites/all/libraries/ckeditor/plugins/smiley/images/lightbulb.png "enlightened") 【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> ![enlightened](https://jp.community.intersystems.com/sites/all/libraries/ckeditor/plugins/smiley/images/lightbulb.png "enlightened") 【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. ![enlightened](https://jp.community.intersystems.com/sites/all/libraries/ckeditor/plugins/smiley/images/lightbulb.png "enlightened") 【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 ![enlightened](https://jp.community.intersystems.com/sites/all/libraries/ckeditor/plugins/smiley/images/lightbulb.png "enlightened") 【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

Bulk FHIR, étape par étape

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

Hacking Health Camp 2022 (jour 3)

[![HHC-banner](https://user-images.githubusercontent.com/9782856/160275986-23d44669-121f-47d0-a1af-2ae9f0ab1fcd.png)](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. ![IMG_20220327_103941](https://user-images.githubusercontent.com/9782856/160276591-258242ea-2267-4539-baa1-3dbde46a316e.jpg) Nos coachs se sont reuni plus tard dans la matinée pour discuter et échanger les nouvelles. ![IMG_20220327_105236](https://user-images.githubusercontent.com/9782856/160276617-35e1c388-cc0b-4133-b5ca-54e182850893.jpg) *MIS A JOUR 16:00:* Les équipes ont terminé leurs présentations et le jury délibère. ![image](https://user-images.githubusercontent.com/9782856/160359544-d5680599-479a-4869-bda9-37d38d2bf3f5.png) ![image](https://user-images.githubusercontent.com/9782856/160359624-5fb0418e-7c60-45d6-864c-56bc8c34b089.png) *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. ![image](https://user-images.githubusercontent.com/9782856/160360904-e8e245f5-1b8c-4dfb-8322-80f72914c586.png) 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. ![image](https://user-images.githubusercontent.com/9782856/160361845-467ba356-47e6-44af-bd5a-ad3603a969fd.png) Et nous avons encore une fois félicité l'équipe qui a remporté notre prix ! ![image](https://user-images.githubusercontent.com/9782856/160362188-b266806e-5847-4a21-940c-26ca1df71cc3.png) 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

Mise à jour de la politique de gestion des vulnérabilités

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.