TD3.1 (depuis version 3.2)

Cette fonctionnalité permet de lister les documents du DMP d’un patient (cf. RG_3010) en indiquant des critères de recherche

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.

  1. Combinaison de FindSubmissionSet et de GetSubmissionSetAndContents (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.

  2. Combinaison de FindSubmissionSet, de GetAssociations et de GetDocuments (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 des targetObject (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"
        }
    }
}'