CPS Agent Livre de cuisine
1. Démarrer la Devbox-Santé DMP côté backend
Il s’agit d’une image docker avec la configuration suivante :
devbox-sante:
dmp:
security.mode: withCpsAgent
Pour lancer l’image docker :
docker run --name devbox-sante-cps-agent -p 8080:8080 -d devboxsante/CLIENT:VERSION
Nous avons déployé pour l’instant cela :
!theme aws-orange
!define DEVBOX_COLOR #278ef5
!define DMP_COLOR #35D9C0
!define MSS_COLOR #DE5D80
!define INS_COLOR #07A2CF
!define CPS_COLOR #D34A3C
!define VITALE_COLOR #5FD67A
!define PSC_COLOR #ff7765
!define APCV_COLOR #c6e66d
!define ANNUAIRE_COLOR #7613e0
!define DATA_COLOR #ffa800
node "Environnement back" {
package "DevBox-Santé Proxy REST" DEVBOX_COLOR {
component "DevBox-sante DMP" as dmpFacade DMP_COLOR {
[CpsAgentClient] CPS_COLOR
}
}
}
2. Démarrer la DevBox-Santé CPS agent côté client
Il s’agit d’insaller une DevBox-Sante client avec un installer configuré en tant que CPS-agent :
devbox-sante:
security:
cpsAgent: true
La DevBox-Santé tourne dans notre exemple sur le port 10035 :
Nous avons déployé maintenant:
!theme aws-orange
!define DEVBOX_COLOR #278ef5
!define DMP_COLOR #35D9C0
!define MSS_COLOR #DE5D80
!define INS_COLOR #07A2CF
!define CPS_COLOR #D34A3C
!define VITALE_COLOR #5FD67A
!define PSC_COLOR #ff7765
!define APCV_COLOR #c6e66d
!define ANNUAIRE_COLOR #7613e0
!define DATA_COLOR #ffa800
node "Poste Client (Windows/Mac/Linux)" {
package "DevBox-Santé Proxy REST" as cpsAgent DEVBOX_COLOR {
[DevBox-sante CPS] as cps CPS_COLOR
}
[Cryptolib CPS (ANS)] as cryptolibCPS
}
node "Environnement back" {
package "DevBox-Santé Proxy REST" DEVBOX_COLOR {
component "DevBox-sante DMP" as dmpFacade DMP_COLOR {
[CpsAgentClient] CPS_COLOR
}
}
}
À noter
Le cps-agent est lancé en ssl pour chiffrer les connexions entre le cps agent et sont client. Néanmoins, comme le cps-agent tourne sur un poste qui n’a pas de nom de domaine, le certificat utilisé est auto-signé.3. Obtenir le mot de passe de la DevBox-santé CPS agent sur le poste client.
Pour obtenir le mot de passe d’accès, il faut depuis un processus local au poste client faire l’appel à la route /cps/password
Ce mot de passe est dorénavant connu de l’application front, et peut être passé au backend.
4. Appeler la DevBox-Santé DMP avec les informations du CPS Agent
Le frontend fait passer au backend les informations du poste client CPS Agent suivantes :
- L’IP du poste client, dans notre cas : 192.168.1.12
- Le numéro de port du poste client, dans notre cas : 10035
- Le mot de passe préalablement obtenu, dans notre cas : f2e3122c-b7f4-473f-b763-8ad5e050ae74
Le backend peut dont appeler une transaction du DMP avec les informations fournies :
post {
url: {{base_url}}/dmp/td02Exist
body: json
auth: none
}
headers {
Content-Type: application/json
devboxsante.cps.agent.client.url: https://192.168.1.12:10035
devboxsante.cps.agent.client.user:
devboxsante.cps.agent.client.password: f2e3122c-b7f4-473f-b763-8ad5e050ae74
}
body:json {
{
"context": {
},
"request": {
"matriculeINS": {
"valeur": "287080883795737",
"identifiantSysteme": "1.2.250.1.213.1.4.10"
}
}
}
}
Ce qui a pour résultat dans Bruno :
Au final nous avons mis en place l’architecture suivante :
!theme aws-orange
!define DEVBOX_COLOR #278ef5
!define DMP_COLOR #35D9C0
!define MSS_COLOR #DE5D80
!define INS_COLOR #07A2CF
!define CPS_COLOR #D34A3C
!define VITALE_COLOR #5FD67A
!define PSC_COLOR #ff7765
!define APCV_COLOR #c6e66d
!define ANNUAIRE_COLOR #7613e0
!define DATA_COLOR #ffa800
node "Poste Client (Windows/Mac/Linux)" {
[FrontEnd intégrateur] as frontend
package "DevBox-Santé Proxy REST" as cpsAgent DEVBOX_COLOR {
[DevBox-sante CPS] as cps CPS_COLOR
}
[Cryptolib CPS (ANS)] as cryptolibCPS
}
node "Environnement intégrateur" {
[BackEnd intégrateur] as backend
package "DevBox-Santé Proxy REST" DEVBOX_COLOR {
component "DevBox-sante DMP" as dmpFacade DMP_COLOR {
[CpsAgentClient] CPS_COLOR
}
}
}
cloud "**DMP**" as DMP
frontend <--> cpsAgent : 1 GET /cps/password
frontend -d-> backend : 2 POST {ip, port , password}
backend -d-> dmpFacade : 3 POST /dmp/td02Exist , headers {cps.agent.client.url, cps.agent.client.passaord}
CpsAgentClient <-> cpsAgent : 4 /cps/ opérations
cps <-down-> cryptolibCPS : 5 appels natifs
dmpFacade -down-> DMP : 6 POST SOAP / XDS