Architectures

Description générale des diffèrentes architectures possibles

Côté serveur

Les 3 architectures suivantes peuvent être mises en œuvre en même temps avec un seul container Docker. Il s’agit finalement de la mise en avant de chaque mode d’authentification dans l’écosysteme DevBox-Santé.

Docker avec certificat P12

Cette architecture permet d’accéder aux différents téléservices en utilisant un certificat serveur de l’IGC-Santé.

Particularité : Architecture qui convient bien au milieu hospitalier. Impossibilité d’accéder aux lecteurs de carte.

@startuml
!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 EPRESC_COLOR #555fa7
!define DATA_COLOR #ffa800
!define GREY_COLOR #cccccc
left to right direction

card "Docker Container" GREY_COLOR  {

    card "DevBox-Santé" as devbox DEVBOX_COLOR {
        card "Connecteurs" as connecteurs {
            [DevBox-sante DMP] as dmp DMP_COLOR
            [DevBox-sante INSi] as ins INS_COLOR
            [DevBox-sante MSS] as mss MSS_COLOR
        }
    }
}
[Solution logicielle\nintégrateur] as backend
cloud "**DMP**" as DMP
cloud "**Opérateurs MSS (Ségur)**" as operateur
cloud "**Téléservices Sesam-Vitale**" as TS

backend  --> devbox : REST (envoi certificats dans l'entête HTTP)
dmp --> DMP : SOAP
ins --> TS : SOAP
mss --> operateur : SMTP/IMAP
@enduml

Docker dbx-agent

Cette architecture permet d’utiliser le lecteur de cartes CPS et Vitales tout en laissant la logique métier d’appel au backend de l’intégrateur.

Particularité : À l’avantage du client lourd et de la containarisation Docker. Reste l’installation du dbx-agent sur le poste de l’utilisateur.

@startuml
!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 EPRESC_COLOR #555fa7
!define DATA_COLOR #ffa800
!define GREY_COLOR #cccccc
left to right direction

card "Poste Client (Windows/Mac/Linux)" GREY_COLOR {
    [FrontEnd intégrateur] as frontend

    card "dbx-agent" as dbxagent DEVBOX_COLOR {
        card "Composants" as composants {        
            [DevBox-sante CPS] as cps CPS_COLOR
            [DevBox-sante Vitale] as vitale VITALE_COLOR
        }
    [CryptolibCPS] as cryptolibCPS
    [Api Vitale] as sesamVitale
    }
}

card "Docker Container" GREY_COLOR{
    card "DevBox-Santé" as devbox DEVBOX_COLOR {
        card "Connecteurs" as connecteurs {
            [DevBox-sante DMP] as dmp DMP_COLOR
            [DevBox-sante INSi] as ins INS_COLOR
            [DevBox-sante ApCV] as apcv APCV_COLOR
            [DevBox-sante E-Presc] as epresc EPRESC_COLOR
        }
    }
}

[Solution logicielle\nintégrateur] as backend
cloud "**DMP**" as DMP
cloud "**Téléservices Sesam-Vitale**" as TS

frontend --> backend
frontend ..> dbxagent : dbx://{dbxAgentSessionId}
backend --> devbox :  {dbxAgentSessionId} 
cps <--> cryptolibCPS : natif
vitale <--> sesamVitale : natif
devbox <--> dbxagent : wss://{dbxAgentSessionId}
dmp --> DMP : SOAP
ins --> TS : SOAP
apcv --> TS : SOAP
epresc --> TS : SOAP
@enduml

Docker eProxy

Cette architecture met en avant le support de ProSanté-Connect dans la DevBox-Santé.

Particularité : Elle permet d’ajouter le support de Pro-Santé Connect. Elle nécessite un composant supplémentaire la DevBox-Santé eProxy.

@startuml
!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 EPRESC_COLOR #555fa7
!define EPROXY_COLOR #2f78cc
!define DATA_COLOR #ffa800
!define GREY_COLOR #cccccc
left to right direction


card "Docker Network" GREY_COLOR {

    component "DevBox-Santé eProxy\n(API / Auth)" as proxy EPROXY_COLOR

    card "DevBox-Santé" as devbox DEVBOX_COLOR {
        card "Connecteurs" as connecteurs {
            [DevBox-sante DMP] as dmp DMP_COLOR
            [DevBox-sante INSi] as ins INS_COLOR
            [DevBox-sante MSS] as mss MSS_COLOR
            [DevBox-sante E-Presc] as epresc EPRESC_COLOR
        }
    }
}

[Solution logicielle intégrateur] as backend

cloud "**DMP**" as DMP
cloud "**Opérateurs MSS (Ségur)**" as operateur
cloud "**Téléservices Sesam-Vitale**" as TS
cloud "**ProSantéConnect**" as PSC

backend --> proxy : Authentification PSC
proxy --> PSC : mTLS/Auth
backend --> devbox : jwt token
dmp --> proxy : SOAP
ins --> proxy : SOAP
epresc --> proxy : SOAP
proxy --> DMP : mTLS/SOAP
proxy --> TS : mTLS/SOAP
mss --> operateur : SMTP/IMAP
@enduml

Poste Utilisateur

Cette architecture permet d’accéder localement aux différents lecteurs de carte, à la cryptolibcps, aux apis de lecture sesam-vitale.

Particularité : Toute la DevBox-Santé est installé sur le poste de l’utilisateur.

@startuml
!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 EPRESC_COLOR #555fa7
!define DATA_COLOR #ffa800
!define GREY_COLOR #cccccc
left to right direction

card "Poste Utilisateur (Windows/Mac/Linux)" GREY_COLOR {
    [Logiciel métier intégrateur\nClient Web/Lourd] as frontend

    card "DevBox-Santé" as devbox DEVBOX_COLOR {
        card "Connecteurs" as connecteurs {
            [DevBox-sante DMP] as dmp DMP_COLOR
            [DevBox-sante INSi] as ins INS_COLOR
            [DevBox-sante MSS] as mss MSS_COLOR
            [DevBox-sante ApCV] as apcv APCV_COLOR
            [DevBox-sante E-Presc] as epresc EPRESC_COLOR
        }
        card "Composants" as composants {        
            [DevBox-sante CPS] as cps CPS_COLOR
            [DevBox-sante Vitale] as vitale VITALE_COLOR
        }
        [Cryptolib CPS (ANS)] as cryptolibCPS
        [Api SesamVitale] as sesamVitale
    }
}

cloud "**DMP**" as DMP
cloud "**Mailiz**" as mailiz
cloud "**Téléservices Sesam-Vitale**" as TS


frontend --> connecteurs : REST (localhost)
frontend --> composants : REST (localhost)
cps <--> cryptolibCPS : appel natif
vitale <--> sesamVitale : appel natif
dmp --> DMP : SOAP
ins --> TS : SOAP
apcv --> TS : SOAP
epresc --> TS : SOAP
mss --> mailiz : SOAP
@enduml