Health Cloud Consent Management
Use this skill when configuring Health Cloud patient consent management: setting up HIPAA authorization forms, creating consent templates, tracking consent status per patient, and handling withdrawal. This skill covers the clinical consent form lifecycle — template creation, enrollment-linked consent capture, and status management. It does NOT cover marketing consent objects (ContactPointTypeConsent, ContactPointConsent for GDPR/CCPA opt-out), general Experience Cloud consent flows, or consent for non-clinical purposes.
Before Starting
Gather this context before working on anything in this domain:
- Confirm Health Cloud is enabled and Consent Management is configured in Setup. Verify that the DataUsePurpose standard object is available — this is the root of the consent hierarchy.
- Identify the clinical use cases that require HIPAA consent (e.g., treatment, payment, healthcare operations, research). Each becomes a separate DataUsePurpose record.
- Confirm that every AuthorizationForm has at least one AuthorizationFormText with the
IsDefault flag set to true. A missing default text causes the consent form to silently fail to display during enrollment.
- Distinguish clinical consent (HIPAA Privacy Rule authorization) from marketing consent (GDPR/CCPA opt-out). These use completely different object families. Do not confuse AuthorizationFormConsent with ContactPointConsent.
Core Concepts
The Five-Object Consent Hierarchy
Health Cloud patient consent uses a five-object hierarchy:
- DataUsePurpose — Defines the clinical reason PHI is being used (e.g., Treatment, Payment, Research). This is the root anchor of the consent model.
- AuthorizationForm — The form template that describes what the patient is consenting to. One form per consent type (e.g., "HIPAA Authorization for Treatment").
- AuthorizationFormText — The actual text/content of the form in a specific language/locale. Every AuthorizationForm must have exactly one default AuthorizationFormText (
IsDefault = true). Missing this causes the form to fail to display.
- AuthorizationFormDataUse — Junction object linking AuthorizationForm to DataUsePurpose. Establishes which clinical use purpose each form covers.
- AuthorizationFormConsent — The per-patient consent record. One record per patient per form with fields:
ConsentGiverId (Individual ID), AuthorizationFormTextId, ConsentCapturedSource (how consent was obtained), Status (Seen, Signed, Rejected), and timestamp.
This hierarchy separates form templates (reusable) from patient consent records (one per patient per form instance).
AuthorizationFormConsent vs. ContactPointConsent
These are architecturally distinct objects for different regulatory purposes:
- AuthorizationFormConsent — HIPAA clinical authorization. Tracks whether a patient has authorized specific uses of their PHI. Required before a
CareProgramEnrollee can be marked Active in most implementations.
- ContactPointConsent / ContactPointTypeConsent — GDPR/CCPA marketing consent. Tracks whether an individual has opted in or out of specific communication channels (email, phone, direct mail).
Using ContactPointConsent for HIPAA clinical authorization is a compliance violation — the objects have different fields, different reporting requirements, and different legal purposes.
Withdrawal Handling
When a patient withdraws consent, the correct action is to update the Status field on the existing AuthorizationFormConsent record to a terminal status value (e.g., Withdrawn or Revoked) — NOT to delete the record. Deleting the consent record destroys the audit trail required for HIPAA compliance. The consent history must be preserved to demonstrate that consent was previously obtained and when it was withdrawn.
Common Patterns
Consent Capture at Care Program Enrollment
When to use: Every time a patient is enrolled in a care program and HIPAA authorization must be obtained before accessing PHI.
How it works:
- Create
DataUsePurpose records for each clinical use category (Treatment, Payment, Healthcare Operations).
- Create
AuthorizationForm for each use category.
- Create
AuthorizationFormText with the form content, set IsDefault = true, and link to the AuthorizationForm. Ensure the Locale field matches the patient's expected language/locale (or the logged-in user's locale).
- Create
AuthorizationFormDataUse linking each form to its DataUsePurpose.
- During enrollment Flow, create an
AuthorizationFormConsent record for the patient with Status = Seen. After the patient signs, update Status = Signed.
- Only mark
CareProgramEnrollee as Active after all required AuthorizationFormConsent records have Status = Signed.
Why not the alternative: Skipping consent capture and marking enrollment as active immediately is a HIPAA Privacy Rule violation. The consent record creates the required audit trail.
Withdrawal Processing
When to use: A patient requests revocation of HIPAA authorization.
How it works:
- Locate all
AuthorizationFormConsent records for the patient (query by ConsentGiverId = [Individual ID]).
- Update
Status on each relevant record to a terminal value (e.g., Withdrawn).
- Record
ConsentCapturedSource = Verbal or Written based on how withdrawal was communicated.
- Optionally update related
CareProgramEnrollee status to reflect restricted access.
- Do NOT delete the
AuthorizationFormConsent record. The historical consent record must be preserved.
Decision Guidance
| Situation |
Recommended Approach |
Reason |
| Patient consent form not displaying at enrollment |
Check AuthorizationFormText IsDefault flag and locale |
Missing default text is the #1 cause of form display failure |
| Patient withdraws HIPAA authorization |
Update AuthorizationFormConsent Status to Withdrawn |
Never delete — HIPAA requires audit trail |
| Marketing email opt-out |
Use ContactPointConsent, not AuthorizationFormConsent |
Different regulatory purpose, different object |
| Multiple languages needed for consent forms |
Create one AuthorizationFormText per locale, one IsDefault = true |
Platform uses locale matching to select the displayed text |
| Consent needed before enrollment active |
Gate CareProgramEnrollee status update on AuthorizationFormConsent.Status = Signed |
Prevents PHI access before consent is captured |
Recommended Workflow
- Inventory clinical consent requirements — identify each type of PHI use that requires patient authorization (Treatment, Payment, Research, etc.). Each becomes a DataUsePurpose record. Confirm scope with compliance/legal team.
- Create the consent hierarchy — create DataUsePurpose records, then AuthorizationForm for each form template, then AuthorizationFormText (with IsDefault = true and correct Locale), then AuthorizationFormDataUse junction records linking forms to purposes.
- Build enrollment-linked consent capture — add consent form display and capture steps to the care program enrollment Flow. Create AuthorizationFormConsent records when the patient is shown the form (Status = Seen) and update to Signed after acknowledgment.
- Gate enrollment activation — add a validation check in the enrollment Flow or validation rule to prevent CareProgramEnrollee from being marked Active until all required AuthorizationFormConsent records have Status = Signed.
- Configure withdrawal workflow — build a Flow or quick action that updates AuthorizationFormConsent Status to Withdrawn when a patient revokes consent. Ensure the record is never deleted.
- Test with multiple locales — if the org serves patients in multiple languages, test consent form display for each locale. Verify that the correct AuthorizationFormText language is displayed based on user/patient locale.
Review Checklist
Salesforce-Specific Gotchas
Missing default AuthorizationFormText causes silent form display failure — If an AuthorizationForm has no AuthorizationFormText with IsDefault = true, the consent form component returns no content at runtime. The patient sees nothing to consent to, and no error is shown. Always verify that exactly one AuthorizationFormText per form has IsDefault = true before testing.
Locale mismatch prevents correct text selection — AuthorizationFormText has a Locale field. If the patient's or logged-in user's locale does not match any AuthorizationFormText locale, the platform may fail to display the correct form text. Test consent display from user accounts with the exact locale your patient population uses.
Deleting AuthorizationFormConsent destroys HIPAA audit trail — The consent record must persist even after withdrawal. Update Status to Withdrawn; never delete. Bulk data cleanup processes must explicitly exclude AuthorizationFormConsent from deletion operations.
Output Artifacts
| Artifact |
Description |
| DataUsePurpose records |
Defines clinical use categories requiring patient authorization |
| AuthorizationForm hierarchy |
Form templates with text, locale variants, and data use linkages |
| Enrollment Flow with consent capture |
Flow that creates and updates AuthorizationFormConsent during enrollment |
| Withdrawal workflow |
Quick action or Flow that updates consent status without deleting records |
Related Skills
- admin/health-cloud-patient-setup — Person account and care team setup that precedes consent configuration
- admin/care-program-management — Care program enrollment workflow that consent is integrated with
- admin/consent-data-model-health — Detailed data model reference for the consent object hierarchy
1---2name: health-cloud-consent-management3description: Use this skill when configuring Health Cloud patient consent management: setting up HIPAA authorization forms, consent templates, consent tracking per patient, and withdrawal handling. NOT for querying the AuthorizationFormConsent object hierarchy or its required field values — use data/consent-data-model-health. NOT for GDPR/CCPA marketing opt-out on ContactPointTypeConsent — use security/gdpr-data-privacy.4---56# Health Cloud Consent Management78Use this skill when configuring Health Cloud patient consent management: setting up HIPAA authorization forms, creating consent templates, tracking consent status per patient, and handling withdrawal. This skill covers the clinical consent form lifecycle — template creation, enrollment-linked consent capture, and status management. It does NOT cover marketing consent objects (ContactPointTypeConsent, ContactPointConsent for GDPR/CCPA opt-out), general Experience Cloud consent flows, or consent for non-clinical purposes.910---1112## Before Starting1314Gather this context before working on anything in this domain:1516- Confirm Health Cloud is enabled and Consent Management is configured in Setup. Verify that the DataUsePurpose standard object is available — this is the root of the consent hierarchy.17- Identify the clinical use cases that require HIPAA consent (e.g., treatment, payment, healthcare operations, research). Each becomes a separate DataUsePurpose record.18- Confirm that every AuthorizationForm has at least one AuthorizationFormText with the `IsDefault` flag set to true. A missing default text causes the consent form to silently fail to display during enrollment.19- Distinguish clinical consent (HIPAA Privacy Rule authorization) from marketing consent (GDPR/CCPA opt-out). These use completely different object families. Do not confuse AuthorizationFormConsent with ContactPointConsent.2021---2223## Core Concepts2425### The Five-Object Consent Hierarchy2627Health Cloud patient consent uses a five-object hierarchy:28291. **DataUsePurpose** — Defines the clinical reason PHI is being used (e.g., Treatment, Payment, Research). This is the root anchor of the consent model.302. **AuthorizationForm** — The form template that describes what the patient is consenting to. One form per consent type (e.g., "HIPAA Authorization for Treatment").313. **AuthorizationFormText** — The actual text/content of the form in a specific language/locale. Every AuthorizationForm must have exactly one default AuthorizationFormText (`IsDefault = true`). Missing this causes the form to fail to display.324. **AuthorizationFormDataUse** — Junction object linking AuthorizationForm to DataUsePurpose. Establishes which clinical use purpose each form covers.335. **AuthorizationFormConsent** — The per-patient consent record. One record per patient per form with fields: `ConsentGiverId` (Individual ID), `AuthorizationFormTextId`, `ConsentCapturedSource` (how consent was obtained), `Status` (Seen, Signed, Rejected), and timestamp.3435This hierarchy separates form templates (reusable) from patient consent records (one per patient per form instance).3637### AuthorizationFormConsent vs. ContactPointConsent3839These are architecturally distinct objects for different regulatory purposes:4041- **AuthorizationFormConsent** — HIPAA clinical authorization. Tracks whether a patient has authorized specific uses of their PHI. Required before a `CareProgramEnrollee` can be marked Active in most implementations.42- **ContactPointConsent / ContactPointTypeConsent** — GDPR/CCPA marketing consent. Tracks whether an individual has opted in or out of specific communication channels (email, phone, direct mail).4344Using ContactPointConsent for HIPAA clinical authorization is a compliance violation — the objects have different fields, different reporting requirements, and different legal purposes.4546### Withdrawal Handling4748When a patient withdraws consent, the correct action is to **update the Status field** on the existing `AuthorizationFormConsent` record to a terminal status value (e.g., Withdrawn or Revoked) — NOT to delete the record. Deleting the consent record destroys the audit trail required for HIPAA compliance. The consent history must be preserved to demonstrate that consent was previously obtained and when it was withdrawn.4950---5152## Common Patterns5354### Consent Capture at Care Program Enrollment5556**When to use:** Every time a patient is enrolled in a care program and HIPAA authorization must be obtained before accessing PHI.5758**How it works:**591. Create `DataUsePurpose` records for each clinical use category (Treatment, Payment, Healthcare Operations).602. Create `AuthorizationForm` for each use category.613. Create `AuthorizationFormText` with the form content, set `IsDefault = true`, and link to the AuthorizationForm. Ensure the Locale field matches the patient's expected language/locale (or the logged-in user's locale).624. Create `AuthorizationFormDataUse` linking each form to its DataUsePurpose.635. During enrollment Flow, create an `AuthorizationFormConsent` record for the patient with `Status = Seen`. After the patient signs, update `Status = Signed`.646. Only mark `CareProgramEnrollee` as Active after all required `AuthorizationFormConsent` records have `Status = Signed`.6566**Why not the alternative:** Skipping consent capture and marking enrollment as active immediately is a HIPAA Privacy Rule violation. The consent record creates the required audit trail.6768### Withdrawal Processing6970**When to use:** A patient requests revocation of HIPAA authorization.7172**How it works:**731. Locate all `AuthorizationFormConsent` records for the patient (query by `ConsentGiverId = [Individual ID]`).742. Update `Status` on each relevant record to a terminal value (e.g., Withdrawn).753. Record `ConsentCapturedSource = Verbal` or `Written` based on how withdrawal was communicated.764. Optionally update related `CareProgramEnrollee` status to reflect restricted access.775. Do NOT delete the `AuthorizationFormConsent` record. The historical consent record must be preserved.7879---8081## Decision Guidance8283| Situation | Recommended Approach | Reason |84|---|---|---|85| Patient consent form not displaying at enrollment | Check AuthorizationFormText IsDefault flag and locale | Missing default text is the #1 cause of form display failure |86| Patient withdraws HIPAA authorization | Update AuthorizationFormConsent Status to Withdrawn | Never delete — HIPAA requires audit trail |87| Marketing email opt-out | Use ContactPointConsent, not AuthorizationFormConsent | Different regulatory purpose, different object |88| Multiple languages needed for consent forms | Create one AuthorizationFormText per locale, one IsDefault = true | Platform uses locale matching to select the displayed text |89| Consent needed before enrollment active | Gate CareProgramEnrollee status update on AuthorizationFormConsent.Status = Signed | Prevents PHI access before consent is captured |9091---9293## Recommended Workflow94951. **Inventory clinical consent requirements** — identify each type of PHI use that requires patient authorization (Treatment, Payment, Research, etc.). Each becomes a DataUsePurpose record. Confirm scope with compliance/legal team.962. **Create the consent hierarchy** — create DataUsePurpose records, then AuthorizationForm for each form template, then AuthorizationFormText (with IsDefault = true and correct Locale), then AuthorizationFormDataUse junction records linking forms to purposes.973. **Build enrollment-linked consent capture** — add consent form display and capture steps to the care program enrollment Flow. Create AuthorizationFormConsent records when the patient is shown the form (Status = Seen) and update to Signed after acknowledgment.984. **Gate enrollment activation** — add a validation check in the enrollment Flow or validation rule to prevent CareProgramEnrollee from being marked Active until all required AuthorizationFormConsent records have Status = Signed.995. **Configure withdrawal workflow** — build a Flow or quick action that updates AuthorizationFormConsent Status to Withdrawn when a patient revokes consent. Ensure the record is never deleted.1006. **Test with multiple locales** — if the org serves patients in multiple languages, test consent form display for each locale. Verify that the correct AuthorizationFormText language is displayed based on user/patient locale.101102---103104## Review Checklist105106- [ ] DataUsePurpose records created for all clinical use categories107- [ ] Each AuthorizationForm has at least one AuthorizationFormText with IsDefault = true108- [ ] AuthorizationFormText Locale matches the expected user/patient locale109- [ ] AuthorizationFormDataUse junction records link all forms to their DataUsePurpose110- [ ] Enrollment Flow creates AuthorizationFormConsent records with correct Status111- [ ] CareProgramEnrollee activation is gated on consent Status = Signed112- [ ] Withdrawal process updates Status (does not delete the consent record)113- [ ] HIPAA consent objects tested end-to-end in sandbox before go-live114115---116117## Salesforce-Specific Gotchas1181191. **Missing default AuthorizationFormText causes silent form display failure** — If an AuthorizationForm has no AuthorizationFormText with IsDefault = true, the consent form component returns no content at runtime. The patient sees nothing to consent to, and no error is shown. Always verify that exactly one AuthorizationFormText per form has IsDefault = true before testing.1201212. **Locale mismatch prevents correct text selection** — AuthorizationFormText has a Locale field. If the patient's or logged-in user's locale does not match any AuthorizationFormText locale, the platform may fail to display the correct form text. Test consent display from user accounts with the exact locale your patient population uses.1221233. **Deleting AuthorizationFormConsent destroys HIPAA audit trail** — The consent record must persist even after withdrawal. Update Status to Withdrawn; never delete. Bulk data cleanup processes must explicitly exclude AuthorizationFormConsent from deletion operations.124125---126127## Output Artifacts128129| Artifact | Description |130|---|---|131| DataUsePurpose records | Defines clinical use categories requiring patient authorization |132| AuthorizationForm hierarchy | Form templates with text, locale variants, and data use linkages |133| Enrollment Flow with consent capture | Flow that creates and updates AuthorizationFormConsent during enrollment |134| Withdrawal workflow | Quick action or Flow that updates consent status without deleting records |135136---137138## Related Skills139140- admin/health-cloud-patient-setup — Person account and care team setup that precedes consent configuration141- admin/care-program-management — Care program enrollment workflow that consent is integrated with142- admin/consent-data-model-health — Detailed data model reference for the consent object hierarchy