--- name: fullstory-healthcare version: v2 description: Industry-specific guide for implementing Fullstory in healthcare applications while maintaining HIPAA compliance. Covers PHI protection, patient portal UX, telehealth flows, appointment scheduling, and EHR integrations. Emphasizes that most healthcare data requires exclusion, not just masking, with detailed examples for compliant implementations. related_skills: - fullstory-privacy-controls - fullstory-privacy-strategy - fullstory-user-consent - fullstory-identify-users - fullstory-capture-control --- # Fullstory for Healthcare > ⚠️ **LEGAL DISCLAIMER**: This guidance is for educational purposes only and does not constitute legal, compliance, or regulatory advice. Healthcare regulations (HIPAA, HITECH, state privacy laws) are complex, jurisdiction-specific, and subject to change. Always consult with your legal, compliance, privacy officer, and security teams before implementing any data capture solution. Your organization is responsible for ensuring compliance with all applicable regulations. ## Industry Overview Healthcare has the most stringent requirements for session analytics due to: - **HIPAA compliance**: Protected Health Information (PHI) requires strict handling - **Patient trust**: Breach of medical data is particularly harmful - **Regulated entities**: Covered entities and business associates have legal obligations - **BAA requirement**: Business Associate Agreement required with Fullstory ### Critical Understanding > **In healthcare, the default should be EXCLUDE, not mask or unmask.** > > Even seemingly innocuous data can become PHI when combined with other information. Err on the side of caution. ### Highly Recommended: Private by Default Mode For healthcare applications, **Fullstory's Private by Default mode is essential**: ``` ┌─────────────────────────────────────────────────────────────────┐ │ HEALTHCARE: Enable Private by Default │ │ │ │ • All text masked by default - no accidental PHI capture │ │ • Selectively unmask ONLY navigation and generic UI │ │ • Combined with fs-exclude for regulated areas │ │ • Contact Fullstory Support to enable │ └─────────────────────────────────────────────────────────────────┘ ``` > **Reference**: [Fullstory Private by Default](https://help.fullstory.com/hc/en-us/articles/360044349073-Fullstory-Private-by-Default) ### Key Goals for Healthcare Implementations 1. **Improve patient portal UX** without capturing PHI 2. **Optimize appointment scheduling** flows 3. **Reduce friction** in telehealth experiences 4. **Understand navigation patterns** for health content 5. **Never compromise** patient privacy --- ## HIPAA Framework ### What Constitutes PHI? PHI (Protected Health Information) includes any health information that can be linked to an individual: | PHI Category | Examples | Fullstory Handling | |--------------|----------|-------------------| | **Names** | Patient, provider, family | fs-exclude (not mask!) | | **Geographic data** | Address, city, ZIP | fs-exclude | | **Dates** | DOB, admission, discharge, appointment | fs-exclude | | **Contact info** | Phone, fax, email | fs-exclude | | **Identifiers** | SSN, MRN, insurance ID | fs-exclude | | **Health conditions** | Diagnoses, symptoms | fs-exclude | | **Treatments** | Medications, procedures | fs-exclude | | **Providers** | Doctor names, specialties | fs-exclude | | **Test results** | Lab values, imaging | fs-exclude | | **Images** | Photos, scans, ID documents | fs-exclude | | **Biometrics** | Height, weight, vitals | fs-exclude | | **Insurance** | Plan, member ID, claims | fs-exclude | ### HIPAA De-Identification Standards HIPAA provides two methods for de-identification. Understanding these helps clarify what Fullstory can/cannot capture: | Method | Approach | Fullstory Implication | |--------|----------|----------------------| | **Safe Harbor** | Remove 18 specific identifiers | Cannot rely on this—FS captures too much visual data | | **Expert Determination** | Statistical/scientific analysis | Requires formal expert certification; impractical for session replay | **Key Point**: Neither de-identification method is practical for session replay. This is why **exclusion (not just masking)** is required for healthcare. ``` The 18 Safe Harbor Identifiers (all require EXCLUSION): ├── Names ├── Geographic data (smaller than state) ├── Dates (except year) - birth, admission, discharge, death ├── Phone numbers ├── Fax numbers ├── Email addresses ├── Social Security numbers ├── Medical record numbers ├── Health plan beneficiary numbers ├── Account numbers ├── Certificate/license numbers ├── Vehicle identifiers ├── Device identifiers ├── Web URLs ├── IP addresses ├── Biometric identifiers ├── Full-face photographs └── Any other unique identifying characteristic ``` ### HIPAA Minimum Necessary Standard Only capture what is absolutely necessary for UX analysis: ``` ┌─────────────────────────────────────────────────────────────────┐ │ WHAT YOU CAN CAPTURE (Limited) │ ├─────────────────────────────────────────────────────────────────┤ │ ✓ Navigation patterns (which pages visited) │ │ ✓ Error occurrences (not error details) │ │ ✓ Form completion rates (not form contents) │ │ ✓ Button clicks (which buttons, not data submitted) │ │ ✓ Page load times │ │ ✓ Device/browser information │ │ ✓ Session duration (generic) │ ├─────────────────────────────────────────────────────────────────┤ │ WHAT YOU CANNOT CAPTURE │ ├─────────────────────────────────────────────────────────────────┤ │ ✗ Any patient information │ │ ✗ Any provider information │ │ ✗ Any health/medical content │ │ ✗ Appointment details │ │ ✗ Insurance information │ │ ✗ Messages between patient and provider │ │ ✗ Test results, diagnoses, medications │ │ ✗ Images of any kind (could show PHI) │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## Implementation Architecture ### Privacy Zones for Healthcare ``` ┌─────────────────────────────────────────────────────────────────┐ │ HEALTHCARE APPLICATION │ ├─────────────────────────────────────────────────────────────────┤ │ LIMITED VISIBLE (fs-unmask) - Be very careful │ │ • Main navigation menu │ │ • Generic page titles ("My Appointments" not appointment list) │ │ • Action buttons (text only, not data) │ │ • Generic UI elements │ │ • Public health information pages │ ├─────────────────────────────────────────────────────────────────┤ │ NEVER USE MASK IN HEALTHCARE │ │ • Masking is NOT sufficient for HIPAA │ │ • Even masked text structure could reveal PHI │ │ • Example: Masked 3-word name = still identifiable │ ├─────────────────────────────────────────────────────────────────┤ │ MUST EXCLUDE (fs-exclude) - Default for healthcare │ │ • ALL patient information │ │ • ALL provider information │ │ • ALL appointment details │ │ • ALL medical content │ │ • ALL messaging │ │ • ALL forms with health data │ │ • ALL test results │ │ • ALL images │ │ • ALL search queries (could contain symptoms) │ └─────────────────────────────────────────────────────────────────┘ ``` ### Recommended Approach: Default Exclude ```javascript // Healthcare: Consider using Private by Default mode // Then selectively unmask ONLY navigation elements // If not using Private by Default, add fs-exclude to almost everything ``` ### User Identification Pattern ```javascript // Healthcare: Use session-only identification // DO NOT link sessions to patient identity // Option 1: Don't identify at all (safest) // Just use anonymous Fullstory sessions // Option 2: Session-only identifier FS('setIdentity', { uid: generateSessionId() // Random per session, no linking }); // Option 3: Hashed, non-reversible ID (consult legal first) // Only if you have explicit patient consent FS('setIdentity', { uid: sha256(patient.mrn + salt) // Irreversible hash }); // MINIMAL properties - no PHI FS('setProperties', { type: 'user', properties: { // Only non-PHI operational data portal_type: 'patient', // or "provider", "admin" access_method: 'direct', // or "sso", "mobile_app" // NOTHING about the patient: // No demographics, no conditions, no providers, no appointments } }); ``` --- ## Page-Specific Implementations ### Public Health Information Pages ```html

Understanding Diabetes

Diabetes is a chronic condition that affects how your body...

Access Patient Portal Schedule Appointment
``` ### Patient Portal Login ```html
Hospital Name

Patient Portal

Forgot Password? New Patient? Register Here
``` ```javascript // Login tracking - NO PHI FS('trackEvent', { name: 'portal_login_attempted', properties: { portal_type: 'patient', login_method: 'username' // or "sso", "biometric" // NEVER: username, MRN, DOB } }); FS('trackEvent', { name: 'portal_login_result', properties: { success: true, mfa_required: true // NEVER: failure reason (could reveal patient exists) } }); ``` ### Patient Dashboard ```html

Welcome, John Smith

Last login: December 1, 2024

Upcoming Appointments

Dec 15, 2024 at 2:00 PM

Dr. Sarah Johnson

Annual Physical

Main Campus, Room 302

Messages

From: Dr. Johnson

Re: Test Results

Current Medications

``` ```javascript // Dashboard tracking - generic only FS('setProperties', { type: 'page', properties: { page_type: 'patient_dashboard', // Only counts, no details has_upcoming_appointments: true, // Boolean only has_unread_messages: true, // NEVER: appointment count, message count, medication count // (could indicate health status) } }); ``` ### Appointment Scheduling ```html

Schedule an Appointment

1. Service 2. Provider 3. Time 4. Confirm

Select Service Type

Select Provider

Dr. Sarah Johnson, MD

Internal Medicine

Accepting new patients

Select Date and Time

Reason for Visit

``` ```javascript // Appointment scheduling - track funnel, not details function trackSchedulingStep(step) { FS('trackEvent', { name: 'appointment_scheduling_step', properties: { step_number: step, step_name: getStepName(step), // "service", "provider", "time", "confirm" // NEVER: service type, provider name, appointment time } }); } FS('trackEvent', { name: 'appointment_scheduled', properties: { scheduling_method: 'online', // or "phone", "in_person" steps_completed: 4, // NEVER: appointment details } }); ``` ### Telehealth / Virtual Visit ```html

Virtual Visit Waiting Room

Your provider will be with you shortly.

Check Your Setup

Camera
Microphone
Speaker

Appointment with Dr. Johnson

Mental Health Follow-up

``` ```javascript // Telehealth tracking - technical only FS('trackEvent', { name: 'telehealth_session_started', properties: { connection_type: 'video', // or "audio_only" device_type: getDeviceType(), browser: getBrowserName(), // Technical quality metrics initial_video_quality: 'hd', // NEVER: provider name, visit type, session content } }); // Technical issues only FS('trackEvent', { name: 'telehealth_technical_issue', properties: { issue_type: 'connection_lost', // or "audio_failed", "video_failed" duration_before_issue_seconds: 120, // NEVER: what was being discussed } }); ``` ### Health Records / Test Results ```html

Health Records

Recent Test Results

Complete Blood Count

Date: Nov 15, 2024

Ordered by: Dr. Johnson

WBC7.5Normal
RBC4.8Normal
Hemoglobin14.2Normal

Visit Summaries

Nov 10, 2024 - Dr. Johnson

Diagnosis: Type 2 Diabetes

Treatment Plan: Diet modification, Metformin 500mg

Immunization Record

  • COVID-19 Booster - Oct 2024
  • Flu Shot - Sep 2024

Allergies

  • Penicillin - Severe
  • Shellfish - Moderate
``` ### Patient Messaging ```html

Messages

Dr. Sarah Johnson Re: Blood Test Results Dec 1, 2024
Your recent blood work shows...
``` ### Billing (Healthcare-Specific) ```html

Billing

Current Balance: $250.00

Insurance Pending: $500.00

Nov 15, 2024

Service: Laboratory Services

Provider: Dr. Johnson

Amount: $150.00

Insurance: Pending

Make a Payment

``` --- ## What About Provider-Side Applications? For EHR systems and provider-facing applications: ```javascript // Provider applications should use VERY limited Fullstory // Consider: Do you even need session replay? // If you do use Fullstory on provider side: // 1. Never capture patient data displayed on screen // 2. Only track navigation and technical issues // 3. Consider using it only for non-patient screens (admin, scheduling UI) FS('setProperties', { type: 'page', properties: { page_type: 'ehr_dashboard', // Only track application name, not patient context ehr_module: 'scheduling', // or "charting", "orders" // NEVER: patient MRN, patient name, visit type } }); ``` --- ## Consent Considerations in Healthcare ```javascript // Healthcare consent is complex - consult your compliance team // Option 1: Don't use Fullstory on authenticated patient pages // Safest option - use only on public pages // Option 2: Get explicit consent function initializeFullstoryWithConsent() { // Check if patient has consented to analytics if (patient.hasConsentedToAnalytics) { FS('setIdentity', { uid: sha256(patient.id), consent: true }); } else { // Don't capture this session FS('shutdown'); } } // Option 3: Capture no identifying data at all // Anonymous sessions only, no linking ``` --- ## BAA and Compliance Checklist ### Before Going Live - [ ] **BAA signed** with Fullstory - [ ] **Privacy by Default** mode enabled - [ ] **All PHI screens excluded** - [ ] **No patient identifiers** in user properties - [ ] **No health data** in events - [ ] **Images excluded** (could contain PHI) - [ ] **Search excluded** (queries could contain symptoms) - [ ] **Messages excluded** entirely - [ ] **Test results excluded** entirely - [ ] **Appointment details excluded** - [ ] **Provider names excluded** (when with patient context) - [ ] **Billing details excluded** (reveal services received) - [ ] **Legal/compliance review** completed - [ ] **Security team review** completed --- ## KEY TAKEAWAYS FOR AGENT When helping healthcare clients with Fullstory: 1. **Default to exclusion**: In healthcare, fs-exclude is the default, not fs-unmask 2. **Masking is NOT sufficient**: Even masked text can reveal PHI through structure 3. **Everything is potentially PHI**: When in doubt, exclude it 4. **BAA is required**: Don't implement until legal has BAA in place 5. **Consider anonymous sessions**: May not need user identification at all 6. **Public vs. authenticated**: Very different rules apply 7. **Provider applications**: May not be appropriate for Fullstory at all ### What You CAN Track (Limited) - Page navigation (not what's on the page) - Button clicks (not the data submitted) - Form completion rates (not form content) - Error occurrence (not error details) - Technical issues (connection, loading) - Generic UI interactions ### What You CANNOT Track - Any patient information - Any health condition information - Any provider information (in patient context) - Appointment details - Test results - Messages - Medications - Insurance information - Billing details - Images of any kind ### Questions to Ask Healthcare Clients 1. "Do you have a BAA with Fullstory?" 2. "Is Fullstory in your HIPAA security assessment?" 3. "Are you using Private by Default mode?" 4. "Have you audited session replays for PHI exposure?" 5. "Is your implementation scoped to only non-PHI screens?" ### Red Flags - Using fs-mask instead of fs-exclude for PHI - Tracking appointment types or services - Including provider names in events - Capturing search queries - Not having a BAA in place - Using Fullstory on EHR screens --- ## REFERENCE LINKS - **HIPAA Overview**: https://www.hhs.gov/hipaa/ - **Fullstory HIPAA Compliance**: https://www.fullstory.com/legal/hipaa/ - **Privacy Controls**: ../core/fullstory-privacy-controls/SKILL.md - **Privacy Strategy**: ../meta/fullstory-privacy-strategy/SKILL.md - **User Consent**: ../core/fullstory-user-consent/SKILL.md --- *This skill document is specific to healthcare implementations. Always consult your HIPAA compliance officer and legal counsel before implementing Fullstory in a healthcare context. This guide does not constitute legal advice.*