PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → be.health connecteur
be.health connecteur
Débuté par J-M DES GROTTES, 02 mar. 2018 18:50 - 16 réponses
Membre enregistré
57 messages
Popularité : +6 (6 votes)
Posté le 02 mars 2018 - 18:50
Bonjour,

Je dois implanter dans mon application non commerciale une connection sur le réseau de santé belge be.ehealth

Le connecteur est en .net

J'importe donc l'assemblage connector-technical-core.dll dans mon application puis j'instancie ....

clLaSession est un SessionManagerImpl
clLaSession:getSession()
clMaSession est un SessionManager
sHokPassword est une chaîne = "password of Holder-Of-Key eHealth Certificate Key Store";
sPersPassword est une chaîne = "password of Personal eHealth Certificate Key Store ";
clMaSession:getSession()
SI clLaSession:hasValidSession() ALORS
clLaSession:createSession(sHokPassword,sPersPassword)
SINON
clLaSession:unloadSession()
clLaSession:createSession(sHokPassword,sPersPassword)
FIN

Comme cela cela ne marche pas car "SessionManager" est une classe abstraite

Par contre:

clLaSession est un SessionManagerImpl
clLaSession:getSession()
//clMaSession est un SessionManagerImpl
sHokPassword est une chaîne = "password of Holder-Of-Key eHealth Certificate Key Store";
sPersPassword est une chaîne = "password of Personal eHealth Certificate Key Store ";
//clMaSession:getSession()
SI clLaSession:hasValidSession() ALORS
clLaSession:createSession(sHokPassword,sPersPassword)
SINON
clLaSession:unloadSession()
clLaSession:createSession(sHokPassword,sPersPassword)
FIN

semble être accepté ... mais à l'exécution ... erreur "l'objet de type be.ehealth...... n'a pu être créé ....

Une idée ....

Bien à vous

J-M des Grottes

--
Dr J-M des Grottes
Gestionnaire du Registre des Néphrologues Francophones de Belgique
CHU Tivoli
La louvière
Belgique
Membre enregistré
948 messages
Popularité : +30 (92 votes)
Posté le 03 mars 2018 - 03:50
Coucou,

Tu as essayer d'utiliser directement la syntax C# avec la nouvelle mise a jour Update1 de windev 23 ?

Reference: https://forum.pcsoft.fr/fr-FR/pcsoft.fr.windev/215083-code/read.awp

--
In üs we trust

Chocolat en Suisse - #Foetus
Kaeng Khiao Wan en Thailland - #ATR
Kopi luwak en Indonesie - #Abracadabra
Membre enregistré
948 messages
Popularité : +30 (92 votes)
Posté le 03 mars 2018 - 04:26
Coucou,

Comme ton application et non commerciale, si tu me fournis les informations de ton assemblage, je veut t’écrire ton morceau de code ;)

charly.cando.anywhere@gmail.com


Et je publierais le résultat ici ;)

#PasToujoursLeTempsDeFaireDeLaPromo

--
In üs we trust

Chocolat en Suisse - #Foetus
Kaeng Khiao Wan en Thailland - #ATR
Kopi luwak en Indonesie - #Abracadabra
Message modifié, 03 mars 2018 - 04:29
Membre enregistré
57 messages
Popularité : +6 (6 votes)
Posté le 03 mars 2018 - 14:32
Bonjour,

Merci de me lancer une bouée ....

En fait je bosse avec la version 22 (pour le moment ... du moins ).

Les bibliothèques de base sont en JAVA mais il y aussi des .NET avec des exemples C#.

Toutes ces bibliothèques permettent en fait de se connecter sur le réseau eHealth (réseau de santé belge) et par delà d'accéder selon sa carte d'identité et/ou ses certificats à différents services. Déjà ouvrir simplement une session sur le réseau semble tonique .... le reste risque d'être jouissif ....

Les échanges se font par bibliothèques et webServices multiples en xml standardisés ....

C'est très lourd. Ils ont eu la bonne idée de mettre à disposition des DLL qui devraient permettre de s'en sortir mais windev m'envoie me faire pendre ailleurs (j'ai certainement raté un truc). Il y a des aides et des documentations assez fournies.
Dès que possible je t'envoie la bibliothèque ne fût ce que pour ne mourir idiot ;-)

Bien à toi

JMDG

--
Dr J-M des Grottes
Gestionnaire du Registre des Néphrologues Francophones de Belgique
CHU Tivoli
La louvière
Belgique
Posté le 17 avril 2018 - 12:04
Bonjour,

je me permets de venir vers vous car j'ai exactement le même soucis il ne veut pas créer mon objet de type : SessionManagerImpl.

Comment avez-vous fait pour résoudre ce problème ?

Bien à vous.
Un grand merci.
Posté le 17 avril 2018 - 14:27
Bonjour

Voici comment je récupère le session manager :
oSessionManager est un "be.ehealth.technicalconnector.session".SessionManager dynamique = "be.ehealth.technicalconnector.session".Session.getInstance()


Bon dev.

Laurent M.
Posté le 18 avril 2018 - 10:59
Bonjour,

Merci pour votre réponse :)

Pouvez-vous me dire où je peux trouver les mots de passe demandés ?
"password of Personal eHealth Certificate Key Store" est le mot de passe que j'ai mis lorsque j'ai créé le certificat ehealth ?
Par contre l'autre je ne sais vraiment pas où je pourrais le retrouver.

Avez-vous également une piste pour savoir comment récupérer les informations suivantes :
- Schéma de médication
- Sumehr
- Journal
Je pense que tout doit se faire par XML. Où puis-je trouver les XSD correspondants afin des les importer dans WinDev ?

Merci pour votre aide :)
Posté le 18 avril 2018 - 11:52
Bonjour

Pour mon utilisation je suis passé par la carte d'identité électronique.
Je ne saurais donc pas vous dire à quoi correspond le 2ème mot de passe.
oSessionManager.createSessionEidOnly()
oSessionManager.loadEncryptionKeys("password of Personal eHealth Certificate Key Store")


Pour la documentation, le Sumehr repose sur le format Kmehr -> https://www.ehealth.fgov.be/standards/kmehr
Pour les xsd, c'est ici : https://www.ehealth.fgov.be/standards/kmehr/en/page/xschema

Bon dev.

Laurent M.
Posté le 18 avril 2018 - 15:01
Merci pour votre réponse.

Est-ce que quelqu'un d'autre aurait une piste afin que je puisse me connecter sans la carte d'identité?

Merci beaucoup car cela fait plusieurs jours que je suis dessus et je n'avance pas.
Membre enregistré
1 message
Posté le 23 mai 2018 - 10:34
Bonjour,

J'ai aussi besoin d'aide pour intégrer eHealth dans mon application.
Qui peut aider? (Nederlands, English, français)

--
Philip Neven
Membre enregistré
57 messages
Popularité : +6 (6 votes)
Posté le 23 mai 2018 - 11:46
Bonjour à tous,

Pour le moment, me rendant compte que Windev est peu ouvert .... je suis passé en JAVA et je recommence le développement avec ce langage ... le vrai JAVA pas le JAVA windevien. Les débuts sont plus durs mais après cela va très vite ....

Concernant les mots de passe, il y en a 1 qui correspond au certificat et un autre au stockage local je pense ..... il y a une explication assez claire sur eHealth .

A+

--
Dr J-M des Grottes
Gestionnaire du Registre des Néphrologues Francophones de Belgique
CHU Tivoli
La louvière
Belgique
Posté le 09 juillet 2018 - 14:28
Bonjour

Ayant du me remettre sur l'utilisation de connecteurs eHealth pour ajouter de nouvelles fonctionnalités à mon logiciel, j'en ai profité pour améliorer et étendre la partie connexion.

Pour ce qui est des mots de passe à utiliser, ce sont ceux que vous inventez lors de la demande de vos certificats.
Pour les 3 parties (identification, holderofkey et encryption) vous pouvez utiliser un seul et même certificat s'il a bien été créé pour ces 3 services.

Remarques sur mon code :
1) vous pouvez compléter l'énumération tenumEH_HCParty en fonction de vos besoins.
2) si vous utilisez les certificats et ne voulez pas que l'utilisateur utilise sa carte d'identité, vous devez prendre le type EH_TS_Fallback. Les 2 autres type nécessitent obligatoirement la carte eId.
3) j'utilise un fichier properties à minima, les paramètres étant rempli par programmation.
4) n'oubliez pas de remplacer la chaine "<Mon logiciel>" par le nom de votre logiciel.
5) n'oubliez pas d'utiliser le bon fichier de properties en fonction du serveur de destination (acceptation en test, production en déploiement) lors de l'appel à EH_InitConfiguration en fin de la partie de déclaration

Pour mes tests j'ai utilisé une collection de procédure avec le code suivant.
// - Déclaration
strEH_Keystore est une structure
chIdentification est une chaîne
chHolderOfKey est une chaîne
chEncryption est une chaîne
FIN
strEH_Hub est une structure
chEndPoint est une chaîne
chId est une chaîne
chApplication est une chaîne
FIN
strEH_Utilisateur est une structure
chNom est une chaîne
chPrénom est une chaîne
chNISS est une chaîne
chINAMI est une chaîne
enumProfession est un tenumEH_HCParty
stKeystore est un strEH_Keystore
stKeystoreMDP est un strEH_Keystore
stHub est un strEH_Hub
FIN

tenumEH_HCParty est une Enumération
Indéterminé = ""
Médecin = "persphysician"
Infirmière = "persnurse"
FIN
tenumEH_TypeSession est une Enumération
EH_TS_eID
EH_TS_eID_Only
EH_TS_Fallback
FIN

oSessionManager est un "be.ehealth.technicalconnector.session".SessionManager dynamique

EH_InitConfiguration(fRepExe() + ["\"] + "be.ehealth.technicalconnector.acc.properties")

Procedure EH_InitConfiguration(chFichier_ est une chaîne) : booléen

SI chFichier_ = "" ALORS RENVOYER Faux
SI PAS fFichierExiste(chFichier_) ALORS fCrée(chFichier_)

QUAND EXCEPTIONEXCEPTION DANS
ConfigFactory.setConfigLocation(chFichier_)
FAIRE
VersPressePapier(ExceptionInfo(errComplet))
Erreur(ExceptionInfo(errMessage))
RENVOYER Faux
FIN

RENVOYER Vrai

Procedure EH_FermeSession() : booléen

SI EH_SessionOuverte() ALORS oSessionManager.unloadSession()
SI PAS EH_SessionOuverte() ALORS
Libérer oSessionManager
oSessionManager = Null
FIN

RENVOYER oSessionManager = Null

Procedure EH_OuvreSession(enumTypeSession_ est un tenumEH_TypeSession, stUtilisateur_ est un strEH_Utilisateur) : booléen
oValidator est un ConfigValidator dynamique = ConfigFactory.getConfigValidator()
oConfig est un "be.ehealth.technicalconnector.config".Configuration dynamique = oValidator.getConfig()

Sablier()
// - On ferme la session en cours
SI PAS EH_FermeSession() ALORS RENVOYER Faux

// - On configure la nouvelle session
oConfig.setProperty("package.name","<Mon logiciel>")
SI stUtilisateur_.chPrénom <> "" ALORS oConfig.setProperty("user.firstname",stUtilisateur_.chPrénom)
SI stUtilisateur_.chNom <> "" ALORS oConfig.setProperty("user.lastname",stUtilisateur_.chNom)
SI stUtilisateur_.chNISS <> "" ALORS oConfig.setProperty("user.inss",stUtilisateur_.chNISS)
SI stUtilisateur_.chINAMI <> "" ALORS oConfig.setProperty("user.nihii",stUtilisateur_.chINAMI)
SI stUtilisateur_.enumProfession <> tenumEH_HCParty.Indéterminé ALORS oConfig.setProperty("main.kmehr.quality",stUtilisateur_.enumProfession..Valeur)
SI stUtilisateur_.stKeystore.chIdentification <> "" ALORS oConfig.setProperty("sessionmanager.identification.keystore",stUtilisateur_.stKeystore.chIdentification)
SI stUtilisateur_.stKeystore.chHolderOfKey <> "" ALORS oConfig.setProperty("sessionmanager.holderofkey.keystore",stUtilisateur_.stKeystore.chHolderOfKey)
SI stUtilisateur_.stKeystore.chEncryption <> "" ALORS oConfig.setProperty("sessionmanager.encryption.keystore",stUtilisateur_.stKeystore.chEncryption)
SI stUtilisateur_.stHub.chEndPoint <> "" ALORS oConfig.setProperty("endpoint.hubv3.intra",stUtilisateur_.stHub.chEndPoint)
SI stUtilisateur_.stHub.chId <> "" ALORS oConfig.setProperty("hubv3.id",stUtilisateur_.stHub.chId)
SI stUtilisateur_.stHub.chApplication <> "" ALORS oConfig.setProperty("hubv3.application",stUtilisateur_.stHub.chApplication)
//SI <> "" ALORS oConfig.setProperty("","")

// - On ouvre la nouvelle session
QUAND EXCEPTIONEXCEPTION DANS
oSessionManager = "be.ehealth.technicalconnector.session".Session.GetInstance()

SELON enumTypeSession_
CAS EH_TS_eID : oSessionManager.createSession(stUtilisateur_.stKeystoreMDP.chHolderOfKey,stUtilisateur_.stKeystoreMDP.chEncryption)
CAS EH_TS_eID_Only : oSessionManager.createSessionEidOnly()
CAS EH_TS_Fallback : oSessionManager.createFallbackSession(stUtilisateur_.stKeystoreMDP.chIdentification,stUtilisateur_.stKeystoreMDP.chHolderOfKey,stUtilisateur_.stKeystoreMDP.chEncryption)
FIN
FAIRE
VersPressePapier(ExceptionInfo(errComplet))
Erreur(ExceptionInfo(errMessage))
FIN

Sablier(Faux)
RENVOYER EH_SessionOuverte()

Procedure EH_SessionOuverte() : booléen

SI oSessionManager = Null ALORS RENVOYER Faux

RENVOYER oSessionManager.hasValidSession()


Bon dev.

Laurent M.
Posté le 02 janvier 2020 - 12:45
Bonjour,
J'ai lu votre code qui est pas mal mais j'ai un souci car je n'arrive à me connecter.
J'ai un message "Could not load descryption Keys"

est-il possible de m'aider car je suis en mode test pour pouvoir ensuite, valider des prescriptions électroniques (RECIP-e)
Membre enregistré
57 messages
Popularité : +6 (6 votes)
Posté le 05 janvier 2020 - 16:32
Premier soucis .....

ConfigFactory.setConfigLocation(chFichier_)

... Réponse:

Appel WL :
Traitement de 'Procédure globale EH_InitConfiguration' (COL_Recipe.EH_InitConfiguration), ligne 19

Que s'est-il passé ?
L'objet <ConfigFactory> est inconnu dans l'assemblage <F:\Mes Projets\WD24\Dialyse_LOW\Exe\connector-technical-core.dll>.
Vérifier que la version de l'assemblage <F:\Mes Projets\WD24\Dialyse_LOW\Exe\connector-technical-core.dll> utilisée en exécution est la même que la version utilisée pour la compilation du projet.
L'objet de type <be.ehealth.technicalconnector.config.ConfigFactory> (assemblage <F:\Mes Projets\WD24\Dialyse_LOW\Exe\connector-technical-core.dll>) n'a pas pu être créé

Code erreur : 200005
Niveau : erreur fatale

Dump de l'erreur du module 'wd240net2.dll' (24.0.73.0).
Identifiant des informations détaillées (.err) : 200004
Informations supplémentaires :
EIT_PILEWL :
Procédure globale EH_InitConfiguration (COL_Recipe.EH_InitConfiguration), ligne 19
Déclaration de COL_Recipe (COL_Recipe), ligne 37
EIT_DATEHEURE : 05/01/2020 16:29:26
EIT_TYPE_WDFILE : <7>
EIT_IDCODE : <458752>


... une idée ?

--
Dr J-M des Grottes
Gestionnaire du Registre des Néphrologues Francophones de Belgique
CHU Tivoli
La louvière
Belgique
Posté le 06 janvier 2020 - 09:07
Bonjour

L'erreur signale :
Vérifier que la version de l'assemblage <F:\Mes Projets\WD24\Dialyse_LOW\Exe\connector-technical-core.dll> utilisée en exécution est la même que la version utilisée pour la compilation du projet.

Vérifiez donc que vous utilisez les dll du pack que vous avez importé dans votre projet.

Personnellement, quand je passe à une nouvelle version du pack, je retire les dll du répertoire Exe du projet et j'y met les nouvelles. Ensuite dans le projet je retire les dll et j'importe celles de la nouvelle version.

Bon dev.

Laurent M.
Membre enregistré
57 messages
Popularité : +6 (6 votes)
Posté le 06 janvier 2020 - 11:35
OK, merci pour l'info ....

Les messages sont parfois un peu sibyllins et pourtant ....

Je teste ....

A+

--
Dr J-M des Grottes
Gestionnaire du Registre des Néphrologues Francophones de Belgique
CHU Tivoli
La louvière
Belgique
Posté le 09 février 2023 - 14:34
Bonjour,

Avez vous réussi à faire l'intégration du connecteur hubv3 (rsw)

Cordialement

joseph