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"
}
}
}'
td31DocumentsRefresh (experimental version 6.0.15)
Requête spécifique SÉGUR (exigence CDA/DD15.02) permettant de récupérer les statuts supprimés ou remplacés d’une liste de documents Son implémentation s’appuie sur la recherche d’associations sur les documents.
Exemple en REST sur 3 documents :
curl --request POST \
--url http://localhost:8080/dmp/td31DocumentsRefresh \
--header 'content-type: application/json' \
--data '{
"context": {},
"request": {
"query": "GetDocumentsRefreshRequest",
"matriculeINS": {
"valeur": "133061764035249",
"identifiantSysteme": "1.2.250.1.213.1.4.10"
},
"documentEntryUuids": [
"098875e-f7cd-4bfb-96be-a08651ddeb0e",
"5098875e-f7cd-4bfb-96be-a08651ddeb0e",
"7639e053-c219-4c08-993e-f48eca94b4c4"
]
}
}'
Retourne 1 indisponible dans le DMP pour le professionnel (supprimé, masqué au PS, …) , 1 remplacé par. Le troisième est toujours disponible sur cette version :
{
"indisponibles": [
"0098875e-f7cd-4bfb-96be-a08651ddeb0e"
],
"remplacesPar": {
"5098875e-f7cd-4bfb-96be-a08651ddeb0e": "a5218e7d-3936-4036-b9c7-93b4b446cd6a"
}
"documents": [{
...
}]
}