Embedded : Premier Pas
Un projet de démonstration d’utilisation de la DevBox-santé DMP en mode embedded se trouve : https://bitbucket.org/devbox-sante/dmpc-demo
Installer
l’utilisation de cette API ne nécessite pas d’installation. Il suffit d’ajouter les dépendances adequates dans votre projet Maven / Gradle.
<dependencies>
<dependency>
<groupId>fr.devboxsante.dmp</groupId>
<artifactId>dmp-api</artifactId>
<version>${dmp-api.version}</version>
</dependency>
<dependency>
<groupId>fr.devboxsante.dmp</groupId>
<artifactId>dmp-client-impl</artifactId>
<version>${dmp.version}</version>
</dependency>
Écrire votre première intégration
Initialisation du client
La DevBox-Santé DMP est une application spring, pour obtenir un client DMP, il faut
injecter dans l’application la classe implémentant l’interface DMPCClient
par les mécanismes CDI de spring.
@Component
public class MonComposantDMP {
@Autowired
private DMPCClient client;
}
Une méthode dans le composant
// Initialisation d'un PS auteur des différentes transactions
DMPCAuthor ps1 = new DMPCAuthor("1234", "Dupont", "Pierre");
ps1.setRole("Médecin");
ps1.setStructureNom("Clinique du beau Soleil");
// Test d'existence (recherche) d'un patient
DMPCPatient patient = client.td02Exist(new TD02Request("0404312364978044945679")).getPatient();
// Initialisation d'un document à soumettre au DMP
DMPCDocument document = new DMPCDocument();
document.setTitle("Titre du document concernant l'hépatite virale");
document.setContent("Contenu textuel");
document.addEvent(new DMPCCode("B18", "2.16.840.1.113883.6.3", "Hépatite virale chronique"));
document.setFormat(client.getCodesFor(DMPCCode.ANSJeuxValeurs.FORMAT_CODE).get(1).getCode());
// …
// Création de l'enveloppe de soumission
DMPCSubmission submission = new DMPCSubmission();
submission.addDocument(document);
submission.setPatient(patient);
// Envoi vers le DMP de la soumission.
TD21Response td21Response = client.td21SubmitDocuments(context, new TD21Request(submission));
System.out.println("Soumission enregistré avec l'uuid :" + td21Response.getSubmission().getUuid());
Diagrammme de séquences correspondant
!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
== Initialisation ==
DMPCClient -> DMPCClient : readCertificates
DMPCClient -> DMPCClient : generate VIHF
DMPCClient -> DMP: init TLS connexion(securise)
== Test d'existence ==
DMPCClient -> DMP : td02Exist("279035121518989")
DMP --> DMPCClient : retourne un patient
== Soumission ==
DMPCClient -> DMP : td21SubmitDocuments(new Document("hepatite virale")
DMP --> DMPCClient : acknowledge
Les différents objets du modèle
Afin de transmettre les métadonnées nécessaires aux DMP pendant les différentes transactions, la DevBox-Santé DMP contient un modèle métier dont les classes principales suivantes :
DMPCCode
DMPCPersonnelSante
DMPCPatient
DMPCDocument
DMPCSubmission
DMPCCode
Un DMPCCode
est la structure de base pour toute codification.
Une fois un DMPCClient
initialisé, il est possible d’obtenir toutes les
nomenclatures standard depuis l’enum DMPCCode.ANSJeuxValeurs
.
Exemple de récupération d’un DMPCCode :
// Je m'intéresse à la nomenclature SubjectRole
List<DMPCCode> roles = client.getCodesFor(DMPCCode.ANSJeuxValeurs.SUBJECT_ROLE);
// liste de tous les codes SubjetRole
for (DMPCCode role : roles) {
System.out.println("role :" + role);
}
Initialisation du contexte
L’API étant stateless un contexte doit être rappelé pour chaque transaction vers le DMP. Un contexte peut être définit de la manière suivante :
DMPCContext context = new DMPCContext();
DMPCPersonnelSante ps1 = // initialisation d'un personnel de santé responsable de la transaction vers le DMP
context.setAuthor(ps1);
Exemple d’utilisation du contexte dans le cadre d’un test d’existence
client.td02Exist(context, new TD02Request(patient));
Transactions
L’ensemble des transactions sont décrites dans le document transactions