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
FindSubmissionSet
et deGetSubmissionSetAndContents
(soit N+1 appels de fonctions, en fonction du nombre N de lots retournés).a. Utilisation de la requête
FindSubmissionSets
pour rechercher les lots de soumission en spécifiant un intervalle temporel de soumission (date de soumission dans le DMP, critères$XDSSubmissionSetSubmissionTimeFrom
et$XDSSubmissionSetSubmissionTimeTo
) : retourne les lots de soumission.b. Pour chaque lot retourné, faire un
GetSubmissionSetAndContents
qui retourne le lot et ses documents.Combinaison de
FindSubmissionSet
, deGetAssociations
et deGetDocuments
(soit 3 appels de fonctions).a. Utilisation de la requête
FindSubmissionSets
pour 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
GetDocuments
avec 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"
}
}
}'