Contract — détail : instrument légal
Modélisation d'instruments légaux applicables au domaine de la santé : contrats de soin (engagement patient-praticien), polices d'assurance, accords de recherche, NDA, contrats inter-organisations. Structure terms / asset / agent avec partages cliniques scope FHIR.
Consent vs Contract
Les deux se ressemblent mais :
- Consent — autorisation unilatérale du patient. Pas d'obligation en retour pour le receiver. Révocable à tout moment.
- Contract — accord bilatéral ou multilatéral. Engagements réciproques. Révocation typiquement encadrée par les termes.
Un consentement DMP = Consent. Un engagement à téléconsulter mensuellement avec compte-rendu sous 48h = Contract.
Champs clés
| Champ | Cardinalité | Rôle |
|---|---|---|
status | 0..1 | amended / appended / cancelled / disputed / entered-in-error / executable / executed / negotiable / offered / policy / rejected / renewed / revoked / resolved / terminated. |
contentDerivative | 0..1 | registration / retrieval / statement / shareable. |
issued | 0..1 | Date d'émission. |
applies | 0..1 | Période de validité. |
subject | 0..* | Patient ou Organization sujets du contrat. |
authority | 0..* | Autorité gouvernante (ARS, ministère). |
type / subType | 0..1 / 0..* | Classification (healthcare, insurance, research, employment). |
scope | 0..1 | policy / law / standard / agreement. |
term | 0..* | Clauses (offer/asset/action/group). |
signer | 0..* | Signataires avec rôle et signature. |
Cas d'usage en santé
- Contrat de soin coordonné — engagement multidisciplinaire patient + médecin traitant + spécialistes pour pathologie chronique.
- Contrat de recherche clinique — accord investigateur principal / promoteur / sponsor.
- Police d'assurance santé — typiquement utilisée avec InsurancePlan et Coverage.
- Accord de partage de données inter-établissements — formalisation d'un GHT data sharing.
- NDA (Non-Disclosure Agreement) — encadrement d'accès à des données sensibles pour un vendeur EDC.
Exemple : contrat de soin téléconsultation 12 mois
{
"resourceType": "Contract",
"id": "contract-telemed-marie-887",
"status": "executed",
"contentDerivative": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/contract-content-derivative",
"code": "registration"
}]
},
"issued": "2026-05-19T17:00:00+02:00",
"applies": {
"start": "2026-05-19",
"end": "2027-05-19"
},
"subject": [{ "reference": "Patient/marie-durand-887" }],
"authority": [{ "reference": "Organization/ars-idf" }],
"type": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/contract-type",
"code": "healthcare"
}]
},
"subType": [{
"coding": [{
"system": "http://example.org/contract-subtype",
"code": "telemedicine-engagement"
}]
}],
"name": "Contrat d'engagement teleconsultation longue duree",
"title": "Contrat patient-praticien Doctolib v2026",
"subtitle": "Engagement reciproque pour suivi par teleconsultation - 12 mois",
"alias": ["CTR-TELEMED-2026-887"],
"scope": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/contract-scope",
"code": "policy"
}]
},
"topicCodeableConcept": {
"coding": [{
"system": "http://snomed.info/sct",
"code": "44054006",
"display": "Diabetes mellitus type 2"
}]
},
"term": [{
"issued": "2026-05-19T17:00:00+02:00",
"type": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/contracttermtypecodes",
"code": "statutory"
}]
},
"text": "Le patient s'engage a realiser une teleconsultation mensuelle avec Dr Bernard. Le praticien s'engage a fournir un compte-rendu sous 48h via Mon Espace Sante.",
"offer": {
"party": [{
"reference": [{ "reference": "Practitioner/dr-bernard-claude" }],
"role": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/contract-actorrole",
"code": "provider"
}]
}
}, {
"reference": [{ "reference": "Patient/marie-durand-887" }],
"role": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/contract-actorrole",
"code": "subscriber"
}]
}
}]
},
"asset": [{
"scope": {
"coding": [{ "system": "http://snomed.info/sct", "code": "401277000", "display": "Telemedicine consultation" }]
},
"period": [{ "start": "2026-05-19", "end": "2027-05-19" }],
"valuedItem": [{
"entityCodeableConcept": {
"coding": [{ "system": "http://www.ameli.fr/ccam", "code": "TLC" }]
},
"unitPrice": { "value": 25.00, "currency": "EUR" },
"factor": 12
}]
}]
}],
"signer": [{
"type": {
"system": "http://terminology.hl7.org/CodeSystem/contractsignertypecodes",
"code": "PATNG"
},
"party": { "reference": "Patient/marie-durand-887" },
"signature": [{
"type": [{
"system": "urn:iso-astm:E1762-95:2013",
"code": "1.2.840.10065.1.12.1.7",
"display": "Consent Signature"
}],
"when": "2026-05-19T17:00:00+02:00",
"who": { "reference": "Patient/marie-durand-887" }
}]
}]
} Pièges courants
- Maturity Level 1 — Contract est encore en Trial Use. Les profils nationaux ne sont pas tous alignés. Tester l'interopérabilité avant prod.
- Pas de signer — un contrat sans signataires est inopposable. Toujours documenter la signature (avec Signature résolu).
- term.text + structuré — toujours mettre un text humainement lisible en plus des structures asset/offer. Indispensable pour audit légal.
- Confusion avec Permission — Permission est plus léger pour les autorisations dynamiques au moment de l'accès. Contract est lourd pour les accords formels.