Réponse de @Ashok Kumar 

Bonjour @Muhammad Waseem 

Vous pouvez peut-être essayer d'extraire la ressource patient du bundle ou l'utiliser si c'est déjà une ressource. Chargez la classe du modèle patient FHIR HS.FHIR.DTL.vR4.Model.Resource.Patient avec la ressource extraite. Ensuite, vous pouvez convertir la date de naissance et valider l'âge. Vous pouvez utiliser la même logique dans votre code DTL dans un processus FHIR entre le service FHIR (HS.FHIRServer.Interop.Service) et l'opération FHIR (HS.FHIRServer.Interop.Operation).

ClassMethod VaidatePatientResource(patientResourceStreram As %Stream.Object)
{
	#dim patient As HS.FHIR.DTL.vR4.Model.Resource.Patient
	try {
		set patient = ##class(HS.FHIR.DTL.vR4.Model.Resource.Patient).FromJSON(patientResourceStreram)
		Set age = $horolog - $ZdateH(patient.birthDate,3)\360
		if age<18 $$$ThrowStatus($$$ERROR($$$GeneralError, "Age is less than 18"))
	}
	catch ex {
		w ex.DisplayString()
	}
}

Bonjour @Julia Pertin,

si j'ai bien compris ton besoin, pour régler ton problème qui consiste à éviter de récupérer plusieurs fois le même flux json, ton Business Service doit servir uniquement à appeler un Business Process, qui lui va se charger de récupérer le flux json pour le passer à une Business Operation.

Dans le cas où ton Business Service appelle le Business Process de manière synchrone, il attendra bien la réponse avant de s'exécuter à nouveau.
Dans le cas contraire, c'est à dire si le Business Process est appelé de manière asynchrone, le Business Service fera un nouvel appel à chaque atteinte du temps prévu par le paramètre "
INTERVALLE ENTRE APPELS".

  

Réponse de @Dmitry Maslennikov 

Pour quelques versions déjà, Caché et IRIS prennent déjà en charge OAuth2 dès le départ. Regardez la documentation.

Cela dépend de votre architecture, vous pouvez utiliser cette méthode ou utiliser n'importe quel fournisseur d'identité externe comme keycloack.

Et je pense qu'IAM peut également vous aider.

Réponse de @Rob Tweed 

Nous avons deux produits Open Source qui prendront en charge les JWT pour vous de la manière correspondant à ce que vous demandez (c'est-à-dire les services REST avec IRIS) :

- QEWD, si vous souhaitez tout implémenter en back-end dans Node.js / JavaScript

- mgweb-server si vous souhaitez utiliser la logique ObjectScript pour votre logique back-end

Pour QEWD et IRIS, voir :

https://github.com/robtweed/qewd-starter-kit-iris-networked

En particulier pour les services REST, voir :

https://github.com/robtweed/qewd-starter-kit-iris-networked/blob/master/...

et plus précisément cette section:

https://github.com/robtweed/qewd-starter-kit-iris-networked/blob/master/...

Pour le serveur mgweb, voir :

https://github.com/robtweed/mgweb-server

spécifiquement utilisé avec IRIS :

https://github.com/robtweed/mgweb-server/blob/master/IRIS.md

et dans ce document, cette section sur les JWT :

https://github.com/robtweed/mgweb-server/blob/master/IRIS.md#using-json-...

Rob

@Luis Angel Pérez Ramos propose une autre solution, hors Embedded Python : 

Eh bien, si votre instance IRIS ne prend pas en charge Embedded Python, vous pouvez procéder comme suit (si vous utilisez un serveur Linux) :

  1. Installez une application comme ImageMagick sur votre serveur
  2. À partir de votre opération commerciale, utilisez la fonction $ZF(-100) pour exécuter sur le serveur la commande magique permettant de convertir le PDG en JPG, quelque chose comme :
    $ZF(-100,"","magick","\usr\image.pdf","\usr\image.jpg")
  3. Peut-être que cela prend un certain temps, vous pouvez attendre la fin de l'exécution ou simplement créer un service métier pour obtenir tous les nouveaux fichiers PDF.

@Ben Spead a donné une première réponse en proposant d'utiliser Embedded Python :

Cela ressemble à un exemple classique d'exploitation de Python intégré dans IRIS pour utiliser le très grand nombre de bibliothèques Python qui font à peu près n'importe quoi :) Voici un article que j'ai trouvé lors d'une recherche rapide sur Google sur la façon de procéder en Python :

https://www.geeksforgeeks.org/convert-pdf-to-image-using-python/

Vous pouvez simplement exploiter les capacités Python d'InterSystems IRIS pour utiliser la façon dont ce problème a été résolu en Python !

Le moyen le plus simple de toujours rester dans le siècle en cours est :

$ZDATEH("26/05/23",4,,6)

Il suffit d'utiliser yearopt = 6 pour obtenir toutes les dates qui n'ont que 2 chiffres dans le siècle courant.

w $zdt($ZDATEH("26/05/23",4,,6),3)
2023-05-26

w $zdt($ZDATEH("26/05/1923",4,,6),3)
1923-05-26

Pour activer l'ensemble des événements d'AUDIT système, il suffit d'exécuter la requête SQL suivante depuis l'espace de noms %SYS :


update security.events set enabled=1 where flags = 1

exemple :


set tRes = ##class(%SQL.Statement).%ExecDirect(,"update security.events set enabled=1 where flags = 1")

if tRes.%SQLCODE=0 {

set ^["USER"]TRACE("%SYS Security.Events")=tRes.%ROWCOUNT_" successfully enabled"

} else {

set ^["USER"]TRACE("%SYS Security.Events")=tRes.%Message_" SQLCODE:"_tRes.%SQLCODE

}

Bonjour @Taher C,

je te suggère de créer des API REST dans IRIS  et de les consommer depuis PowerApps/PowerAutomate.

Tu trouveras ici un exemple de comment envoyer une requête http depuis PowerAutomate :

https://www.spguides.com/rest-api-in-power-automate/

NB : Hubic est le nom historique du projet chez CFAO, qui n'a pas d'équivalence avec InterSystems Ensemble ni IRIS 😉

Faire la modification depuis la classe %SYSTEM.CSP en utilisant $system.CSP.SetConfig:

CSS>d $system.CSP.DisplayConfig()
...
CSS>w $system.CSP.GetConfig("DefaultPasswordChangePage")
%CSP.PasswordChange.cls

CSS>d $system.CSP.SetConfig("DefaultPasswordChangePage","CSS.CSP.ChangePassword.cls")

CSS>w $system.CSP.GetConfig("DefaultPasswordChangePage")
CSS.CSP.ChangePassword.cls

Bonjour,

vous pouvez aussi utiliser une méthode "low-code" en utilisant le langage DTL avec l'action REMOVE

 

utils.HL7.transfo.removeSegment