#InterSystems IRIS for Health

0 Abonnés · 382 Publications

InterSystems IRIS for Health™ est la première et la seule plateforme de données au monde conçue spécifiquement pour le développement rapide d'applications de santé afin de gérer les données les plus critiques du monde. Elle comprend de puissantes fonctionnalités prêtes à l'emploi : traitement et analyse des transactions, modèle de données de santé extensible, développement de solutions basé sur FHIR, prise en charge des normes d'interopérabilité de santé, etc. Toutes ces fonctionnalités permettent aux développeurs de créer rapidement de la valeur et des applications révolutionnaires. En savoir plus.

Article Pierre LaFay · Fév 3, 2024 4m read

Introduction

Cet article tente de résumer et de faire le point sur les échanges dans ce post. S'il vous plait, n'hésitez pas à commenter.

Syntaxe de bloc

Une instruction de bloc, ou une instruction composée, vous permet de regrouper n'importe quel nombre d'instructions (y compris 0) en une seule instruction.

ObjectScript prend actuellement en charge deux syntaxes pour les blocs :

  • Syntaxe des blocs avec accolades
  • Syntaxe du bloc avec points

Syntax des blocs avec accolade

Elle est similaire à celle de C, Java, C#,… ce qui rend le court exemple suivant très familier à la plupart des programmeurs :

0
0 101
Article Sylvain Guilbaud · Jan 30, 2024 4m read

Traitement des ressources FHIR avec FHIR SQL BUILDER pour prédire la probabilité de développer une hépatite C

Avec le développement de la technologie, l'industrie médicale progresse également constamment et les humains accordent souvent plus d'attention à leur propre santé.
En apprenant et en traitant des ensembles de données par ordinateur, les maladies peuvent être prédites.

Prérequis: Capacité à utiliser FHIR et ML

2
0 58
Question Jean-Charles Cano · Jan 25, 2024

Bonjour,

Est-ce qu'il est possible d'appeler un service qu'une seule fois ? 

Par exemple j'ai un Business Service de type EnsLib.FTP.PassthroughService, et j'aimerai qu'il s'exécute qu'une seule fois. 

Le seul moyen que j'ai trouvé de faire cela est de passer planifier le service par exemple entre 9h 9h15 et dans le paramètre intervalle entre appels, je saisis 1200 pour faire 20 minutes,

Existe-t-il une autre solution pour faire cela ? 

5
0 73
Annonce Sylvain Guilbaud · Jan 31, 2024

Health Data De-Identifier est disponible via InterSystems' Early Access Program afin de vous donner un aperçu de ce sur quoi nous travaillons. Ce document vous expliquera comment vous inscrire.

Pour en savoir plus: Health Data De-ID Early Access Program

  1. Accéder evaluation.intersystems.com. Si vous disposez déjà d'informations d'identification, passez à l'étape 7.

  2. Créer un nouveau compte en cliquant sur Register for a new account. image

  3. Remplissez toutes les informations requises et enregistrez. image

  4. Vous recevrez un email avec la confirmation et le token d'accès. image

  5. Fournissez le token d'accès reçu par e-mail. image

  6. Choisissez un mot de passe. image

  7. Envoyer un courriel à deidevaluation@intersystems.com demander l'accès (cliquez sur le lien pour un accès rapide). Il est important de demander l'accès pour le même e-mail que vous avez utilisé lors du processus d'inscription. image

  8. Une fois que vous avez reçu la confirmation de votre inscription, connectez-vous à evaluation.intersystems.com et cliquez sur Télécharger les programmes d'accès anticipé. image

  9. Sélectionner Health Data De-Identifier. Assurez-vous de lire et d'accepter les Conditions d'utilisation de l'accès anticipé puis cliquez sur Download All. image

0
0 50
Article Iryna Mykhailova · Oct 31, 2023 3m read

Certainement, vous avez tous entendu que FHIR était la panacée et la solution à tous les problèmes d'interopérabilité et de compatibilité entre les systèmes. Ici, nous pouvons voir l'un de ses défenseurs classiques qui tient une ressource FHIR dans sa main et l'apprécie énormément :

Mais pour le reste de nous autres mortels, nous allons faire une petite introduction.

Qu'est-ce que FHIR ?

Commençons par la définition : FHIR (Fast Healthcare Interoperability Resource) est une norme d'interopérabilité développée par HL7 ( ensemble de normes Health Level 7) conçue pour permettre l'échange électronique de données de santé entre les différents systèmes de l'industrie de la santé .

Quelles sont les technologies fondamentales sur lesquelles repose FHIR ?

Il s'agit principalement d'appels HTTP par le biais de l'API REST et du format JSON (bien qu'il puisse s'agir de XML et de toute autre communication disponible en fonction de l'utilisation que nous en faisons).

Comment utiliser FHIR ?

De façon générale, le plus simple est d'avoir un serveur FHIR avec lequel nous communiquerons en utilisant des appels HTTP tels que GET (pour obtenir des données du serveur), PUT (pour mettre à jour les données), POST (pour sauvegarder les données) et DELETE (pour les supprimer). .

FHIR gère le concept de Ressource qui sera utilisé pour envoyer et recevoir des données entre le serveur et le client. Ces ressources ont pour objectif de couvrir 80% des besoins d'intercommunication entre les systèmes. On peut voir ici une image des ressources disponibles par défaut.

Vous pouvez ainsi constater que chaque Ressource est accompagnée d'un chiffre ou d'une lettre qui indique la maturité de ladite Ressource (où N = normatif). La documentation officielle de FHIR vous donne accès à une multitude d'exemples.

Parmi les dérivés de la Ressource, on trouve le Bundle qui, en résumé, est un ensemble de ressources empaquetées dans le même JSON et qui sert à faire des requêtes sur notre serveur ainsi qu'à effectuer des opérations CRUD par lots ou par transactions.

Parfait, FHIR semble fantastique, mais... comment pouvons-nous l'appliquer à nos systèmes existants qui n'ont pas été conçus pour fonctionner selon les critères définis par FHIR ?

Adaptateur FHIR

InterSystems rend la fonctionnalité FHIR Adapter disponible à ses clients, ce qui leur permettra de mettre en place une couche métier au-dessus de leurs systèmes existants, en développant ce qui est connu sous le nom de FHIR Façade. Dans les articles suivants, nous allons voir comment utiliser les objets FHIR et interagir avec une petite simulation de ce que serait un système du service d'information de santé HIS (Health Information Service) qui utilise une base de données PostgreSQL.

Pour suivre les explications, nous mettons à votre disposition une application OpenExchange qui configurera automatiquement l'exemple que nous suivrons dans les jours à venir :

Conception de l'atelier

Dans les prochains articles, nous aborderons les points suivants :

  1. Architecture de l'adaptateur FHIR dans notre instance IRIS
  2. Enregistrement d'une Ressource de type patient dans notre SIH.
  3. Recherche de patients par leur identifiant à l'aide d'un appel API REST.
  4. Enregistrement d'un Bundle avec les données du patient et du centre médical dans notre SIH.

Donc si vous êtes intéressés... Restez connecté à la Communauté dans les prochains jours !

1
0 84
Article Iryna Mykhailova · Jan 23, 2024 2m read

Saviez-vous que vous pouvez obtenir des données JSON directement à partir de vos tables SQL ?

Permettez-moi de vous présenter 2 fonctions SQL utiles utilisées pour récupérer des données JSON à partir de requêtes SQL : JSON_ARRAY et JSON_OBJECT.
Vous pouvez utiliser ces fonctions dans l'instruction SELECT avec d'autres types d'éléments de sélection, et elles peuvent être spécifiées à d'autres emplacements où une fonction SQL peut être utilisée, comme dans une clause WHERE.

La fonction JSON_ARRAY prend une liste d'expressions séparées par des virgules et renvoie un array JSON contenant ces valeurs.

0
0 213
Article Pierre LaFay · Jan 20, 2024 8m read

Dans cet article, je passe en revue la classe %JSON.Adaptor.

Cette classe est extrêmement utile pour exporter des données en JSON sérialisé, importer les objets JSON et les enregistrer dans un objet de classe.

Je vais commencer par les paramètres de l'addaptor %JSON. Les paramètres constituent un élément crucial des opérations d’importation et d’exportation JSON.

0
0 87
Question Cyril Grosjean · Déc 27, 2023

Bonjour,

Je cherche à pouvoir accéder à mes données contenus dans une RecordMap depuis SQLAlchemy, et même à toute table déjà créée auparavant.

Voici une partie de code :

TestBase:

classTestBase(DeclarativeBase):
    CreatedAt: Mapped[int] = mapped_column(TIMESTAMP, default=func.now())
    UpdatedAt: Mapped[int] = mapped_column(TIMESTAMP, default=func.now(), onupdate=func.current_timestamp())

 

Création de l'engine et binding des entités:

3
0 92
Article Pierre LaFay · Jan 13, 2024 3m read

InterSystems FAQ rubric

Les définitions de classe créées par les utilisateurs sont stockées dans des classes de définition de classe. Ils peuvent être utilisés pour obtenir une liste de définitions de classe à partir d'un programme.

Remarque : Les classes de définition de classe font référence à toutes les classes contenues dans le package %Dictionary.

Dans l'exemple de code ci-dessous, une liste de définitions de classe est obtenue à l'aide de la commande query Summary de la  classe %Dictionary.ClassDefinitionQuery.

0
0 61
Question Pierre LaFay · Déc 29, 2023

Bonjour,

Notre application doit créer des utilisateurs du système à partir d'un formulaire de demande.

Pour utiliser les classes Security, il est nécessaire de disposer des droits permettant d'utiliser le namespace %SYS, ce qui n'est pas le cas des utilisateurs qui valident les demandes.

Il n'est pas souhaitable que ces utilisateurs aient ce rôle de manière permanente, j'ai donc procédé de la manière suivante :

J'ai créé une classe façade pour les classes Security.Users, Security.Roles, Security.Resources qui me permet de me loguer avec un utilisateur autorisé sur le NS %SYS

2
0 105
Article Pierre LaFay · Jan 12, 2024 1m read

Au hasard d'un post sur le terminal Iris j'ai découvert une syntaxe que je souhaite partager avec la communauté :

Dans le shel de la session Iris il est possible d'exécuter une commande "OS" (shell pour linux & mac, CMD pour windows ) en précédant la commande par !.

Par exemple :

USER> ! ls /tmp -lh

Toutes les commandes fonctionnent parfaitement même encapsulées dans un sudo. ci dessous queqlues exemples :

Bien sur si vous êtes sur un serveur distant, les commandes shell s'exécutent sur ce dernier et non en local

2
0 84
Question Jean-Charles Cano · Jan 5, 2024

Bonjour,

Je fais face à un problème depuis plusieurs mois, j'ai plusieurs flux qui fonctionnent en SFTP avec la classe d'iris EnsLib.FTP.PassthroughService

Le problème est que de temps en temps, j'ai un message d'erreur qui dit : 

"Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée" 

J'ai eu le cas pour un serveur chez nous et nous avons solutionné le problème en rallongeant le paramètre intervalle entre appels à 60 secondes,

7
0 193
Article Pierre LaFay · Jan 9, 2024 3m read

Bonjour la communauté,

Lors de l'utilisation d'un Business Service de type SQL, il peut arriver que nous ayons besoin de rejouer certaines lignes de la table source.

Prenons comme exemple le Service Métier "from customer SQL" utilisant la classe générique

EnsLib.SQL.Service.GenericService

Différents cas se présentent, selon les paramètres utilisés sur ce Business Service

Premier cas :

Si le Business Service utilise uniquement KeyFieldName

0
0 40
Question Sylvain Guilbaud · Août 23, 2023

Est-il prévu que LOAD DATA prenne en compte plusieurs formats de DATE/DATETIME avec, par exemple un paramètre de indiquant le format utilisé dans les données sources ?

exemple :

LOAD DATA .../...
USING
{
  "from": {
    "file": {
       "dateformat": "DD/MM/YYYY"
    }
  }
}
3
0 88
Article Sylvain Guilbaud · Jan 8, 2024 3m read

Bonjour La Communauté,

en utilisant un Business Service de type SQL, il peut arriver que nous ayons besoin de rejouer certaines lignes de la table source.

Prenons comme exemple le Business Service "from customer SQL"  utilisant la classe générique EnsLib.SQL.Service.GenericService

Différents cas se présentent, en fonction des paramétres utilisés sur ce Business Service.

Premier cas :

Si le Business Service utilise uniquement un champ clé (KeyFieldName)

0
0 51
Article Pierre LaFay · Jan 7, 2024 14m read

Vous ne le réalisez peut-être pas, mais votre compte de connexion InterSystems peut être utilisé pour accéder à un très large éventail de services InterSystems pour vous aider à apprendre et à utiliser InterSystems IRIS et d'autres technologies InterSystems plus efficacement. Continuez à lire pour en savoir plus sur la façon de débloquer de nouvelles connaissances et outils techniques à l’aide de votre compte de connexion InterSystems. Aussi - après avoir lu, veuillez participer au sondage en bas, afin que nous puissions voir en quoi cet article vous a été utile ! (Ndt : accéder à la

0
0 34
Article Pierre LaFay · Jan 7, 2024 3m read
Scenario

IRIS propose des adaptateurs entrants SQL à utiliser avec des passerelles SQL telles que EnsLib.SQL.InboundAdapter pour interroger à plusieurs reprises les connexions SQL Gateway. Un scénario est apparu dans lequel nous voulions interroger une base de données interne pour certaines données, mais nous n'avons pas vu de service prêt à l'emploi pour cela.

Approche souhaitée

Disposer d'un service générique capable d'interroger le SQL interne pour fonctionner avec les composants en aval.

Comment
0
0 28
Article Pierre LaFay · Jan 7, 2024 2m read

InterSystems FAQ rubric

Pour résoudre l'erreur <PROTECT>, supprimez l'attribut en lecture seule de la base de données de bibliothèque à l'échelle du système (IRISLIB pour InterSystems IRIS, CACHELIB pour Caché/Ensemble/HealthShare (basé sur Caché)).

Une fois que vous avez terminé d'importer la routine, n'oubliez pas de la remettre en lecture seule.

[Version 2013.1 and above]
[Management Portal] > [System Administration] > [Configuration] > [System Configuration] > [Local Database] Uncheck "Mount read-only" from the database name link.

0
0 64
Article Pierre LaFay · Jan 7, 2024 8m read

Introduction

Cet article vise à explorer le fonctionnement du système FHIR-PEX et a été développé, en tirant parti des capacités d'InterSystems IRIS.

En rationalisant l'identification et le traitement des examens médicaux dans les centres de diagnostic clinique, notre système vise à améliorer l'efficacité et la précision des flux de travail de soins de santé. En intégrant les normes FHIR à la base de données InterSystems IRIS Java-PEX, le système aide les professionnels de santé avec des capacités de validation et de routage, contribuant ainsi à améliorer la prise de décision et les soins aux patients.

how it works

  • Interopérabilité IRIS : Reçoit les messages au standard FHIR, garantissant l'intégration et la compatibilité avec les données de santé.

  • Traitement de l'information avec 'PEX Java' : Traite les messages au format FHIR et les dirige vers des sujets Kafka en fonction de règles configurées globalement dans la base de données, facilitant ainsi le traitement et le routage efficaces des données, en particulier pour les examens dirigés vers la quarantaine.

  • Gestion des retours Kafka via un backend Java externe : Interprète uniquement les examens dirigés vers la quarantaine, permettant au système de gérer les retours de Kafka via un backend Java externe. Il facilite la génération d'informations pronostiques pour les professionnels de la santé grâce à l'IA générative, en s'appuyant sur les consultations des résultats d'examens précédents pour les patients respectifs.

Development

Grâce au PEX (Production EXtension) d'InterSystems, un outil d'extensibilité permettant d'améliorer et de personnaliser le comportement du système, nous avons élaboré une Opération Métier. Ce composant est chargé de traiter les messages entrants au format FHIR au sein du système. Comme exemple suivant :

import com.intersystems.enslib.pex.*;
import com.intersystems.jdbc.IRISObject;
import com.intersystems.jdbc.IRIS;
import com.intersystems.jdbc.IRISList;
import com.intersystems.gateway.GatewayContext;

import org.apache.kafka.clients.producer.*;
import org.apache.kafka.common.serialization.*;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

public class KafkaOperation extends BusinessOperation {
// Connection to InterSystems IRIS
private IRIS iris;

// Connection to Kafka
private Producer<Long, String> producer;

// Kafka server address (comma separated if several)
public String SERVERS;

// Name of our Producer
public String CLIENTID;

/// Path to Config File
public String CONFIG;

public void OnInit() throws Exception {
[...]
}

public void OnTearDown() throws Exception {
[...]
}

public Object OnMessage(Object request) throws Exception {
    IRISObject req = (IRISObject) request;
    LOGINFO("Received object: " + req.invokeString("%ClassName", 1));

    // Create record
    String value = req.getString("Text");
    String topic = getTopicPush(req);
    final ProducerRecord<Long, String> record = new ProducerRecord<>(topic, value);

    // Send new record
    RecordMetadata metadata = producer.send(record).get();

    // Return record info
    IRISObject response = (IRISObject)(iris.classMethodObject("Ens.StringContainer","%New",topic+"|"+metadata.offset()));
    return response;
}

private Producer<Long, String> createProducer() throws IOException {
[...]
}

private String getTopicPush(IRISObject req) {
[...]
}

[...]
}

`

Au sein de l'application, la méthode getTopicPush se charge d'identifier le sujet auquel le message sera envoyé.

La détermination du sujet auquel le message sera envoyé dépend de l'existence d'une règle dans la globale "quarantineRule", telle que lue dans IRIS.

String code = FHIRcoding.path("code").asText();
String system = FHIRcoding.path("system").asText();

IRISList quarantineRule = iris.getIRISList("quarantineRule",code,system);

 String reference = quarantineRule.getString(1);
 String value = quarantineRule.getString(2);

 String observationValue = fhir.path("valueQuantity").path("value").asText()

When the global ^quarantineRule exists, validation of the FHIR object can be validated.

private boolean quarantineValueQuantity(String reference, String value, String observationValue) {
    LOGINFO("quarantine rule reference/value: " + reference + "/" + value);
    double numericValue = Double.parseDouble(value);
    double numericObservationValue = Double.parseDouble(observationValue);

    if ("<".equals(reference)) {
        return numericObservationValue < numericValue;
    }
    else if (">".equals(reference)) {
        return numericObservationValue > numericValue;
    }
    else if ("<=".equals(reference)) {
        return numericObservationValue <= numericValue;
    }
    else if (">=".equals(reference)) {
        return numericObservationValue >= numericValue;
    }
    
    return false;
}

Exemple pratique :

Lors de la définition d'une globale, telle que :

Set ^quarantineRule("59462-2","http://loinc.org") = $LB(">","500") 

Ceci établit une règle pour le code "59462-2" et le système ""http://loinc.org"" dans la globale ^quarantineRule , spécifiant une condition dans laquelle la valeur supérieure à 500 est définie comme quarantaine. Dans l'application, la méthode getTopicPush peut ensuite utiliser cette règle pour déterminer le sujet approprié pour envoyer le message en fonction du résultat de la validation.

Compte tenu de l'affectation, le JSON ci-dessous serait envoyé en quarantaine car il correspond à la condition spécifiée en ayant :

 {
          "system": "http://loinc.org",
          "code": "59462-2",
          "display": "Testosterone"
}

"valueQuantity": { "value": 550, "unit": "ng/dL", "system": "http://unitsofmeasure.org", "code": "ng/dL" }

FHIR Observation:

{
    "resourceType": "Observation",
    "id": "3a8c7d54-1a2b-4c8f-b54a-3d2a7efc98c9",
    "status": "final",
    "category": [
      {
        "coding": [
          {
            "system": "http://terminology.hl7.org/CodeSystem/observation-category",
            "code": "laboratory",
            "display": "laboratory"
          }
        ]
      }
    ],
    "code": {
      "coding": [
        {
          "system": "http://loinc.org",
          "code": "59462-2",
          "display": "Testosterone"
        }
      ],
      "text": "Testosterone"
    },
    "subject": {
      "reference": "urn:uuid:274f5452-2a39-44c4-a7cb-f36de467762e"
    },
    "encounter": {
      "reference": "urn:uuid:100b4a8f-5c14-4192-a78f-7276abdc4bc3"
    },
    "effectiveDateTime": "2022-05-15T08:45:00+00:00",
    "issued": "2022-05-15T08:45:00.123+00:00",
    "valueQuantity": {
      "value": 550,
      "unit": "ng/dL",
      "system": "http://unitsofmeasure.org",
      "code": "ng/dL"
    }
}

L'application Java Quarkus

Après envoi sur le sujet souhaité, une application Quarkus Java a été construite pour recevoir les examens en quarantaine. @ApplicationScoped public class QuarentineObservationEventListener {

@Inject
PatientService patientService;

@Inject
EventBus eventBus;

@Transactional
@Incoming("observation_quarantine")
public CompletionStage<Void> onIncomingMessage(Message<QuarentineObservation> quarentineObservationMessage) {
	var quarentineObservation = quarentineObservationMessage.getPayload();
	var patientId = quarentineObservation.getSubject()
			.getReference();
	var patient = patientService.addObservation(patientId, quarentineObservation);
	publishSockJsEvent(patient.getId(), quarentineObservation.getCode()
			.getText());
	return quarentineObservationMessage.ack();
}

private void publishSockJsEvent(Long patientId, String text) {
	eventBus.publish("monitor", MonitorEventDto.builder()
			.id(patientId)
			.message(" is on quarentine list by observation ." + text)
			.build());
}
 }

Ce segment du système est chargé de conserver les informations reçues de Kafka, de les stocker dans les observations du patient dans la base de données et de notifier l'événement au moniteur.

The monitor

Enfin, le moniteur du système est chargé de fournir une visualisation frontale simple. Cela permet aux professionnels de la santé d’examiner les données des patients/examens et de prendre les mesures nécessaires.

Implementation of langchainPT

Grâce au moniteur, le système permet aux professionnels de la santé de demander des recommandations à l'IA générative.

@Unremovable
@Slf4j
@ApplicationScoped
public class PatientRepository {
	@Tool("Get anamnesis information for a given patient id")
	public Patient getAnamenisis(Long patientId) {
		log.info("getAnamenisis called with id " + patientId);
		Patient patient = Patient.findById(patientId);
		return patient;
	}

	@Tool("Get the last clinical results for a given patient id")
	public List<Observation> getObservations(Long patientId) {
		log.info("getObservations called with id " + patientId);
		Patient patient = Patient.findById(patientId);
		return patient.getObservationList();
	}

}

suivre la mise en œuvre de Langchain4j

@RegisterAiService(chatMemoryProviderSupplier = RegisterAiService.BeanChatMemoryProviderSupplier.class, tools = {PatientRepository.class})
public interface PatientAI {

	@SystemMessage("""
			You are a health care assistant AI. You have to recommend exams for patients based on history information.
			""")
	@UserMessage("""
			 Your task is to recommend clinical exams for the patient id {patientId}.

			 To complete this task, perform the following actions:
			 1 - Retrieve anamnesis information for patient id {patientId}.
			 2 - Retrieve the last clinical results for patient id {patientId}, using the property 'name' as the name of exam and 'value' as the value.
			 3 - Analyse results against well known conditions of health care.

			 Answer with a **single** JSON document containing:
			 - the patient id in the 'patientId' key
			 - the patient weight in the 'weight' key
			 - the exam recommendation list in the 'recommendations' key, with properties exam, reason and condition.
			 - the 'explanation' key containing an explanation of your answer, especially about well known diseases.

			Your response must be just the raw JSON document, without ```json, ``` or anything else.
			 """)
	String recommendExams(Long patientId);
}

Le système peut ainsi aider les professionnels de santé à prendre des décisions et à mener des actions.

Video demo

VIDEO

Authors

NOTE:

L'application https://openexchange.intersystems.com/package/fhir-pex participe actuellement au concours InterSystems Java 2023. N'hésitez pas à explorer davantage la solution et n'hésitez pas à nous contacter si vous avez des questions ou avez besoin d'informations supplémentaires. Nous vous recommandons d'exécuter l'application dans votre environnement local pour une expérience pratique. Merci pour l'opportunité 😀!

0
0 124
Article Pierre LaFay · Jan 7, 2024 3m read

Dans le monde du Big Data, la sélection du bon format de fichier est cruciale pour un stockage, un traitement et une analyse efficaces des données. Avec la quantité massive de données générées chaque jour, le choix du format approprié peut avoir un impact considérable sur la vitesse, le coût et la précision des tâches de traitement des données. Il existe plusieurs formats de fichiers disponibles, chacun avec son propre ensemble d'avantages et d'inconvénients, ce qui rend complexe le choix de celui à utiliser. Certains des formats de fichiers Big Data populaires incluent CSV, JSON, Avro, ORC et

0
0 101
Article Pierre LaFay · Jan 7, 2024 1m read

InterSystems FAQ rubric

Il n'est pas nécessaire de recompiler les routines après la mise à niveau de la version, mais comme la mise à jour de la version écrase %SYS, les routines au format INT et OBJ créées par l'utilisateur (*.INT,*.OBJ) dans %SYS seront supprimées. Par conséquent, vous devez être prudent.

Les routines MAC, INT et OBJ portant les noms suivants ne sont pas supprimées.

%Z*.INT, %z*.INT, Z*.INT,z*.INT
%Z*.OBJ, %z*.OBJ, Z*.OBJ,z*.OBJ

Veuillez noter que les classes/CSP doivent être compilées après la mise à niveau.

0
0 37
Article Pierre LaFay · Jan 6, 2024 2m read

InterSystems FAQ rubric

Si une relation est définie et qu'il existe un grand nombre de n dans un rapport 1:n, une grande quantité de mémoire peut être consommée en raison du traitement séquentiel de la relation.

Après avoir référencé un objet à plusieurs côtés dans un programme et l'avoir fait pivoter en interne, le simple fait de libérer la variable contenant l'OREF (en la supprimant, en définissant une autre valeur, etc.) ne libérera pas les objets liés ni l'objet de relation. 

0
0 52
Article Pierre LaFay · Jan 3, 2024 8m read

Expérience et retour d'expérience du cours en ligne "Hands-On with InterSystems API Manager for Developers

Avec mes connaissances de base du conteneur Docker et de l'API REST, j'aimerais faire mon premier essai d'utilisation du gestionnaire d'API InterSystems pour prendre le contrôle des API et des microservices. J'ai suivi ce cours en ligne en utilisant mon instance IRIS locale comme hôte (système d'exploitation Windows) et IAM exécuté sur une machine virtuelle Linux (invité).

0
0 75
Article Pierre LaFay · Déc 31, 2023 1m read

InterSystems FAQ rubric

Si plusieurs produits InterSystems sont installés sur le même système, la dernière version du pilote ODBC InterSystems parmi les produits installés restera enregistrée dans le gestionnaire de pilotes.

Vous pouvez passer à n'importe quel pilote en modifiant l'entrée de la registry ci-dessous.

Veuillez noter que l'exécution de RegFiles.bat ne modifie pas le pilote ODBC.

L'entrée de la registry est la suivante.

HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\InterSystems ODBC35 key Driver
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\InterSystems ODBC35 key Setup
0
0 57
Article Pierre LaFay · Déc 30, 2023 1m read

Salut !

Récemment, j'ai eu besoin de configurer un serveur FHIR local à l'aide d'IRIS For Health et je pense avoir trouvé le moyen le plus simple et le plus simple qui soit.

Exécutez simplement dans le terminal ces deux lignes ci-dessous :

docker run --rm --name my-iris -d --publish 9091:1972 --publish 9092:52773 intersystemsdc/irishealth-community

et

docker exec -it my-iris iris session iris -U "USER" '##class(%ZPM.PackageManager).Shell("install fhir-server")'

Et vous aurez un serveur FHIR exécuté localement sur http://localhost:9092/fhir/r4.

AUssi simple que ça !

Le serveur FHIR utilisera la dernière version d'InterSystems IRIS for Health Community Edition et déploiera FHIR server from this app via le package IPM dans l'espace de noms FHIRSERVER.

Ceci est pour Mac, alors veuillez ajouter des commentaires sur la façon dont cela fonctionne sous Windows.

Il s'agit d'un article très court car il est très simple de configurer un serveur FHIR local avec InterSystems IRIS for Health et IPM Package Manager.

0
0 100
Annonce Irène Mykhailova · Déc 25, 2023

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 $

 

0
0 63