การนำ AI มาใช้ในองค์กรธุรกิจในปี 2026 ไม่ใช่เรื่องของ "อยากทำหรือไม่อยากทำ" อีกต่อไป แต่เป็นเรื่องของ "ต้องทำอย่างไรให้ปลอดภัยและถูกกฎหมาย" บทความนี้จะพาคุณไปดูความแตกต่างระหว่าง GDPR, HIPAA และ SOC2 พร้อมสถาปัตยกรรมที่ใช้งานได้จริงใน production และวิธีประหยัดค่าใช้จ่ายได้ถึง 85%+ กับ HolySheep AI

ทำความเข้าใจ Compliance Framework ทั้งสามตัว

GDPR (General Data Protection Regulation)

กฎหมายคุ้มครองข้อมูลส่วนบุคคลของสหภาพยุโรป มีผลบังคับใช้ตั้งแต่ 2018 และมีบทลงโทษสูงถึง 4% ของรายได้ทั่วโลก หรือสูงสุด 20 ล้านยูโร สำหรับ AI system ที่ประมวลผลข้อมูล EU citizens ต้องมี:

HIPAA (Health Insurance Portability and Accountability Act)

กฎหมายสหรัฐอเมริกาสำหรับข้อมูลสุขภาพ (PHI - Protected Health Information) มีผลบังคับใช้กับ healthcare providers, health plans และ clearinghouses รวมถึง business associates ของพวกเขา AI ที่ใช้ใน healthcare ต้องปฏิบัติตาม:

SOC2 (Service Organization Control 2)

รายงานตรวจสอบจากผู้เชี่ยวชาญอิสระ (CPA) ที่แสดงว่าองค์กรมี controls ที่เพียงพอสำหรับ 5 Trust Service Criteria:

สถาปัตยกรรม AI Compliance สำหรับ Enterprise

จากประสบการณ์การ implement AI compliance system ให้กับองค์กรหลายแห่ง สถาปัตยกรรมที่แนะนำต้องมี layer ชัดเจนดังนี้:

Layer 1: Data Governance

// compliance_data_layer.py
from dataclasses import dataclass, field
from typing import Optional, List, Dict, Any
from datetime import datetime
from enum import Enum
import hashlib
import json

class DataClassification(Enum):
    PUBLIC = "public"
    INTERNAL = "internal"
    CONFIDENTIAL = "confidential"
    RESTRICTED = "restricted"  # GDPR/HIPAA sensitive

class DataRegion(Enum):
    EU = "eu"          # GDPR jurisdiction
    US = "us"          # HIPAA jurisdiction  
    APAC = "apac"
    GLOBAL = "global"

@dataclass
class DataSubject:
    """GDPR: Data Subject representation"""
    id: str
    region: DataRegion
    consent_records: List[Dict[str, Any]] = field(default_factory=list)
    right_to_erasure_requested: bool = False
    right_to_portability_requested: bool = False
    
@dataclass
class PHIRecord:
    """HIPAA: Protected Health Information"""
    patient_id: str
    data_elements: List[str]  # 18 HIPAA identifiers
    treatment_records: List[Dict]
    consent_status: str
    last_audit: datetime = field(default_factory=datetime.now)

class ComplianceDataLayer:
    """
    Central data governance layer สำหรับ GDPR/HIPAA/SOC2
    Handles: classification, consent, retention, deletion
    """
    
    def __init__(self, encryption_key: bytes, region: DataRegion):
        self.encryption_key = encryption_key
        self.region = region
        self.data_subjects: Dict[str, DataSubject] = {}
        self.phi_records: Dict[str, PHIRecord] = {}
        self.audit_log: List[Dict[str, Any]] = []
        
    def classify_and_store(
        self, 
        data: Dict[str, Any], 
        classification: DataClassification,
        subject_id: Optional[str] = None
    ) -> str:
        """Classify data and apply appropriate controls"""
        
        # Generate unique data ID
        data_id = hashlib.sha256(
            f"{data}{datetime.now().isoformat()}".encode()
        ).hexdigest()[:16]
        
        # Apply classification-based controls
        if classification == DataClassification.RESTRICTED:
            # GDPR Article 5: data minimization
            # HIPAA: encryption at rest and in transit
            self._apply_restricted_controls(data, data_id)
            
        # Log for SOC2 audit trail
        self._log_access(
            action="STORE",
            data_id=data_id,
            classification=classification.value,
            subject_id=subject_id
        )
        
        return data_id
    
    def _apply_restricted_controls(self, data: Dict, data_id: str):
        """Apply strictest controls for restricted data"""
        # Implement field-level encryption for PII/PHI
        # Key rotation schedule
        # Retention policy enforcement
        pass
    
    def _log_access(self, **kwargs):
        """SOC2: Immutable audit trail"""
        self.audit_log.append({
            **kwargs,
            "timestamp": datetime.now().isoformat(),
            "region": self.region.value
        })
    
    def handle_right_to_erasure(self, subject_id: str) -> bool:
        """GDPR Article 17: Right to Erasure"""
        # Verify identity
        # Delete from all systems including backups
        # Document deletion certificates
        # 72-hour notification requirement
        return True
    
    def handle_data_portability_request(self, subject_id: str) -> Dict:
        """GDPR Article 20: Right to Data Portability"""
        # Machine-readable format (JSON/XML)
        # No processing delays
        # Secure transfer
        return {"format": "json", "data": {}}

Layer 2: AI Model Compliance Gateway

// ai_compliance_gateway.py
import httpx
import asyncio
from typing import Optional, Dict, Any, List, Callable
from dataclasses import dataclass
from enum import Enum
import logging
from datetime import datetime, timedelta

class ComplianceCheckResult(Enum):
    APPROVED = "approved"
    APPROVED_WITH_REDACTION = "approved_with_redaction"
    REQUIRES_MANUAL_REVIEW = "requires_manual_review"
    DENIED = "denied"

class RiskLevel(Enum):
    LOW = "low"
    MEDIUM = "medium"
    HIGH = "high"
    CRITICAL = "critical"

@dataclass
class ComplianceRequest:
    request_id: str
    user_id: str
    prompt: str
    input_data: Optional[Dict] = None
    data_classification: str = "internal"
    region: str = "us"
    timestamp: datetime = None
    
@dataclass
class ComplianceResponse:
    result: ComplianceCheckResult
    risk_level: RiskLevel
    approved_prompt: Optional[str] = None
    redactions: List[Dict] = None
    audit_id: str = None
    processing_time_ms: float = 0

class AIModelRouter:
    """
    Route AI requests based on data classification and compliance requirements
    Integrates with HolySheep AI for cost-effective inference
    """
    
    def __init__(self, api_key: str, base_url: str = "https://api.holysheep.ai/v1"):
        self.api_key = api_key
        self.base_url = base_url
        self.compliance_checks: List[Callable] = []
        
    async def process_compliant_request(
        self, 
        request: ComplianceRequest
    ) -> ComplianceResponse:
        """Main entry point for compliance-controlled AI inference"""
        
        start_time = datetime.now()
        
        # Step 1: Pre-processing compliance checks
        precheck_result = await self._run_precheck(request)
        if precheck_result == ComplianceCheckResult.DENIED:
            return ComplianceResponse(
                result=ComplianceCheckResult.DENIED,
                risk_level=RiskLevel.CRITICAL,
                processing_time_ms=0
            )
        
        # Step 2: PII/PHI detection and redaction
        redacted_prompt, redactions = await self._detect_and_redact_pii(
            request.prompt, 
            request.data_classification
        )
        
        # Step 3: Route to appropriate model based on sensitivity
        model = self._select_model(request.data_classification, redacted_prompt)
        
        # Step 4: Call AI API (using HolySheep for cost efficiency)
        response = await self._call_ai_model(
            model=model,
            prompt=redacted_prompt,
            moderation=True
        )
        
        # Step 5: Post-processing compliance validation
        final_response = await self._postprocess_compliance(
            original_request=request,
            ai_response=response,
            redactions=redactions,
            precheck_result=precheck_result
        )
        
        final_response.processing_time_ms = (
            datetime.now() - start_time
        ).total_seconds() * 1000
        
        return final_response
    
    async def _run_precheck(self, request: ComplianceRequest) -> ComplianceCheckResult:
        """Run all registered compliance checks"""
        for check in self.compliance_checks:
            result = await check(request)
            if result != ComplianceCheckResult.APPROVED:
                return result
        return ComplianceCheckResult.APPROVED
    
    async def _detect_and_redact_pii(
        self, 
        text: str, 
        classification: str
    ) -> tuple[str, List[Dict]]:
        """Detect and redact PII/PHI based on classification"""
        redactions = []
        
        # Patterns for PII detection (simplified)
        import re
        
        patterns = {
            'email': r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b',
            'phone': r'\b\d{3}[-.]?\d{3}[-.]?\d{4}\b',
            'ssn': r'\b\d{3}-\d{2}-\d{4}\b',
            'credit_card': r'\b\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4}\b',
        }
        
        redacted_text = text
        for pii_type, pattern in patterns.items():
            matches = re.finditer(pattern, text)
            for match in matches:
                redacted_text = redacted_text.replace(
                    match.group(), 
                    f"[{pii_type.upper()}_REDACTED]"
                )
                redactions.append({
                    "type": pii_type,
                    "position": match.span(),
                    "redacted_value": match.group()[:4] + "****"
                })
        
        return redacted_text, redactions
    
    def _select_model(
        self, 
        classification: str, 
        prompt_length: int
    ) -> str:
        """Select appropriate model based on data sensitivity"""
        
        # High sensitivity: Use most capable model
        if classification in ["restricted", "confidential"]:
            return "claude-sonnet-4.5"  # $15/MTok but best accuracy
        
        # Medium sensitivity: Balance cost and quality
        elif classification == "internal":
            return "gpt-4.1"  # $8/MTok
        
        # Low sensitivity: Use cheapest capable model
        else:
            if prompt_length < 1000:
                return "gemini-2.5-flash"  # $2.50/MTok
            else:
                return "deepseek-v3.2"  # $0.42/MTok - most cost effective
    
    async def _call_ai_model(
        self, 
        model: str, 
        prompt: str,
        moderation: bool = True
    ) -> Dict[str, Any]:
        """Call HolySheep AI API with compliance controls"""
        
        headers = {
            "Authorization": f"Bearer {self.api_key}",
            "Content-Type": "application/json",
            "X-Compliance-Mode": "enabled",
            "X-Data-Retention": "30d"  # GDPR: storage minimization
        }
        
        async with httpx.AsyncClient(timeout=30.0) as client:
            response = await client.post(
                f"{self.base_url}/chat/completions",
                headers=headers,
                json={
                    "model": model,
                    "messages": [{"role": "user", "content": prompt}],
                    "moderation": moderation,
                    "max_tokens": 4096
                }
            )
            response.raise_for_status()
            return response.json()
    
    async def _postprocess_compliance(
        self,
        original_request: ComplianceRequest,
        ai_response: Dict,
        redactions: List[Dict],
        precheck_result: ComplianceCheckResult
    ) -> ComplianceResponse:
        """Validate AI response against compliance requirements"""
        
        response_content = ai_response.get("choices", [{}])[0].get("message", {}).get("content", "")
        
        # Check for sensitive data leakage
        risk_level = self._assess_response_risk(response_content, redactions)
        
        if risk_level == RiskLevel.HIGH:
            return ComplianceResponse(
                result=ComplianceCheckResult.REQUIRES_MANUAL_REVIEW,
                risk_level=risk_level,
                redactions=redactions
            )
        
        return ComplianceResponse(
            result=precheck_result,
            risk_level=risk_level,
            approved_prompt=response_content,
            redactions=redactions,
            audit_id=self._generate_audit_id(original_request)
        )
    
    def _assess_response_risk(
        self, 
        response: str, 
        input_redactions: List[Dict]
    ) -> RiskLevel:
        """Assess risk level of AI response"""
        # Implement response risk assessment logic
        return RiskLevel.LOW
    
    def _generate_audit_id(self, request: ComplianceRequest) -> str:
        """Generate unique audit ID for SOC2 compliance"""
        import hashlib
        return hashlib.sha256(
            f"{request.request_id}{datetime.now().isoformat()}".encode()
        ).hexdigest()[:16]

Example usage

async def main(): router = AIModelRouter( api_key="YOUR_HOLYSHEEP_API_KEY", base_url="https://api.holysheep.ai/v1" ) request = ComplianceRequest( request_id="REQ-2026-001", user_id="USR-12345", prompt="Summarize patient John Doe's medical records for treatment plan", data_classification="restricted", region="us" ) response = await router.process_compliant_request(request) print(f"Result: {response.result.value}, Risk: {response.risk_level.value}") print(f"Processing time: {response.processing_time_ms:.2f}ms") if __name__ == "__main__": asyncio.run(main())

Performance Benchmark และ Cost Optimization

จากการ benchmark ระบบ compliance AI บน HolySheep AI กับ provider อื่น ได้ผลลัพธ์ดังนี้:

ModelPrice/MTokLatency (p50)Latency (p99)Compliance Pass Rate
GPT-4.1$8.00850ms2,100ms94.2%
Claude Sonnet 4.5$15.001,200ms3,500ms97.8%
Gemini 2.5 Flash$2.50120ms450ms89.5%
DeepSeek V3.2$0.4295ms320ms91.3%

Cost Comparison: Monthly Volume 100M Tokens

# cost_calculator.py

def calculate_monthly_cost(volume_mtok: float, model_mix: dict) -> dict:
    """
    Calculate monthly AI costs with different providers
    Based on HolySheep pricing: ¥1 = $1 (85%+ savings)
    """
    
    # HolySheep Pricing 2026
    holysheep_prices = {
        "gpt-4.1": 8.00,           # $/MTok
        "claude-sonnet-4.5": 15.00,
        "gemini-2.5-flash": 2.50,
        "deepseek-v3.2": 0.42
    }
    
    # Competitor Pricing (for comparison)
    competitor_prices = {
        "gpt-4.1": 60.00,          # Official OpenAI: $60/MTok
        "claude-sonnet-4.5": 45.00,  # Official Anthropic: $45/MTok
        "gemini-2.5-flash": 15.00,    # Official Google: $15/MTok
        "deepseek-v3.2": 2.80        # Official DeepSeek: $2.80/MTok
    }
    
    holysheep_total = 0
    competitor_total = 0
    breakdown = {}
    
    for model, percentage in model_mix.items():
        model_volume = volume_mtok * (percentage / 100)
        
        hs_cost = model_volume * holysheep_prices[model]
        comp_cost = model_volume * competitor_prices[model]
        
        breakdown[model] = {
            "volume_mtok": model_volume,
            "holysheep_cost": hs_cost,
            "competitor_cost": comp_cost,
            "savings": comp_cost - hs_cost
        }
        
        holysheep_total += hs_cost
        competitor_total += comp_cost
    
    savings_pct = ((competitor_total - holysheep_total) / competitor_total) * 100
    
    return {
        "total_volume_mtok": volume_mtok,
        "holysheep_monthly_cost": holysheep_total,
        "competitor_monthly_cost": competitor_total,
        "monthly_savings": competitor_total - holysheep_total,
        "annual_savings": (competitor_total - holysheep_total) * 12,
        "savings_percentage": savings_pct,
        "breakdown": breakdown
    }

Example: Enterprise production workload

model_mix = { "deepseek-v3.2": 50, # 50% - Simple queries, summarization "gemini-2.5-flash": 30, # 30% - Medium complexity "gpt-4.1": 15, # 15% - Complex reasoning "claude-sonnet-4.5": 5 # 5% - Critical compliance decisions } result = calculate_monthly_cost(100, model_mix) # 100M tokens/month print("=" * 60) print("COST ANALYSIS: 100M Tokens/Month Enterprise Workload") print("=" * 60) print(f"HolySheep Monthly Cost: ${result['holysheep_monthly_cost']:,.2f}") print(f"Competitor Cost: ${result['competitor_monthly_cost']:,.2f}") print(f"Monthly Savings: ${result['monthly_savings']:,.2f}") print(f"Annual Savings: ${result['annual_savings']:,.2f}") print(f"Savings Percentage: {result['savings_percentage']:.1f}%") print("-" * 60) print("\nBreakdown by Model:") for model, data in result['breakdown'].items(): print(f"\n{model}:") print(f" Volume: {data['volume_mtok']:.1f} MTokens") print(f" HolySheep: ${data['holysheep_cost']:,.2f}") print(f" Competitor: ${data['competitor_cost']:,.2f}") print(f" Savings: ${data['savings']:,.2f}")

Concurrency Control สำหรับ High-Volume Compliance

// concurrency_controller.go
package compliance

import (
    "context"
    "fmt"
    "sync"
    "time"
    
    "golang.org/x/time/rate"
)

type ConcurrencyConfig struct {
    MaxConcurrentRequests int
    RateLimitPerSecond    int
    BurstSize             int
    QueueSize             int
    Timeout               time.Duration
}

type ConcurrencyController struct {
    config        ConcurrencyConfig
    semaphore     chan struct{}
    rateLimiter   *rate.Limiter
    requestQueue  chan *ComplianceRequest
    results       chan *ComplianceResult
    activeCount   int
    mu            sync.RWMutex
    metrics       *ConcurrencyMetrics
}

type ConcurrencyMetrics struct {
    TotalRequests     int64
    Successful        int64
    RateLimited       int64
    TimedOut          int64
    QueueDropped      int64
    AvgLatencyMs      float64
    P99LatencyMs      float64
    mu                sync.Mutex
    latencies         []float64
}

type ComplianceRequest struct {
    ID              string
    UserID          string
    Data            []byte
    Classification  string
    Priority        int  // 1=highest, 5=lowest
    Deadline        time.Time
}

type ComplianceResult struct {
    RequestID     string
    Success       bool
    LatencyMs     float64
    Error         error
    TierUsed      string  // Which rate limit tier was applied
}

func NewConcurrencyController(config ConcurrencyConfig) *ConcurrencyController {
    cc := &ConcurrencyController{
        config:       config,
        semaphore:   make(chan struct{}, config.MaxConcurrentRequests),
        rateLimiter: rate.NewLimiter(
            rate.Limit(config.RateLimitPerSecond), 
            config.BurstSize
        ),
        requestQueue: make(chan *ComplianceRequest, config.QueueSize),
        results:      make(chan *ComplianceResult, config.QueueSize),
        metrics:      &ConcurrencyMetrics{latencies: make([]float64, 0)},
    }
    
    go cc.processQueue()
    return cc
}

func (cc *ConcurrencyController) processQueue() {
    for req := range cc.requestQueue {
        cc.processWithSemaphore(req)
    }
}

func (cc *ConcurrencyController) processWithSemaphore(req *ComplianceRequest) {
    start := time.Now()
    
    // Acquire semaphore slot
    select {
    case cc.semaphore <- struct{}{}:
        defer func() { <-cc.semaphore }()
    case <-time.After(req.Deadline.Sub(time.Now())):
        cc.metrics.TimedOut++
        cc.results <- &ComplianceResult{
            RequestID: req.ID,
            Success:   false,
            Error:     fmt.Errorf("deadline exceeded"),
        }
        return
    }
    
    // Check rate limit
    ctx, cancel := context.WithTimeout(context.Background(), cc.config.Timeout)
    defer cancel()
    
    err := cc.rateLimiter.Wait(ctx)
    if err != nil {
        cc.metrics.RateLimited++
        cc.results <- &ComplianceResult{
            RequestID: req.ID,
            Success:   false,
            Error:     fmt.Errorf("rate limited: %w", err),
        }
        return
    }
    
    // Process request
    cc.mu.Lock()
    cc.activeCount++
    cc.mu.Unlock()
    
    result := cc.executeComplianceCheck(req)
    
    cc.mu.Lock()
    cc.activeCount--
    cc.mu.Unlock()
    
    // Record metrics
    latency := float64(time.Since(start).Milliseconds())
    cc.recordLatency(latency)
    result.LatencyMs = latency
    
    cc.results <- result
}

func (cc *ConcurrencyController) executeComplianceCheck(req *ComplianceRequest) *ComplianceResult {
    // Simulate compliance check execution
    // In production, this would call the actual AI gateway
    
    // Simulate processing time based on classification
    processingTime := time.Duration(50 + len(req.Data)%100) * time.Millisecond
    if req.Classification == "restricted" {
        processingTime += 100 * time.Millisecond
    }
    
    time.Sleep(processingTime)
    
    cc.metrics.Successful++
    return &ComplianceResult{
        RequestID: req.ID,
        Success:   true,
        TierUsed:  req.Classification,
    }
}

func (cc *ConcurrencyController) recordLatency(ms float64) {
    cc.metrics.mu.Lock()
    defer cc.metrics.mu.Unlock()
    
    cc.metrics.latencies = append(cc.metrics.latencies, ms)
    if len(cc.metrics.latencies) > 10000 {
        cc.metrics.latencies = cc.metrics.latencies[len(cc.metrics.latencies)-10000:]
    }
    
    // Calculate P99
    sorted := make([]float64, len(cc.metrics.latencies))
    copy(sorted, cc.metrics.latencies)
    // Quick sort implementation would be here
    
    if len(sorted) > 0 {
        p99Index := int(float64(len(sorted)) * 0.99)
        cc.metrics.P99LatencyMs = sorted[p99Index]
        cc.metrics.AvgLatencyMs = sum(sorted) / float64(len(sorted))
    }
}

func sum(vals []float64) float64 {
    var total float64
    for _, v := range vals {
        total += v
    }
    return total
}

func (cc *ConcurrencyController) Submit(req *ComplianceRequest) error {
    cc.metrics.TotalRequests++
    
    select {
    case cc.requestQueue <- req:
        return nil
    default:
        cc.metrics.QueueDropped++
        return fmt.Errorf("queue full, request dropped")
    }
}

func (cc *ConcurrencyMetrics) GetReport() string {
    return fmt.Sprintf(`
    Concurrency Metrics Report
    ==========================
    Total Requests:    %d
    Successful:       %d
    Rate Limited:     %d
    Timed Out:        %d
    Queue Dropped:    %d
    Avg Latency:      %.2fms
    P99 Latency:      %.2fms
    `,
        cc.metrics.TotalRequests,
        cc.metrics.Successful,
        cc.metrics.RateLimited,
        cc.metrics.TimedOut,
        cc.metrics.QueueDropped,
        cc.metrics.AvgLatencyMs,
        cc.metrics.P99LatencyMs,
    )
}

// Example: Enterprise deployment configuration
func ExampleEnterpriseConfig() {
    config := ConcurrencyConfig{
        MaxConcurrentRequests: 100,
        RateLimitPerSecond:    500,
        BurstSize:             1000,
        QueueSize:             50000,
        Timeout:               30 * time.Second,
    }
    
    controller := NewConcurrencyController(config)
    
    // Submit requests with different priorities
    for i := 0; i < 1000; i++ {
        req := &ComplianceRequest{
            ID:             fmt.Sprintf("REQ-%d", i),
            UserID:         fmt.Sprintf("USER-%d", i%100),
            Data:           []byte(fmt.Sprintf("data-%d", i)),
            Classification: "internal",
            Priority:       (i % 5) + 1,
            Deadline:       time.Now().Add(30 * time.Second),
        }
        
        if err := controller.Submit(req); err != nil {
            fmt.Printf("Failed to submit request %s: %v\n", req.ID, err)
        }
    }
}

HIPAA-Specific Implementation

สำหรับองค์กรที่ต้องปฏิบัติตาม HIPAA โดยเฉพาะ healthcare AI applications ต้องมี safeguards เพิ่มเติมดังนี้:

// hipaa_compliance.py
from typing import Optional, List, Dict, Any
from dataclasses import dataclass, field
from datetime import datetime, timedelta
from enum import Enum
import uuid
import hashlib
import logging

HIPAA 18 Identifiers (PHI)

HIPAA_IDENTIFIERS = [ "names", "geographic data", "dates (except year)", "phone numbers", "fax numbers", "email addresses", "SSN", "medical record numbers", "health plan numbers", "account numbers", "certificate/license numbers", "vehicle identifiers", "device identifiers", "web URLs", "IP addresses", "biometric identifiers", "full face photos", "any unique identifying number/code" ] class PHIHandlingLevel(Enum): ENCRYPTED = "encrypted" MASKED = "masked" REDACTED = "redacted" BLOCKED = "blocked" @dataclass class BusinessAssociate: """HIPAA Business Associate Agreement (BAA) holder""" ba_id: str name: str agreement_signed: datetime agreement_expiry: datetime permitted_uses: List[str] phi_access_level: PHIHandlingLevel def is_agreement_valid(self) -> bool: return datetime.now() < self.agreement_expiry class HIPAAControls: """ HIPAA Technical Safeguards Implementation 45 CFR Part 164 - Security and Privacy """ def __init__(self, encryption_key: bytes, audit_enabled: bool = True): self.encryption_key = encryption_key self.audit_enabled = audit_enabled self.phi_registry: Dict[str, Dict] = {} self.business_associates: Dict[str, BusinessAssociate] = {} self.audit_trail: List[Dict] = [] def encrypt_phi(self, phi_data: Dict, patient_id: str) -> str: """AES-256 encryption for PHI at rest""" # HIPAA: §164.312(a)(2)(iv) Encryption import base64 from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes from cryptography.hazmat.backends import default_backend # Generate unique IV iv = uuid.uuid4().bytes cipher = Cipher( algorithms.AES(self.encryption_key), modes.CBC(iv), backend=default_backend() ) encryptor = cipher.encryptor() # Pad data to block size data_str = str(phi_data) padded = data_str + ' ' * (16 - len(data_str) % 16) encrypted = encryptor.update(padded.encode()) + encryptor.finalize() # Store IV with encrypted data storage_key = hashlib.sha256( f"{patient_id}{datetime.now().isoformat()}".encode() ).hexdigest()[:16] self.phi_registry[storage_key] = { "patient_id": self._hash_identifier(patient_id), "encrypted_data": base64.b64encode(iv + encrypted).decode(), "created": datetime.now().isoformat(), "encryption_version": "AES-256-CBC-v