La balise Concours regroupe les publications liées à tout concours de codage qui se déroule sur la communauté des développeurs d'InterSystems.
La balise Concours regroupe les publications liées à tout concours de codage qui se déroule sur la communauté des développeurs d'InterSystems.
Salut les développeurs,
Nous avons des nouvelles passionnantes ! Le nouveau concours de programmation en ligne InterSystems dédié à tout ce qui touche à la santé débutera très prochainement !
🏆 Concours InterSystems FHIR et interopérabilité de la santé numérique 🏆
Durée : 15 janvier - 4 février 2024
Prix : 14 000 $
Bonjour la communauté,
Il est temps d'annoncer les gagnants du concours de programmation d'InterSystems sur Java !
Merci à tous nos incroyables participants qui ont soumis 13 applications🔥
(1).jpg)
Salut la communauté,
C'est l'heure de voter ! Soumettez vos votes pour les meilleures applications de notre concours de programmation d'InterSystems sur Java :
🔥 VOTEZ POUR LES MEILLEURES APPLICATIONS 🔥
(2).jpg)
Comment voter ? Détails ci-dessous.
Salut les développeurs,
Nous sommes très heureux de vous inviter tous au nouveau concours de programmation en ligne InterSystems sur Java et ses dérivés !
🏆 Concours de programmation d'InterSystems sur Java 🏆
La durée : 13 novembre - 3 décembre, 2023
Le prix : $14,000
.jpg)
Salut la Communauté,
Il est temps d'annoncer les gagnants du concours de développement Python InterSystems 2023 !
Merci à tous nos incroyables participants qui ont soumis 15 applications 🔥
%20(3).jpg)
.png)
FHIR a transformé le secteur des soins de santé en fournissant un modèle de données normalisé pour la création d'applications de soins de santé et en favorisant l'échange de données entre les différents systèmes de soins de santé. La norme FHIR est basée sur des approches modernes axées sur les API, ce qui la rend plus accessible aux développeurs mobiles et web. Cependant, l'interaction avec les API FHIR peut encore s'avérer difficile, en particulier lorsqu'il s'agit de requêter des données à l'aide du langage naturel.
Nous présentons l'application Chaîne OpenAPI et IA - FHIR une solution qui permet aux utilisateurs d'interagir avec les API FHIR à l'aide de requêtes en langage naturel. Conçue avec OpenAI, LangChain et Streamlit, cette application simplifie le processus d'interrogation des API FHIR et le rend plus facile à utiliser.
Les spécifications OpenAPI (anciennement connues sous le nom de "Swagger" et faisant actuellement partie de l'" Initiative OpenAPI " (https://www.openapis.org/)) sont devenues un outil essentiel dans le monde du développement logiciel, permettant aux développeurs de concevoir, de documenter et d'interagir avec les API de manière plus efficace. Les spécifications OpenAPI définissent un format normalisé, lisible par une machine, pour décrire les API RESTful, offrant ainsi un moyen clair et cohérent de comprendre leurs capacités et de les utiliser de manière efficace.
Dans le domaine des soins de santé, FHIR s'est imposé comme une norme de premier plan pour l'échange de données et l'interopérabilité. Pour améliorer les capacités d'interopérabilité de FHIR, HL7 a officiellement documenté les spécifications OpenAPI de FHIR, qui permettent aux développeurs d'intégrer de manière transparente les ressources et les opérations FHIR dans leurs solutions logicielles.
L'application Chaîne OpenAPI et IA - FHIR s'appuie sur LangChain pour charger et analyser les spécifications OpenAPI (Chaîne OpenAPI). Ensuite, sur la base de ces spécifications, la chaîne d'invites fournies par OpenAI vise à comprendre les requêtes en langage naturel et à les convertir en demandes d'API FHIR appropriées. Les utilisateurs peuvent poser des questions en langage naturel et l'application interagira avec l'API FHIR choisie pour récupérer les informations pertinentes.
Par exemple, un utilisateur peut demander : "Quelle est la dernière mesure de la tension artérielle du patient John Doe (ID 111) ?" L'application traduira alors cette requête en une demande d'API FHIR, récupérera les données requises et les présentera à l'utilisateur dans un format facilement compréhensible.
Pour commencer à utiliser l'application Chaîne OpenAPI et IA - FHIR, suivez les étapes suivantes :

Grâce à l'intégration de capacités d'IA et de traitement du langage naturel, l'application haîne OpenAPI et IA - FHIR offre un moyen plus intuitif pour interagir avec les API FHIR, rendant les données de santé plus accessibles et plus faciles à analyser pour les utilisateurs de tous niveaux techniques.
Votez pour notre application dans le cadre du concours Grand Prix si vous la trouvez pertinente !
Si vous pensez à des applications qui pourraient utiliser cette implémentation, n'hésitez pas à les partager dans le fil de discussion.
Salut la Communauté,
C'est l'heure des votes ! Votez pour les meilleures candidatures de notre InterSystems Python Programming Contest 2023:
🔥 VOTEZ POUR LES MEILLEURES APPS 🔥
%20(3)(1).jpg)
Comment voter? Les détails ci-dessous.
Salut les développeurs !
Voici les bonus technologiques pour le Concours Python InterSystems 2023 qui vous donneront des points supplémentaires lors du vote :
Salut les développeurs,
Le concours annuel pour les développeurs d'InterSystems IRIS approche !
Nous sommes ravis de vous inviter tous à participer au concours Grand Prix pour la création de solutions open source à l'aide de la plate-forme de données InterSystems IRIS !
🏆 Concours de programmation Grand Prix InterSystems 2023 🏆
La durée: 12 juin - 9 juillet, 2023
Le prix: $26,000
(1).jpg)
Suite à la partie précédente, il est temps de tirer parti de l'instruction de VALIDATION DU MODÈLE IntegratedML, qui fournit des informations permettant de surveiller vos modèles ML. Vous pouvez la voir en action ici
Le code présenté ici est dérivé d'exemples fournis par le modèle InterSystems IntegratedML ou la documentation IRIS, documentation
Remarque: Le code présenté ici n'a qu'une valeur explicative. Si vous souhaitez l'essayer, j'ai développé une application modèle - iris-integratedml-monitor-example, qui participe au concours IA d'InterSystems IRIS (InterSystems IRIS AI Contest). S'il vous plaît, après avoir lu cet article, vous pouvez le consulter et, si vous l'aimez, votez pour moi! :)
Pour surveiller votre modèle ML, vous aurez besoin d'au moins deux fonctions :
Heureusement, IRIS nous fournit ces deux caractéristiques nécessaires.
Comme nous l'avons vu dans la partie précédente, IntegratedML fournit l'instruction VALIDER LE MODÈLE pour calculer les paramètres de performance suivants :
Remarque: ces définitions ne sont pas formelles, elles sont même assez superficielles ! Je vous encourage à prendre le temps de les interpréter.
Ce qui est intéressant, c'est qu'à chaque fois que vous appelez VALIDER LE MODÈLE (VALIDATE MODEL), IntegrateML enregistre sa mesure de performance, et nous pouvons tirer parti de cette fonctionnalité pour la surveiller.
InterSystems IRIS fournit le framework du Moniteur de Système pour traiter les tâches de surveillance. Il vous permet également de définir des règles personnalisées afin de déclencher des notifications basées sur des prédicats appliqués à ces mesures.
Par défaut, un ensemble de mesures est fourni pour le disque, la mémoire, les processus, le réseau, etc. En outre, le Moniteur de Système vous permet également d'étendre les moniteurs pour couvrir une infinité de possibilités. De tels moniteurs personnalisés sont appelés une application de moniteur (Application Monitor) dans la terminologie de moniteur de système (System Monitor).
Vous pouvez obtenir plus d'informations sur le Moniteur de Système ici.
Jusqu'à présent, nous avons un moyen d'obtenir les valeurs des métriques de performance de chaque validation du modèle et, un outil qui pourrait déclencher des alertes basées sur des règles personnalisées appliquées à des sources de métriques personnalisées... Bien, il est temps de les combiner.
Tout d'abord, nous devons créer une classe de moniteur d'application personnalisée, en étendant la classe %Monitor.Abstract et en implémentant les méthodes Initialize et GetSample.
Class MyMetric.IntegratedMLModelsValidation Extends %Monitor.Adaptor
{
/// Initialiser la liste des métriques de validation des modèles.
Method Initialize() As %Status
{
Return $$$OK
}
/// Obtenir un échantillon métrique de routine.
/// Un code de retour de $$$OK indique qu'il y a une nouvelle instance d'échantillon.
/// Tout autre code de retour indique qu'il n'y a pas d'échantillon.
Method GetSample() As %Status
{
Return $$$OK
}
}
Les moniteurs système émettent des appels réguliers aux classes de moniteurs afin d'obtenir un ensemble de mesures appelées échantillons. Ces échantillons peuvent être simplement surveillés ou utilisés pour vérifier si des règles d'alerte doivent être levées. Vous définissez la structure de ces échantillons en définissant des propriétés standard non internes dans la classe monitior. Il est important de souligner ici que vous devez spécifier, dans le paramètre INDEX, l'une de ces propriétés comme clé primaire de chaque échantillon - sinon une erreur de clé dupliquée sera générée.
Class MyMetric.IntegratedMLModelsValidation1 Extends %Monitor.Adaptor
{
Parameter INDEX = "ModelTrainedName";
/// Nom de la définition du modèle
Property ModelName As %Monitor.String;
/// Nom du modèle formé en cours de validation
Property ModelTrainedName As %Monitor.String;
/// Erreur de validation (le cas échéant)
Property StatusCode As %Monitor.String;
/// Précision
Property ModelMetricPrecision As %Monitor.Numeric;
/// Rappel
Property ModelMetricRecall As %Monitor.Numeric;
/// Mesure F
Property ModelMetricFMeasure As %Monitor.Numeric;
/// Exactitude
Property ModelMetricAccuracy As %Monitor.Numeric;
...
}
La méthode Initialize est appelée une fois pour chaque appel de moniteur et la méthode GetSample est appelée jusqu'à ce qu'elle renvoie 0.
Ainsi, nous pourrions mettre en place un SQL sur l'historique de validation d'IntegrateML pour fournir des informations de métriques au moniteur, en implémentant les méthodes Initialize et GetSample :
/// Initialiser la liste des métriques de validation des modèles.
Method Initialize() As %Status
{
// Obtenir la dernière validation pour chaque modèle validé par l'instruction VALIDATION DU MODÈLE
Set sql =
"SELECT MODEL_NAME, TRAINED_MODEL_NAME, STATUS_CODE, %DLIST(pair) AS METRICS_LIST FROM ("_
"SELECT m.*, $LISTBUILD(m.METRIC_NAME, m.METRIC_VALUE) pair, r.STATUS_CODE "_
"FROM INFORMATION_SCHEMA.ML_VALIDATION_RUNS r "_
"JOIN INFORMATION_SCHEMA.ML_VALIDATION_METRICS m "_
"ON m.MODEL_NAME = r.MODEL_NAME "_
"AND m.TRAINED_MODEL_NAME = r.TRAINED_MODEL_NAME "_
"AND m.VALIDATION_RUN_NAME = r.VALIDATION_RUN_NAME "_
"GROUP BY m.MODEL_NAME, m.METRIC_NAME "_
"HAVING r.COMPLETED_TIMESTAMP = MAX(r.COMPLETED_TIMESTAMP)"_
") "_
"GROUP BY MODEL_NAME"
Set stmt = ##class(%SQL.Statement).%New()
$$$THROWONERROR(status, stmt.%Prepare(sql))
Set ..Rspec = stmt.%Execute()
Return $$$OK
}
/// Obtenir un échantillon métrique de routine.
/// Un code de retour de $$$OK indique qu'il y a une nouvelle instance d'échantillon.
/// Tout autre code de retour indique qu'il n'y a pas d'échantillon.
Method GetSample() As %Status
{
Set stat = ..Rspec.%Next(.sc)
$$$THROWONERROR(sc, sc)
// Quitter si nous avons fait tous les jeux de données
If 'stat {
Quit 0
}
// remplir cette instance
Set ..ModelName = ..Rspec.%Get("MODEL_NAME")
Set ..ModelTrainedName = ..Rspec.%Get("TRAINED_MODEL_NAME")_" ["_$zdt($zts,3)_"]"
Set ..StatusCode = ..Rspec.%Get("STATUS_CODE")
Set metricsList = ..Rspec.%Get("METRICS_LIST")
Set len = $LL(metricsList)
For iMetric = 1:1:len {
Set metric = $LG(metricsList, iMetric)
Set metricName = $LG(metric, 1)
Set metricValue = $LG(metric, 2)
Set:(metricName = "PRECISION") ..ModelMetricPrecision = metricValue
Set:(metricName = "RECALL") ..ModelMetricRecall = metricValue
Set:(metricName = "F-MEASURE") ..ModelMetricFMeasure = metricValue
Set:(metricName = "ACCURACY") ..ModelMetricAccuracy = metricValue
}
// quitter avec une valeur de retour indiquant que les données de l'échantillon sont prêtes
Return $$$OK
}
Après avoir compilé la classe de moniteur, vous devez redémarrer le moniteur de système System Monitor afin que le système comprenne qu'un nouveau moniteur a été créé et qu'il est prêt à être utilisé. Pour ce faire, vous pouvez utiliser la routine ^%SYSMONMGR ou la classe %SYS.Monitor.
Jusqu'à présent, nous disposons des outils nécessaires pour collecter, surveiller et émettre des alertes sur les mesures de performance du ML. Il est maintenant temps de définir une règle d'alerte personnalisée et de simuler un scénario dans lequel un modèle ML déployé commence à affecter négativement vos performances.
Tout d'abord, nous devons configurer une alerte par courriel et sa règle de déclenchement. Cela peut être fait à l'aide de la routine ^%SYSMONMGR. Cependant, afin de rendre les choses plus faciles, j'ai créé une méthode d'installation qui définit toute la configuration de l'e-mail et de la règle d'alerte. Vous devez remplacer les valeurs entre <> ; par les paramètres de votre serveur de messagerie et de votre compte.
ClassMethod NotificationSetup()
{
// Régler les paramètres de l'e-mail
Set sender = "<your e-mail address>"
Set password = "<your e-mail password>"
Set server = "<SMTP server>"
Set port = "<SMTP server port>"
Set sslConfig = "default"
Set useTLS = 1
Set recipients = $LB("<comma-separated receivers for alerts>")
Do ##class(%Monitor.Manager).AppEmailSender(sender)
Do ##class(%Monitor.Manager).AppSmtpServer(server, port, sslConfig, useTLS)
Do ##class(%Monitor.Manager).AppSmtpUserName(sender)
Do ##class(%Monitor.Manager).AppSmtpPassword(password)
Do ##class(%Monitor.Manager).AppRecipients(recipients)
// La messagerie électronique comme méthode de notification par défaut
Do ##class(%Monitor.Manager).AppNotify(1)
// Activer les notifications par messagerie électronique
Do ##class(%Monitor.Manager).AppEnableEmail(1)
Set name = "perf-model-appointments-prediction"
Set appname = $namespace
Set action = 1
Set nmethod = ""
Set nclass = ""
Set mclass = "MyMetric.IntegratedMLModelsValidation"
Set prop = "ModelMetricAccuracy"
Set expr = "%1 < .8"
Set once = 0
Set evalmethod = ""
// Créer une alerte
Set st = ##class(%Monitor.Alert).Create(name, appname, action, nmethod, nclass, mclass, prop, expr, once, evalmethod)
$$$THROWONERROR(st, st)
// Relancer le moniteur
Do ##class(MyMetric.Install).RestartMonitor()
}
Dans la méthode précédente, une alerte sera émise si le moniteur obtient des valeurs de précision inférieures à 90 %.
Maintenant que notre règle d'alerte est configurée, créons, formons et validons un modèle de prédiction show/no-show avec les 500 premiers enregistrements et validons-le avec les 600 premiers enregistrements.
Remarque : Le paramètre seed sert uniquement à garantir la reproductibilité (c.-à-d. pas de valeurs aléatoires) et doit normalement être évité en production.
-- Création du modèle
CREATE MODEL AppointmentsPredection PREDICTING (Show) FROM MedicalAppointments USING {\"seed\": 3}
-- Formation à l'aide des 500 premiers enregistrements du jeu de données
TRAIN MODEL AppointmentsPredection FROM MedicalAppointments WHERE ID <= 500 USING {\"seed\": 3}
-- Affichage des informations sur le modèle
SELECT * FROM INFORMATION_SCHEMA.ML_TRAINED_MODELS
| | NOM_DU_MODÈLE | NOM_DU_MODÈLE_FORMÉ | FOURNISSEUR | HORODATAGE_FORMÉ | TYPE_DU_MODÈLE | INFOS_MODÈLE |
|---|------------------------|-------------------------|----------|-------------------------|----------------|---------------------------------------------------|
| 0 | AppointmentsPredection | AppointmentsPredection2 | AutoML | 2020-07-12 04:46:00.615 | classification | ModelType:Logistic Regression, Package:sklearn... |
Notez que IntegrateML, en utilisant AutoML comme fournisseur (colonne FOURNISSEUR), déduit du jeu de données fourni, un modèle de classification (colonne TYPE_DU_MODÈLE), avec l'algorithme de régression logistique, à partir de la bibliothèque scikit-learn (colonne INFOS_MODÈLE). Il est important de souligner ici la règle "Garbage In, Garbage Out" ("à données inexactes, résultats erronés") - c'est-à-dire que la qualité du modèle est directement liée à la qualité des données.
Poursuivons maintenant avec la validation du modèle.
-- CCalculer les performances du modèle en utilisant les 600 premiers enregistrements (500 de l'ensemble formé + 100 pour le test).
VALIDATE MODEL AppointmentsPredection FROM MedicalAppointments WHERE ID < 600 USING {\"seed\": 3}
-- Afficher les mesures de validation
SELECT * FROM INFORMATION_SCHEMA.ML_VALIDATION_METRICS WHERE MODEL_NAME = '%s'
| NOM_MÉTRIQUE | Exactitude | Mesure F | Précision | Rappel |
|--------------------------|----------|-------------|-----------|--------|
| AppointmentsPredection21 | 0.9 | 0.94 | 0.98 | 0.91 |
Le modèle peut être utilisé pour effectuer des prédictions à l'aide de l'instruction PREDICT :
SELECT PREDICT(AppointmentsPredection) As Predicted, Show FROM MedicalAppointments WHERE ID <= 500
| | Prédit | Affiché|
|-----|-----------|-------|
| 0 | 0 | Faux |
| 1 | 0 | Faux |
| 2 | 0 | Faux |
| 3 | 0 | Faux |
| 4 | 0 | Faux |
| ... | ... | ... |
| 495 | 1 | Vrai |
| 496 | 0 | Vrai |
| 497 | 1 | Vrai |
| 498 | 1 | Vrai |
| 499 | 1 | Vrai |
Ensuite, simulons l'ajout de 200 nouveaux enregistrements (pour un total de 800 enregistrements) au modèle de manière à ce que sa précision soit ramenée à 87 %.
-- Calculer les performances du modèle en utilisant les 800 premiers enregistrements.
VALIDATE MODEL AppointmentsPredection FROM MedicalAppointments WHERE ID < **800** USING {\"seed\": 3}
-- Afficher les mesures de validation
SELECT * FROM INFORMATION_SCHEMA.ML_VALIDATION_METRICS WHERE MODEL_NAME = '%s'
| NOM_MÉTRIQUE | Exactitude | Mesure F | Précision | Rappel |
|--------------------------|----------|-----------|-----------|--------|
| AppointmentsPredection21 | 0.9 | 0.94 | 0.98 | 0.91 |
| AppointmentsPredection22 | 0.87 | 0.93 | 0.98 | 0.88 |
Comme nous avons mis en place une règle pour envoyer une notification par messagerie électronique si la précision est inférieure à 90%, le moniteur de système System Monitor comprend qu'il est temps de déclencher une telle alerte vers le(s) compte(s) de messagerie électronique concerné(s).

Dans le corps du message, vous pouvez trouver des informations sur l'alerte, telles que son nom, le moniteur d'application et ses valeurs métriques qui ont déclenché l'alerte.

Ainsi, une telle situation sera notifiée aux personnes qui pourront prendre des mesures pour y remédier. Par exemple, une action pourrait consister simplement à réentraîner le modèle, mais dans certains cas, une approche plus élaborée peut s'avérer nécessaire.
Il est certainement possible d'approfondir les mesures de surveillance et de créer de meilleures alertes. Par exemple, imaginez que vous ayez plusieurs modèles ML en cours d'exécution et que différentes personnes soient responsables de chacun d'entre eux. Vous pourriez utiliser la métrique du nom du modèle et définir des règles d'alerte spécifiques, pour des destinataires d'e-mails spécifiques.
Le moniteur System Monitor vous permet également de déclencher une ClassMethod au lieu d'envoyer un courriel. Ainsi, vous pouvez exécuter une logique complexe lorsqu'une alerte est déclenchée, comme entraîner automatiquement le modèle, par exemple.
Notez que, comme System Monitor exécutera régulièrement les méthodes "Initialize" et "GetSample", ces méthodes doivent être soigneusement conçues afin de ne pas demander trop de ressources au système.
Comme le souligne Benjamin De BoeIRIS introduit une nouvelle façon de personnaliser votre tâche de surveillance - l' outil SAM. Ma première impression a été très positive, SAM est intégré avec les technologies de surveillance des standards du marché comme Grafana et Prometheus. Alors, pourquoi ne pas aller de l'avant et tester comment améliorer ce travail avec de telles nouvelles fonctionnalités ? Mais il s'agit là d'une matière pour un futur travail.... :)
Voilà, c'est fait ! J'espère que cela pourra vous être utile d'une manière ou d'une autre. A bientôt !
Il y a quelques mois, j'ai lu cet article intéressant de la MIT Technology Review, qui explique comment la pandémie de COVID-19 pose des défis aux équipes informatiques du monde entier en ce qui concerne leurs systèmes d'apprentissage automatique (ML).
Cet article m'a incité à réfléchir à la manière de traiter les problèmes de performance après le déploiement d'un modèle de ML.
J'ai simulé un simple scénario de problème de performance dans une application modèle de la technologie Open Exchange - iris-integratedml-monitor-example, qui participe au concours IA d'InterSystems IRIS (InterSystems IRIS AI Contest). S'il vous plaît, après avoir lu cet article, vous pouvez le consulter et, si vous l'aimez, votez pour moi! :)
Avant de parler de COVID-19 et de son impact sur les systèmes ML dans le monde entier, parlons rapidement d'InterSystems IRIS IntegratedML.
En automatisant des tâches telles que la sélection des caractéristiques et en s'intégrant au langage de manipulation de données SQL standard, IntegratedML pourrait nous aider à développer et à déployer une solution de ML.
Par exemple, après avoir manipulé et analysé correctement des données provenant de rendez-vous médicaux, vous pouvez configurer un modèle de ML pour prédire la présence ou l'absence des patients à l'aide de ces instructions SQL :
CREATE MODEL AppointmentsPredection PREDICTING (Show) FROM MedicalAppointments
TRAIN MODEL AppointmentsPredection FROM MedicalAppointments
VALIDATE MODEL AppointmentsPredection FROM MedicalAppointments
Le fournisseur AutoML choisira l'ensemble de caractéristiques et l'algorithme ML le plus performant. Dans ce cas, le fournisseur AutoML a sélectionné le modèle de régression logistique utilisant la bibliothèque scikit-learn, obtenant ainsi une exactitude de 90 %.
| | NOM_DU_MODÈLE | NOM_DU_MODÈLE_FORMÉ | FOURNISSEUR | HORODATAGE_FORMÉ | TYPE_DU_MODÈLE | INFOS_MODÈLE |
|---|------------------------|-------------------------|----------|-------------------------|----------------|---------------------------------------------------|
| 0 | AppointmentsPredection | AppointmentsPredection2 | AutoML | 2020-07-12 04:46:00.615 | classification | ModelType:Logistic Regression, Package:sklearn... |
| NOM_MÉTRIQUE | Exactitude | Mesure F | Précision | Rappel |
|--------------------------|----------|-----------|-----------|--------|
| AppointmentsPredection21 | 0.9 | 0.94 | 0.98 | 0.91 |
Une fois que votre modèle de ML est déjà intégré à SQL, vous pouvez l'intégrer de manière transparente à votre système de réservation existant afin d'améliorer ses performances, en utilisant des estimations sur les patients qui seront présents et ceux qui ne le seront pas :
SELECT PREDICT(AppointmentsPredection) As Predicted FROM MedicalAppointments WHERE ID = ?
Vous pouvez en savoir plus sur IntegrateML ici. Si vous souhaitez obtenir un peu plus de détails sur ce modèle de prédiction simple, vous pouvez vous référer à.
Toutefois, comme les modèles d'IA/ML sont conçus pour s'adapter au comportement de la société, directement ou non, ils seront probablement très affectés lorsque ce comportement changera rapidement. Récemment, nous avons (malheureusement) pu expérimenter un tel scénario en raison de la pandémie de COVID-19.
Comme l'explique l'article de MIT Technology Review, la pandémie de COVID-19 a modifié remarquablement et rapidement le comportement de la société. J'ai effectué des recherches dans Google Trends pour des termes cités dans l'article, tels que masque N95, papier toilette et désinfectant pour les mains, afin de confirmer l'augmentation de leur popularité, à mesure que la pandémie se propageait dans le monde :

Tel que cité dans l'article :
"Mais ils [les changements apportés par COVID-19] ont également affecté l'intelligence artificielle, causant des problèmes aux algorithmes qui fonctionnent dans les coulisses de la gestion des stocks, de la détection des fraudes, du marketing, et bien d'autres choses encore. Les modèles d'apprentissage automatique formés sur la base du comportement humain normal découvrent aujourd'hui que la normalité elle-même a changé, et certains d'entre eux ne fonctionnent plus comme ils le devraient."
En d'autres termes, entre l'"ancienne normalité" et la "nouvelle normalité", nous vivons une "nouvelle anormalité".
Une autre citation intéressante, également tirée de l'article :
"Les modèles d'apprentissage automatique sont conçus pour s'adapter aux changements. Mais la plupart d'entre eux sont également fragiles ; ils donnent de mauvais résultats lorsque les données d'entrée diffèrent trop de celles sur lesquelles ils ont été formés. (...) L'IA est un moteur vivant, qui respire."
Cet article présente ensuite des exemples de modèles d'IA/ML dont les performances commencent soudainement à être affectées négativement, ou qui doivent être modifiés de toute urgence. Quelques exemples :
Nous devons donc surveiller nos modèles d'IA/ML afin de garantir leur fiabilité et de continuer à aider nos clients.
Jusqu'à présent, j'espère vous avoir montré que la création, la formation et le déploiement de votre modèle de ML ne sont pas tout - vous devez en assurer le suivi. Dans le prochain article, je vous montrerai comment utiliser le framework %Monitor.Abstract d'IRIS pour surveiller les performances de votre système de ML et définir des alertes basées sur les métriques du moniteur.
En attendant, j'aimerais savoir si vous avez été confronté à l'un ou l'autre des problèmes soulevés par ces périodes de pandémie, et comment vous y faites face dans la section des commentaires !
Restez à l'écoute (et en sécurité 😊)!
Salut la Communauté !
Vous vivez une problématique récurrente en santé et vous imaginez une solution ? InterSystems soutient le Hacking Health Camp, le plus grand hackathon santé au monde. Rejoignez-nous pour transformer votre idée en prototype en 50h et gagnez le prix InterSystems :
👉 Le Challenge InterSystems pour la meilleure utilisation des technologies InterSystems 👈
Salut les développeurs,
Nous aimerions vous inviter à participer à notre prochain concours dédié à la création des solutions d'IA/ML qui utilisent Cloud SQL pour travailler avec les données :
🏆 Concours InterSystems IRIS Cloud SQL et IntegratedML 🏆
Durée: du 3 avril au 23 avril 2023
Prix: $13,500!

Bonjour à la communauté,
Dans la première partie, nous avons décrit tous les packages, les bibliothèques utilisées et les services REST. J'aimerais maintenant détailler un peu plus les services convertisseur et validateur. Par défaut, OpenAPI-Suite envoie une requête HTTP converter.swagger.io si a spécification est de version inférieure à 3.0 et une autre requête HTTP à validator.swagger.io pour simplifier la structure de la spécification.
Bien que l'utilisation d'utilitaires en ligne soit pratique, dans certains cas, nous pourrions préférer avoir notre propre instance du convertisseur et du validateur. Par exemple, si OpenAPI-Suite est mis à disposition sur un serveur dans une organisation pour les développeurs ObjectScript, il peut être préférable d'éviter les requêtes vers les services externes (confidentialité, éviter les limites de taux de demande,...). Ceux-ci sont disponibles en images Docker, il suffit d'exécuter :
docker run -d -p 8085:8080 --name swagger-converter swaggerapi/swagger-converter:latest
docker run -d -p 8086:8080 --name swagger-validator-v2 swaggerapi/swagger-validator-v2:latestBonjour à tous,
Nous voici de nouveau réunis. Nouvelle année, nouveau concours, nouveau projet, vieilles raisons.
Triple barre oblique "Triple Slash" est dans la place" !
1999, c'était l'année où j'ai appris à coder, mon premier "IF", mon premier "Bonjour le monde"
Je me souviens encore de mon professeur expliquant à tout le monde dans cette classe le simple "while" et comment nous pouvons déterminer si une condition spécifique a été atteinte @Renato Banzai vous en souvenez vous ? Le professeur Barbosa, quel homme unique.
Depuis lors, j'aime l'idée de coder, de transformer des idées en projets, en quelque chose d'utile. Mais nous savons tous que pour créer quelque chose, nous devons nous assurer que cela fonctionne ; nous ne nous contentons pas de créer mais nous testons si cela fonctionne et si cela continue à fonctionner si nous ajoutons quelque chose de nouveau.
Et pour être honnête avec chacun d'entre vous, créer des tests, c'est ennuyeux. Du moins pour moi, mais si vous aimez le faire, je n'ai rien contre vous.
En utilisant une mauvaise analogie, je peux dire que la création de méthodes d'essai est comme le nettoyage de votre maison ou le repassage de vos vêtements. C'est ennuyeux, mais c'est nécessaire si vous voulez quelque chose de mieux.
En gardant cela à l'esprit, pourquoi ne pas créer un moyen meilleur et plus facile pour les tests ?
Ainsi, inspirés par le style elixir style and in et par cette idée d' InterSystems Ideas (Merci @Evgeny Shvarov)! Nous avons essayé d'améliorer le processus de test et de le transformer à nouveau en une tâche agréable.
Nous simplifions le %UnitTest et pour vous montrer comment utiliser TripleSlash pour créer vos tests unitaires, utilisons un exemple simple.
Disons que vous avez la classe et la méthode suivantes, pour lesquelles vous souhaitez écrire un test unitaire :
Class dc.sample.ObjectScript
{
ClassMethod TheAnswerForEverything() As%Integer
{
Set a = 42Write"Bonjour le monde !",!
Write"C'est InterSystems IRIS avec la version ",$zv,!
Write"L'heure actuelle est : "_$zdt($h,2)
Return a
}
}Comme vous pouvez le constater, la méthode TheAnswerForEverything() ne fait que retranscrire le nombre 42. Indiquons donc dans la documentation de la méthode comment TripleSlash doit créer un test unitaire pour cette méthode :
/// Une méthode simple à des fins de tests./// /// /// Ecrivez ##class(dc.sample.ObjectScript).Test()/// 42/// ClassMethod TheAnswerForEverything() As%Integer
{
...
}Les tests unitaires doivent être entourés de la balise <exemple></exemple>. Vous pouvez ajouter tout type de documentation, mais tous les tests doivent être contenus dans une telle balise.
Maintenant, démarrez une session de terminal IRIS, allez dans l'espace de noms IRISAPP créez une instance de la classe Core en passant le nom de la classe (ou son nom de paquet pour toutes ses classes) et exécutez ensuite la méthode Execute() :
USER>ZN"IRISAPP"
IRISAPP>Do##class(iris.tripleSlash.Core).%New("dc.sample.ObjectScript").Execute()TripleSlash interprétera ceci comme "Étant donné le résultat de la méthode Test(), affirme qu'il est égal à 42". Ainsi, une nouvelle classe sera créée dans le test unitaire :
Class iris.tripleSlash.tst.ObjectScript Extends%UnitTest.TestCase
{
Method TestTheAnswerForEverything()
{
Do$$$AssertEquals(##class(dc.sample.ObjectScript).TheAnswerForEverything(), 42)
}
}Ajoutons maintenant une nouvelle méthode pour tester les autres moyens permettant d'indiquer à TripleSlash comment écrire vos tests unitaires.
Class dc.sample.ObjectScript
{
ClassMethod GuessTheNumber(pNumber As%Integer) As%Status
{
Set st = $$$OKSet theAnswerForEveryThing = 42Try {
Throw:(pNumber '= theAnswerForEveryThing) ##class(%Exception.StatusException).%New("Sorry, wrong number...")
} Catch(e) {
Set st = e.AsStatus()
}
Return st
}
}Comme vous pouvez le constater, la méthode GuessTheNumber() attend un nombre, renvoie $$$OK uniquement si le nombre 42 est transmis ou une erreur pour toute autre valeur. Il faut donc indiquer dans la documentation de la méthode comment TripleSlash doit créer un test unitaire pour cette méthode :
/// Une autre méthode simple à des fins de test./// /// /// Exécutez ##class(dc.sample.ObjectScript).GuessTheNumber(42)/// $$$OK/// Do ##class(dc.sample.ObjectScript).GuessTheNumber(23)/// $$$NotOK/// ClassMethod GuessTheNumber(pNumber As%Integer) As%Status
{
...
}Exécutez à nouveau la méthode Execute() et vous verrez une nouvelle méthode de test dans la classe de test unitaire iris.tripleSlash.tst.ObjectScript:
Class iris.tripleSlash.tst.ObjectScript Extends%UnitTest.TestCase
{
La méthode TestGuessTheNumber()
{
Do$$$AssertStatusOK(##class(dc.sample.ObjectScript).GuessTheNumber(42))
Do$$$AssertStatusNotOK(##class(dc.sample.ObjectScript).GuessTheNumber(23))
}
}Actuellement, les assertions suivantes sont disponibles : $$$AssertStatusOK, $$$AssertStatusNotOK et $$$AssertEquals.
TripleSlash nous permet de générer des tests à partir d'exemples de code trouvés dans les descriptions de méthodes. Il vous permet de faire d'une pierre deux coups, en améliorant la documentation de vos classes et en créant l'automatisation des tests.

Une fois encore, nous vous remercions pour tout le soutien de la communauté dans chacune des applications que nous créons.
Si vous avez trouvé notre application intéressante et avez apporté votre contribution, veuillez voter pour iris-tripleslash et nous aider dans cette aventure !
Salut les développeurs,
Nous aimerions vous inviter à participer à notre prochain concours dédié à la création d'outils utiles pour faciliter la vie de vos collègues développeurs :
🏆 Concours d'outils de développement InterSystems 🏆
Soumettez une application qui aide à développer plus rapidement, contribue à un code plus qualitatif et aide au test, au déploiement, au support ou à la surveillance de votre solution avec InterSystems IRIS.
Durée: du 23 janvier au 12 février 202
Prix: $13,500!
Salut la communauté !
Nous aimerions vous inviter à participer à notre prochain concours pour partager vos connaissances de FHIR :
🏆 Concours InterSystems IRIS for Health : FHIR pour la santé des femmes 🏆
Soumettez une application qui utilise InterSystems FHIR ou InterSystems Healthcare Interoperability !
Durée: 14 novembre - 4 décembre 2022
Prix: $13,500!
Bonjour à la communauté !
Nous sommes ravis d'annoncer un nouveau type de concours : le concours de l'idée la plus brillante ! Bienvenue :
💡 InterSystems Idea-A-Thon 💡
Proposez une idée liée aux produits et services d'InterSystems entre le 26 septembre et le 16 octobre et recevez un prix garanti.
En outre, les employés d'InterSystems aussi bien que les Membres de la Communauté peuvent participer !
>> Envoyez vos idées ici <<
InterSystems Ide-A-Thon est organisé via le portail de feedback sur les idées d'InterSystems où vous pouvez soumettre des demandes d'amélioration de produits et des idées liées à nos services (Documentation, Communauté Dev, Global Masters, etc.) et voter pour celles qui vous plaisent.
Dans le cadre de ce concours, nous invitons chacun à partager ses idées sur ce portail et à voter pour les autres.
Pour participer au concours, il suffit de soumettre une idée sur le portail des Idées d'InterSystems.
**Les idées acceptées devraient : **
Toutes les idées éligibles auront un statut spécial "Idea-A-Thon" sur le portail des idées d'InterSystems et pourront être facilement trouvées à l'adresse Idea-A-Thon Ideas.
Nous invitons TOUT LE MONDE à participer à notre Idea-A-Thon. Tant les employés d'InterSystems que les membres de la communauté sont invités à participer et à soumettre leurs idées..
1. Prix pour les participants – des prix pour tous ceux qui postent une idée éligible :
🎁 T-Shirt à la marque InterSystems
2. Prix de l'expert – le gagnant sera sélectionné par l'équipe d'experts d'InterSystems, et recevra :
🎁 Ensemble d'enceintes Bluetooth® LEGO Star Wars™ R2-D2™ / BOSE Sleepbuds™ II / BOSE SoundLink Flex
3. Prix de la communauté – l'idée ayant reçu le plus de votes sera récompensée :
🎁 Ensemble d'enceintes Bluetooth® LEGO Star Wars™ R2-D2™ / BOSE Sleepbuds™ II / BOSE SoundLink Flex
_Remarque importante : les employés d'InterSystems ne peuvent obtenir que le prix de participation. Les prix d'expert et de la Communauté ne peuvent être remportés que par des membres de la Communauté n'appartenant pas à InterSystems. _
📝 Du 26 septembre au 16 octobre : Publication des idées et période de vote.
Publier une ou plusieurs idées pendant cette période. Les membres inscrits sur le portail des idées peuvent voter pour les idées publiées - ces votes sont comptabilisés pour le prix de la communauté.
Remarque : Plus tôt vous publiez votre idée où vos idées, plus vous aurez de temps pour recueillir des votes.
Alors !
Publiez votre/vos idée(s) sur le portail des idée d'InterSystems InterSystems Ideas, gagnez des prix et restez à l'affût des mises à jour du statut de votre idée !
Bonne chance !👍
Remarque importante : Tous les prix sont soumis à la disponibilité et aux options d'expédition. Il se peut que certains articles ne puissent pas être expédiés dans certains pays. Les prix ne peuvent être livrés aux résidents de Crimée, de Russie, de Biélorussie, d'Iran, de Corée du Nord, de Syrie ou d'autres pays frappés d'embargo par les États-Unis. Nous vous informerons si un prix n'est pas disponible et vous proposerons un remplacement éventuel.
Salut la communauté,
Nous apprécions grandement tous vos commentaires sur le concours d'interopérabilité !
Veuillez répondre à une courte enquête et répondre à quelques questions pour nous aider à améliorer nos concours.
👉 Sondage rapide : Enquête sur le concours d'interopérabilité 2022
N'hésitez pas à partager également vos pensées dans les commentaires de cet article !
Salut la communauté,
Rencontrons-nous lors de la rencontre en ligne avec les gagnants du concours d'interopérabilité InterSystems – une excellente occasion d'avoir une discussion avec l'équipe d'experts InterSystems ainsi qu'avec nos participants.
Démo des gagnants incluse !
Date et heure : jeudi 22 septembre, 09h00 HAE
Bonjour la communauté,
Nous sommes ravis d'annoncer les gagnants du concours d'interopérabilité intersystèmes : créer des solutions durables !
Merci à tous d'avoir participé à notre concours de codage ! Sans plus tarder, les gagnants sont...
.png)
Salut les développeurs !
Vous voulez montrer vos compétences en interopérabilité ? Participez à notre prochain concours passionnant :
🏆 Concours d'interopérabilité InterSystems : Construire des solutions durables 🏆
Durée : 29 août - 18 septembre
Plus de prix : $13,500 – la distribution des prix a changé !
Salut,
Vous avez des idées pour améliorer encore le concours d'articles techniques ?
Nous voulons entendre parler de vous tous : à la fois de nos participants et de ceux qui n'ont pas pu participer ! Veuillez répondre à quelques questions pour nous aider à améliorer notre concours d'écriture :
👉 Sondage d'une minute : Sondage du concours d'articles techniques InterSystems #3
Salut les développeurs !
Nous vous proposons d'excellents nouveaux articles à lire et à apprécier, grâce à nos merveilleux participants au 3e concours d'articles techniques d'InterSystems : Edition Python !
Et maintenant, il est temps d'annoncer les gagnants !
La durée du concours d'articles a été prolongée jusqu'à la fin du mois, le 31 juillet !

Bonjour et bienvenue au 21e concours de programmation d'InterSystems !
🏆 Concours InterSystems Full Stack 2022 🏆
Durée : 27 juin - 17 juillet 2022
Prix totaux : $10,000
Bonjour et bienvenue au prochain concours de rédaction d'articles techniques d'InterSystems !
🐍 Concours d'articles techniques d'InterSystems : Édition Python 🐍
Rédigez un article sur n'importe quel sujet lié à l'utilisation de Python avec les technologies InterSystems du 20 juin au 20 juillet.
🎁 Des prix pour tous : Un pack de prix spéciaux pour chaque auteur qui participe au concours !
🏆 Premiers prix : AirPods Max; Apple Watch SE; Apple HomePod mini / Apple Pencil
1. Tout le monde est gagnant au concours d'articles techniques d'InterSystems ! Tous les utilisateurs qui rédigent un article pendant la période du concours recevront des prix spéciaux :
🎁 Apple AirTag estampillé InterSystems
🎁 Rubik's cube 3x3 estampillé InterSystems
2. Prix des experts - les articles seront jugés par des experts d'InterSystems :
🥇 1ère place : Apple AirPods Max
🥈 2e place : Apple Watch SE
🥉 3e place : Apple HomePod mini / Apple Pencil
Alternativement, tout gagnant peut choisir un prix d'un niveau inférieur au sien.
3. Prix de la communauté des développeurs - article ayant reçu le plus de mentions J'aime. Le gagnant aura la possibilité de choisir l'un des prix suivants :
🎁 Apple Pencil
🎁 Apple HomePod mini
_Remarque : _
Tout membre de la communauté des développeurs, à l'exception des employés d'InterSystems. Créez un compte !
📝 20 juin - 20 juillet: Publicationdes articleset période de vote.
Publiez un ou plusieurs articles pendant cette période. Les membres de la CD peuvent voter pour les articles publiés grâce aux mentions J'aime dans le cadre du prix de la communauté.
Remarque : Plus tôt vous publiez vos articles, plus vous avez de temps pour recueillir les votes des experts et de la communauté.
❗️ Tout article rédigé pendant la période du concours et répondant aux conditions ci-dessous sera automatiquement inscrit au concours :
Cette fois, nous avons décidé d'ajouter des bonus supplémentaires qui vous aideront à gagner le prix ! Souhaitons la bienvenue au :
| Bonus |
| Bonus du sujet |
| Bonus de la vidéo |
| Bonus de la discussion |
| Bonus de la traduction |
| Bonus pour les nouveaux membres |
Voici une liste de sujets proposés qui donneront à votre article un bonus supplémentaire pour le sujet :
| # |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
Remarque : Différents auteurs peuvent soumettre des articles sur le même sujet.
➡️ Rejoignez le Discord d'InterSystems pour discuter des règles, des sujets et des bonus.
Alors,
Il est temps de montrer vos talents d'écrivain ! Bonne chance ✨
Remarque importante : les prix ne peuvent être remis aux résidents de Crimée, de Russie, de Biélorussie, d'Iran, de Corée du Nord, de Syrie ou d'autres pays sous embargo américain.
Salut la communauté,
Nous apprécierons grandement tous vos commentaires sur l'InterSystems Grand Prix Contest 2022! Veuillez répondre à quelques questions pour nous aider à améliorer nos concours.
👉 Sondage rapide : InterSystems Grand Prix Programming Contest Survey (en anglais)

Salut les développeurs !
Voici le score des bonus techniques pour les participants de l'InterSystems Grand Prix 2022 Contest!