@startuml
set namespaceSeparator ?
hide circle
hide class fields

package IG #DDDDDD{

     package Profiles #DDDDDD{

        class CDSBundleResponseRecherche{

             Bundle.type => [None..None]
             Bundle.entry => [None..None]
             Bundle.entry:careTeam => [0..*]
             Bundle.entry:careTeam.resource => [1..None]
             Bundle.entry:careTeam.search.mode => [None..None]
             Bundle.entry:careTeam.request => [None..0]
             Bundle.entry:careTeam.response => [None..0]
             Bundle.entry:patient => [0..*]
             Bundle.entry:patient.resource => [1..None]
             Bundle.entry:patient.search.mode => [None..None]
             Bundle.entry:patient.request => [None..0]
             Bundle.entry:patient.response => [None..0]
             Bundle.entry:relatedPerson => [0..*]
             Bundle.entry:relatedPerson.resource => [1..None]
             Bundle.entry:relatedPerson.search.mode => [None..None]
             Bundle.entry:relatedPerson.request => [None..0]
             Bundle.entry:relatedPerson.response => [None..0]
             Bundle.entry:organization => [0..*]
             Bundle.entry:organization.resource => [1..None]
             Bundle.entry:organization.search.mode => [None..None]
             Bundle.entry:organization.request => [None..0]
             Bundle.entry:organization.response => [None..0]
             Bundle.entry:practitionerRoleOrg => [0..*]
             Bundle.entry:practitionerRoleOrg.resource => [1..None]
             Bundle.entry:practitionerRoleOrg.search.mode => [None..None]
             Bundle.entry:practitionerRoleOrg.request => [None..0]
             Bundle.entry:practitionerRoleOrg.response => [None..0]
             Bundle.entry:practitionerPro => [0..*]
             Bundle.entry:practitionerPro.resource => [1..None]
             Bundle.entry:practitionerPro.search.mode => [None..None]
             Bundle.entry:practitionerPro.request => [None..0]
             Bundle.entry:practitionerPro.response => [None..0]
        } 

        class CDSBundleTransactionCreation{

             Bundle.type => [None..None]
             Bundle.entry => [2..None]
             Bundle.entry:careTeam => [1..1]
             Bundle.entry:careTeam.resource => [1..None]
             Bundle.entry:careTeam.request.method => [None..None]
             Bundle.entry:careTeam.response => [None..0]
             Bundle.entry:patient => [1..1]
             Bundle.entry:patient.resource => [1..None]
             Bundle.entry:patient.request.method => [None..None]
             Bundle.entry:patient.response => [None..0]
             Bundle.entry:relatedPerson => [0..*]
             Bundle.entry:relatedPerson.resource => [1..None]
             Bundle.entry:relatedPerson.request.method => [None..None]
             Bundle.entry:relatedPerson.response => [None..0]
             Bundle.entry:organization => [0..*]
             Bundle.entry:organization.resource => [1..None]
             Bundle.entry:organization.request.method => [None..None]
             Bundle.entry:organization.response => [None..0]
             Bundle.entry:practitionerRoleOrg => [0..*]
             Bundle.entry:practitionerRoleOrg.resource => [1..None]
             Bundle.entry:practitionerRoleOrg.request.method => [None..None]
             Bundle.entry:practitionerRoleOrg.response => [None..0]
             Bundle.entry:practitionerPro => [0..*]
             Bundle.entry:practitionerPro.resource => [1..None]
             Bundle.entry:practitionerPro.request.method => [None..None]
             Bundle.entry:practitionerPro.response => [None..0]
        } 

        class CDSBundleTransactionMAJ{

             Bundle.type => [None..None]
             Bundle.entry => [1..None]
             Bundle.entry:careTeam => [0..*]
             Bundle.entry:careTeam.resource => [1..None]
             Bundle.entry:careTeam.request.method => [None..None]
             Bundle.entry:careTeam.response => [None..0]
             Bundle.entry:patient => [0..*]
             Bundle.entry:patient.resource => [1..None]
             Bundle.entry:patient.request.method => [None..None]
             Bundle.entry:patient.response => [None..0]
             Bundle.entry:relatedPerson => [0..*]
             Bundle.entry:relatedPerson.resource => [1..None]
             Bundle.entry:relatedPerson.request.method => [None..None]
             Bundle.entry:relatedPerson.response => [None..0]
             Bundle.entry:organization => [0..*]
             Bundle.entry:organization.resource => [1..None]
             Bundle.entry:organization.request.method => [None..None]
             Bundle.entry:organization.response => [None..0]
             Bundle.entry:practitionerRoleOrg => [0..*]
             Bundle.entry:practitionerRoleOrg.resource => [1..None]
             Bundle.entry:practitionerRoleOrg.request.method => [None..None]
             Bundle.entry:practitionerRoleOrg.response => [None..0]
             Bundle.entry:practitionerPro => [0..*]
             Bundle.entry:practitionerPro.resource => [1..None]
             Bundle.entry:practitionerPro.request.method => [None..None]
             Bundle.entry:practitionerPro.response => [None..0]
        } 

        class CDSFrPatient{

             Patient.meta => [None..None]
             Patient.identifier => [1..None]
             Patient.telecom => [1..None]
             Patient.address => [1..None]
        } 

        class CDSFrRelatedPerson{

             RelatedPerson.identifier => [None..None]
             RelatedPerson.patient => [None..None]
             RelatedPerson.relationship => [1..None]
             RelatedPerson.relationship:Role => [1..None]
             RelatedPerson.relationship:RelationType => [None..1]
             RelatedPerson.name => [1..1]
             RelatedPerson.name.family => [1..None]
             RelatedPerson.name.given => [None..1]
             RelatedPerson.telecom => [1..None]
        } 

        class CDSCareTeam{

             CareTeam.meta => [1..None]
             CareTeam.meta.lastUpdated => [None..None]
             CareTeam.identifier => [1..1]
             CareTeam.identifier.value => [1..None]
             CareTeam.status => [1..None]
             CareTeam.category => [None..None]
             CareTeam.name => [1..None]
             CareTeam.subject => [1..None]
             CareTeam.encounter => [None..None]
             CareTeam.period => [1..None]
             CareTeam.period.start => [1..None]
             CareTeam.period.end => [None..None]
             CareTeam.participant => [None..None]
             CareTeam.participant.member => [1..None]
             CareTeam.participant.period => [None..None]
             CareTeam.participant.period.start => [1..None]
             CareTeam.managingOrganization => [None..None]
             CareTeam.telecom => [None..None]
             CareTeam.note => [None..None]
        } 

        class CDSAsOrganization{

             Organization.identifier:identifierOI => [0..1]
             Organization.identifier:identifierOI.type => [1..None]
             Organization.identifier:identifierOI.system => [None..None]
             Organization.partOf => [None..None]
        } 

        class CercleDeSoins{

             log-cercle-de-soins => [None..None]
             log-cercle-de-soins.idCercleSoins => [1..1]
             log-cercle-de-soins.dateCreation => [1..1]
             log-cercle-de-soins.dateMAJ => [1..*]
             log-cercle-de-soins.dateFin => [0..1]
             log-cercle-de-soins.statut => [0..1]
             log-cercle-de-soins.metadonnee => [1..1]
             log-cercle-de-soins.PersonnePriseCharge => [1..1]
             log-cercle-de-soins.MembreCercleSoin => [0..*]
        } 

        class Contact{

             log-contact => [None..None]
             log-contact.idMembreCercleSoins => [1..1]
             log-contact.telecommunication => [1..*]
             log-contact.adresse => [0..*]
             log-contact.role => [1..1]
             log-contact.description => [0..1]
             log-contact.relation => [0..1]
             log-contact.metadonnee => [1..1]
        } 

        class ExerciceProfessionnel{

             log-exercice-professionnel => [None..None]
             log-exercice-professionnel.civiliteExercice => [0..1]
             log-exercice-professionnel.nomExercice => [0..1]
             log-exercice-professionnel.prenomExercice => [0..1]
             log-exercice-professionnel.profession => [0..1]
             log-exercice-professionnel.metadonnee => [0..1]
        } 

        class MembreCercleDeSoins{

             log-membre-cercle-de-soins => [None..None]
             log-membre-cercle-de-soins.dateEntreeCercleSoin => [1..*]
             log-membre-cercle-de-soins.dateSortieCercleSoin => [0..*]
             log-membre-cercle-de-soins.metadonnee => [0..1]
             log-membre-cercle-de-soins.Contact => [0..1]
        } 

        class PersonnePriseCharge{

             log-personne-prise-charge => [None..None]
             log-personne-prise-charge.INS => [1..1]
             log-personne-prise-charge.idPersonnePriseCharge => [0..*]
             log-personne-prise-charge.adresseCorrespondance => [1..1]
             log-personne-prise-charge.telecommunication => [1..*]
             log-personne-prise-charge.metadonnee => [1..1]
        } 

        class Professionnel{

             log-professionnel => [None..None]
             log-professionnel.idPP => [0..1]
             log-professionnel.typeIdNat-PP => [0..1]
             log-professionnel.metadonnee => [1..1]
         }

     }
     package extension #paleturquoise {


         }
     }
     package valueset #PaleVioletRed{
       }

package "Ressources de base" #palegreen {

 class "Bundle" as  class94c51f19c37f96ed231f5a0ae512b2a8 

    class94c51f19c37f96ed231f5a0ae512b2a8 --> CDSBundleResponseRecherche

 class "Bundle" as  class94c51f19c37f96ed231f5a0ae512b2a8 

    class94c51f19c37f96ed231f5a0ae512b2a8 --> CDSBundleTransactionCreation

 class "Bundle" as  class94c51f19c37f96ed231f5a0ae512b2a8 

    class94c51f19c37f96ed231f5a0ae512b2a8 --> CDSBundleTransactionMAJ

 class "https://hl7.fr/ig/fhir/core/StructureDefinition/fr-core-patient" as  classcb72a5551de902d7716887df67489a97 

    classcb72a5551de902d7716887df67489a97 --> CDSFrPatient

 class "https://hl7.fr/ig/fhir/core/StructureDefinition/fr-core-related-person" as  class73d64d75d9b8829a511eb36c46458829 

    class73d64d75d9b8829a511eb36c46458829 --> CDSFrRelatedPerson

 class "CareTeam" as  class99bade88e2b9cdcc23b2ec3bcc841176 

    class99bade88e2b9cdcc23b2ec3bcc841176 --> CDSCareTeam

 class "https://interop.esante.gouv.fr/ig/fhir/annuaire/StructureDefinition/as-organization" as  class02104d9d29574b85b8bdd491de969f0d 

    class02104d9d29574b85b8bdd491de969f0d --> CDSAsOrganization

 class "Base" as  class095a1b43effec73955e31e790438de49 

    class095a1b43effec73955e31e790438de49 --> CercleDeSoins

 class "Base" as  class095a1b43effec73955e31e790438de49 

    class095a1b43effec73955e31e790438de49 --> Contact

 class "Base" as  class095a1b43effec73955e31e790438de49 

    class095a1b43effec73955e31e790438de49 --> ExerciceProfessionnel

 class "Base" as  class095a1b43effec73955e31e790438de49 

    class095a1b43effec73955e31e790438de49 --> MembreCercleDeSoins

 class "Base" as  class095a1b43effec73955e31e790438de49 

    class095a1b43effec73955e31e790438de49 --> PersonnePriseCharge

 class "Base" as  class095a1b43effec73955e31e790438de49 

    class095a1b43effec73955e31e790438de49 --> Professionnel
}
@enduml