TD3.1 (depuis version 3.2)
Il est possible de faire des recherches de document ainsi que des recherches des documentation
GetDocuments
Permet la recherche par identifiant :
Exemple de Requête en Java :
TD31Response td31Response = client.td31Find(context, TD31Request.GetDocuments.builder()
.matriculeINS(patient.getMatriculeINS())
.documentEntryUniqueId(uniqueId)
.build());
En Rest
curl --location 'http://localhost:9999/dmp/td31Find' \
--header 'Content-Type: application/json' \
--data '{
"context": {
},
"request": {
"query": "GetDocuments",
"matriculeINS": {
"valeur": "279035121518989",
"identifiantSysteme": "1.2.250.1.213.1.4.10"
},
"statuses": [
"APPROVED"
],
"documentEntryUniqueId": "2.25.120152820330539744963703480707082727589.2401081046.1.1.1"
}
}'
FindDocuments
Permet la recherce de documents sur l’ensemble des critères possibles en XDS, et ceux demandés par les différents test CNDA
Exemple de Requête en Java :
final TD31Request.FindDocuments request = new TD31Request.FindDocuments();
request.setMatriculeINS(patient.getMatriculeINS());
request.setConfidentialityCode(Arrays.asList("N"));
request.setTypeCode(List.of("11488-4", "15507-7"));
request.setStatuses(Collections.singletonList(AvailabilityStatus.APPROVED));
final TD31Response response = client.td31Find(context, request);
En Rest
curl --location 'http://localhost:9999/dmp/td31Find' \
--header 'Content-Type: application/json' \
--data '{
"context": {
},
"request": {
"query": "FindDocuments",
"matriculeINS": {
"valeur": "279035121518989",
"identifiantSysteme": "1.2.250.1.213.1.4.10"
},
"statuses": [
"APPROVED"
],
"typeCode": ["11488-4", "15507-7"]
}
}'
FindSubmissionSetsAndGetContents
Cette transaction permet de faire la recherche par date de soumission demandé dans le guide d’intégration du DMP :
Recherche de document soumis dans un intervalle temporel par rapport à une date de soumission Dans XDS, il n’existe pas de requête « Stored Query » pour rechercher les documents soumis au Repository du système DMP dans un intervalle temporel donné. Plusieurs approches permettent néanmoins de le faire, en combinant plusieurs requêtes.
Combinaison de
FindSubmissionSetet deGetSubmissionSetAndContents(soit N+1 appels de fonctions, en fonction du nombre N de lots retournés).a. Utilisation de la requête
FindSubmissionSetspour rechercher les lots de soumission en spécifiant un intervalle temporel de soumission (date de soumission dans le DMP, critères$XDSSubmissionSetSubmissionTimeFromet$XDSSubmissionSetSubmissionTimeTo) : retourne les lots de soumission.b. Pour chaque lot retourné, faire un
GetSubmissionSetAndContentsqui retourne le lot et ses documents.Combinaison de
FindSubmissionSet, deGetAssociationset deGetDocuments(soit 3 appels de fonctions).a. Utilisation de la requête
FindSubmissionSetspour rechercher les lots de soumission en spécifiant un intervalle temporel de soumission (date de soumission dans le DMP, critère°$XDSSubmissionSetSubmissionTimeFromet$XDSSubmissionSetSubmissionTimeTo`) : retourne les lots de soumission.b. Récupérer l’ensemble des entryUUID des lots retournés.
c. Passer cette liste d’entryUUID à la fonction
GetAssociations.d. Filtrer les retours sur les Associations de type
HasMember, et récupérer la liste destargetObject(documents du lot).e. Appel de
GetDocumentsavec la liste des entryUUID des documents.
Rem : les deux implémentations ont été réalisées dans la DevBox-Santé. La deuxième est positionnée par défaut pour des raisons de performances.
Exemple en Java :
TD31Request.FindSubmissionSetsAndGetContents request = new TD31Request.FindSubmissionSetsAndGetContents();
request.setMatriculeINS(patient.getMatriculeINS());
request.setSubmissionTimeFrom("20200925033000");
request.setStatuses(List.of(AvailabilityStatus.APPROVED));
client.td31Find(context, request);
Exemple en REST
curl --location 'http://localhost:9999/dmp/td31Find' \
--header 'Content-Type: application/json' \
--data '{
"context": {
},
"request": {
"query": "FindSubmissionSetsAndGetContents",
"matriculeINS": {
"valeur": "279035121518989",
"identifiantSysteme": "1.2.250.1.213.1.4.10"
},
"statuses": [
"APPROVED"
],
"submissionTimeFrom": "20200925033000"
}
}'
FindAndRetrieveContent (depuis version 5.1)
Cette recherche pour des documents spécifiques comme l’Historique de remboursement et l’historique de vaccinations permet de récupérer directement le contenu du document.
Exemple en Java :
var request = TD31Request.FindHistoriqueVaccinations.builder().matriculeINS(patient.getMatriculeINS()).build();
var historiqueVaccinations = (DMPCHistoriqueVaccinations) client.td31_32findAndRetrieve(context, request).getDocument();
var request = TD31Request.FindHistoriqueRemboursements
.builder().matriculeINS(patient.getMatriculeINS())
.serviceStartTimeFrom("20200801")
.serviceStopTimeTo("20210731")
.build();
var historiqueRemboursements = client.td31_32findAndRetrieve(context, request).getDocument();
en Rest :
curl --location 'http://localhost:9999/dmp/td31_32FindAndRetrieveContent' \
--header 'Content-Type: application/json' \
--data '{
"context": {
"modeAcces": {
"acces": "NORMAL"
}
},
"request": {
"query": "FindHistoriqueVaccinations",
"matriculeINS": {
"valeur": "279035121518989",
"identifiantSysteme": "1.2.250.1.213.1.4.10"
}
}
}'