Volet CDA structuration minimale

@Since DMP-1.0

Volet CDA de Structuration minimale

La DevBox-Santé DMP prend en charge la soumission de document à structuration minimale. Il s’agit du format par défaut exigé par le Guide d’intégration , il contient les métadonnées de base permettant la création d’un DMPCDocument ainsi que son contenu binaire.

La spécification de ce type de document est défini par l’ANS. Pour plus de renseignements sur le Volet Structuration minimal de Documents de santé : https://esante.gouv.fr/volet-structuration-minimale-de-documents-de-sante

Un exemple de création de document à structuration minimale est :


DMPCDocument document = new DMPCDocument();
// ajout des métadonnées
document.setClassCode(client.getCodesFor(DMPCCode.ASIPJeuxValeurs.CLASS_CODE).get(0).getCode());
document.addConfidentiality(client.getCodesFor(DMPCCode.ASIPJeuxValeurs.CONFIDENTIALITY_CODE).get(0).getCode());
document.setComments("commentDocument");
document.addEvent(new DMPCCode("B18", "2.16.840.1.113883.6.3", "Hépatite virale chronique"));
document.setPracticeSetting(client.getCodesFor(DMPCCode.ASIPJeuxValeurs.PRACTICE_SETTING_CODE).get(0).getCode());
document.setServiceStartTime("20171020174600");
document.setServiceStopTime("20171020194600");
document.setTitle("titleDocument");
document.setType(client.getCodesFor(DMPCCode.ASIPJeuxValeurs.TYPE_CODE).get(0).getCode());
document.setCreationTime("20171020194600");

// association du format et de son contenu. Ici, il s'agit d'un fichier pdf.
document.setFormat("urn:ihe:iti:xds-sd:pdf:2008");
InputStream input = new FileInputStream("monDocumentSante.pdf");
byte[] content = new byte[input.available()];
ByteStreams.readFully(input, content);
document.setContent(content);

Listes des formats possibles :

  • urn:ihe:iti:xds-sd:pdf:2008
  • urn:ihe:iti-fr:xds-sd:rtf:2010
  • urn:ihe:iti-fr:xds-sd:jpeg:2010
  • urn:ihe:iti-fr:xds-sd:tiff:2010

Pour plus de renseignements sur l’API java du DMPCDocument : https://bitbucket.org/devbox-sante/devbox-sante-apis/src/master/dmpc-api/src/main/java/fr/devboxsante/dmp/model/DMPCDocument.java

Exemple de DMPCDocument au format Json :

{
  "classCode": "11",
  "comments": "Document soumis via Postman",
  "confidentialities": ["N"],
  "content": "UmFwcGVsIGNsaW5pcXVlIDogSWwgcydhZ2l0IGQndW4gaG9tbWUgZGUgNTMgYW5zLCAKcHLDqXNlbnRhbnQgdW4gbmFldnVzIGRlIGxhIGZhY2UgaW50ZXJuZSBkZSBsYSBjdWlzc2UgZ2F1Y2hlIGRlIDcgbW0gZGUgZ3JhbmQgYXhlIGVudmlyb24uIApEw6ljaXNpb24gZCdleMOpcsOoc2Ugc291cyBhbmVzdGjDqXNpZSBsb2NhbGUuIAoKSW50ZXJ2ZW50aW9uIDogRVhFUkVTRSBEJ1VOIE5BRVZVUyBERSBMQSBDVUlTU0UgR0FVQ0hFIApTb3VzIGFuZXN0aMOpc2llIGxvY2FsZSDDoCBsYSBYeWxvY2HDr25lIMOgIDEgJSBub24gYWRyw6luYWxpbsOpZS4gCgpJbmNpc2lvbiBjZW50csOpZSBzdXIgbGEgbMOpc2lvbiBwZXJtZXR0YW50IGwnZXjDqXLDqHNlIGR1IG5hZXZ1cyBkYW5zIHNhIHRvdGFsaXTDqS4gCkZlcm1ldHVyZSBjdXRhbsOpZSBlbiB1biBwbGFuIGRlIEZsZXhvY3JpbiAzLzAuICAKCkVYQU1FTiBISVNUT0xPR0lPVUUgVW5lIGzDqXNpb24gcG9seXBvw69kZSBkZSAxIHggMCw3IGNtIGEgw6l0w6kgY29tbXVuaXF1w6llLiAKT24gcmV0cm91dmUgYXUgcGxhbiBoaXN0b2xvZ2lxdWUgdW5lIGzDqXNpb24gdW4gcGV1IHZlcnJ1cXVldXNlLCAKY29tcG9ydGFudCB1bmUgcHJvbGlmw6lyYXRpb24gY2VsbHVsYWlyZSBuYWV2aXF1ZSDDqXBhcmduYW50IGwnw6lwaWTDqW1pZSwgCnNvdXMgZm9ybWUgZGUgdGjDqHF1ZXMgZW4gc3VyZmFjZSwgYXZlYyBxdWVscXVlcyBkw6lww7R0cyBkZSBtw6lsYW5pbmUsIAphc3NvY2nDqWUgw6AgdW4gZ3JhZGllbnQgZGUgbWF0dXJhdGlvbiB0csOocyBuZXQgdmVycyBsYSBwcm9mb25kZXVyLiAKCk9uIG5lIHJldHJvdXZlIHBhcyBkJ2F0eXBpZSBudWNsw6lvY3l0b3BsYXNtaXF1ZS4gCgpDT05DTFVTSU9OIE5BRVZVUyBERVJNSVFVRSBERVZFTE9QUEUgU1VSIFVOIE1PREUgRVhPUEhZVElRVUUgLiAKTEVTIExJTUlURVMgRCdFWEVSRVNFIFNPTlQgU0FJTkVTLiA=",
  "creationTime": "20200928120000",
  "events": [
    {
      "code": "H33",
      "codingScheme": "2.16.840.1.113883.6.3",
      "displayName": "Décollement et déchirement de la rétine"
    }
  ],
  "format": "urn:ihe:iti:xds-sd:text:2008",
  "legalAuthenticator": {
    "internalId": "123456",
    "nom": "Durand",
    "prenom": "Pierre"
  },
  "patient": {
    "ins": "279035121518989",
    "prenom": "DOMINIQUE",
    "nomUsuel": "pat-trois",
    "internalId": "67890",
    "dateDeNaissance": "19790328",
    "ordreDeNaissance": 0,
    "sexe": "F"
  },
  "practiceSetting": "AMBULATOIRE",
  "serviceStartTime": "20200928080000",
  "serviceStopTime": "20200928080000",
  "title": "Titre du document",
  "type": "11488-4"
}

Alimenter le DMP

C’est ce DMPCDocument qui permet l’alimentation du DMP au travers de la transaction d’alimentation

Générer un CDA

@Since DMP-4.7.0

Il est également possible de transformer ce DMPCDocument en un CDA en vue de le partager avec un autre Système d’information comme la MSS par exemple.

Exemple en Java :


@Autowired
private DMPCCdaTools cdaTools;

// ... 
DMPCDocument document = createDMPCDocument(auteur, patient);
OutputStream out = new ByteArrayOutputStream();
cdaTools.map(document, out);

System.out.println(out.toByteArray());

Exemple en REST : 

curl --location --request POST 'http://127.0.0.1:8686/dmp/to/cda' \
--header 'Content-Type: application/json' \
--data-raw '{
    "entryUuid": "c2811791-1773-4325-9abf-a2f2d09ccfc9",
    "uniqueId": "1.2.250.1.287.11234",
    "secteurActivite": "SA43",
    "auteurs": [
        {
            "internalId": "123456",
            "nom": "Durand",
            "prenom": "Pierre",
            "specialite":  "G15_10/SM30",
            "secteurActivite": "SA43",
            "structureSante": {
                "idNational": "12345", 
                "nom": "Devcoop Bureau de Léognan"
            }
        }
    ],
    "classCode": "11",
    "comments": "Document soumis via Postman",
    "confidentialities": [
        "N"
    ],
    "content": "UmFwcGVsIGNsaW5pcXVlIDogSWwgcydhZ2l0IGQndW4gaG9tbWUgZGUgNTMgYW5zLCAKcHLDqXNlbnRhbnQgdW4gbmFldnVzIGRlIGxhIGZhY2UgaW50ZXJuZSBkZSBsYSBjdWlzc2UgZ2F1Y2hlIGRlIDcgbW0gZGUgZ3JhbmQgYXhlIGVudmlyb24uIApEw6ljaXNpb24gZCdleMOpcsOoc2Ugc291cyBhbmVzdGjDqXNpZSBsb2NhbGUuIAoKSW50ZXJ2ZW50aW9uIDogRVhFUkVTRSBEJ1VOIE5BRVZVUyBERSBMQSBDVUlTU0UgR0FVQ0hFIApTb3VzIGFuZXN0aMOpc2llIGxvY2FsZSDDoCBsYSBYeWxvY2HDr25lIMOgIDEgJSBub24gYWRyw6luYWxpbsOpZS4gCgpJbmNpc2lvbiBjZW50csOpZSBzdXIgbGEgbMOpc2lvbiBwZXJtZXR0YW50IGwnZXjDqXLDqHNlIGR1IG5hZXZ1cyBkYW5zIHNhIHRvdGFsaXTDqS4gCkZlcm1ldHVyZSBjdXRhbsOpZSBlbiB1biBwbGFuIGRlIEZsZXhvY3JpbiAzLzAuICAKCkVYQU1FTiBISVNUT0xPR0lPVUUgVW5lIGzDqXNpb24gcG9seXBvw69kZSBkZSAxIHggMCw3IGNtIGEgw6l0w6kgY29tbXVuaXF1w6llLiAKT24gcmV0cm91dmUgYXUgcGxhbiBoaXN0b2xvZ2lxdWUgdW5lIGzDqXNpb24gdW4gcGV1IHZlcnJ1cXVldXNlLCAKY29tcG9ydGFudCB1bmUgcHJvbGlmw6lyYXRpb24gY2VsbHVsYWlyZSBuYWV2aXF1ZSDDqXBhcmduYW50IGwnw6lwaWTDqW1pZSwgCnNvdXMgZm9ybWUgZGUgdGjDqHF1ZXMgZW4gc3VyZmFjZSwgYXZlYyBxdWVscXVlcyBkw6lww7R0cyBkZSBtw6lsYW5pbmUsIAphc3NvY2nDqWUgw6AgdW4gZ3JhZGllbnQgZGUgbWF0dXJhdGlvbiB0csOocyBuZXQgdmVycyBsYSBwcm9mb25kZXVyLiAKCk9uIG5lIHJldHJvdXZlIHBhcyBkJ2F0eXBpZSBudWNsw6lvY3l0b3BsYXNtaXF1ZS4gCgpDT05DTFVTSU9OIE5BRVZVUyBERVJNSVFVRSBERVZFTE9QUEUgU1VSIFVOIE1PREUgRVhPUEhZVElRVUUgLiAKTEVTIExJTUlURVMgRCdFWEVSRVNFIFNPTlQgU0FJTkVTLiA=",
    "creationTime": "20200928120000",
    "events": [
        {
            "code": "H33",
            "codingScheme": "2.16.840.1.113883.6.3",
            "displayName": "Décollement et déchirement de la rétine"
        }
    ],
    "format": "urn:ihe:iti:xds-sd:text:2008",
    "legalAuthenticator": {
        "internalId": "123456",
        "nom": "Durand",
        "prenom": "Pierre",
        "secteurActivite": "SA43",
        "structureSante": {
            "idNational": "12345",
            "nom": "Devcoop Bureau de Léognan"
        }
    },
    "patient": {
        "ins": "279035121518989",
        "insAutorite": "1.2.250.1.213.1.4.10",
        "prenom": "DOMINIQUE",
        "nomUsuel": "pat-trois",
        "internalId": "67890",
        "dateDeNaissance": "19790328",
        "ordreDeNaissance": 0,
        "sexe": "F"
    },
    "practiceSetting": "AMBULATOIRE",
    "serviceStartTime": "20200928080000",
    "serviceStopTime": "20200928080000",
    "title": "Titre du document",
    "type": "11488-4"
}'

La réponse contientdra un fichier CDA conforme au schematron de l’ANS : cda_structuration_minimale.xml