Data Governance & Privacy Standard Operating Procedure Intermediate Level OSD-DOC-002

Thailand PDPA Compliance & Field Data Ingestion SOP

Standard operating procedure for collecting, anonymizing, and encrypting community beneficiary data across Thailand under PDPA legal frameworks.

Legal & Data Protection Taskforce Compliance Officer & Community Operations Directorate
Last Verified: 2026-10-25
Read Time: 7 min read
Context Tokens: ~1304 tokens

Key Architectural Outcomes & Production Invariants

Verified engineering objectives satisfied by this specification:
  • Zero-retention biometric policy for all educational and rural field operations.
  • Bilingual (Thai/English) tiered consent capture for workshop attendees and scholarship recipients.
  • Pseudonymization hashing using salted SHA-256 for all analytical reports and donor summaries.
  • Standardized 30-day response workflow for Data Subject Access Requests (DSARs).

1. Purpose & Scope

This Standard Operating Procedure (SOP) governs all personnel, field coordinators, and technical subcontractors operating on behalf of OurSiamDream Foundation across Thailand. It enforces compliance with the Personal Data Protection Act B.E. 2562 (PDPA), the Personal Data Protection Committee (PDPC) sub-regulations, and international cross-border non-profit standards.

This document applies to:

  • Field survey ingestion during community workshops in Bangkok, Phuket, Pattaya, Krabi, Chiang Mai, and Hua Hin.
  • Beneficiary database records for eco-tourism training, micro-grants, and language exchange programs.
  • Public photography, media assets, and digital event registration forms.

plaintext
   +-----------------------------------------------------------------+
   |                     Beneficiary Interaction                     |
   +-------------------------------+---------------------------------+
                                   |
                                   v
             [Is PII required for direct service delivery?]
                   /                                   \
                 YES                                    NO
                 /                                       \
                v                                         v
   +-------------------------------+      +---------------------------------+
   | Provide Bilingual PDPA Form   |      | Ingest Anonymous Aggregated     |
   | - Purpose specification       |      | Metrics Only (Village Headcount)|
   | - Retention timeframe (2 Yrs) |      +---------------------------------+
   | - Opt-in toggle for media/news|
   +---------------+---------------+
                   |
     [Consent explicitly signed?]
          /                 \
        YES                  NO
        /                     \
       v                       v
   +-------------------+  +-------------------------------------+
   | Ingest to Vault   |  | Omit PII from system. Provide       |
   | (AES-256 GCM)     |  | program services anonymously.       |
   +-------------------+  +-------------------------------------+

3. Data Classification & Security Requirements

Classification Tier Data Attributes Encryption Requirement Permitted Storage
Tier 1: Sensitive PII Health status, dietary religious restrictions, Thai National ID AES-256-GCM + Salted Hashing Isolated HashiCorp Vault / Encrypted Postgres
Tier 2: General PII Full name, LINE ID, phone number, village name Encrypted at Rest (AES-256) Role-restricted CRM with MFA enforcement
Tier 3: Telemetry / Public Solar generation kW, soil moisture %, ambient temp Plaintext with integrity HMAC Public Grafana & open RAG APIs

4. Field Anonymization Script (Python)

Field teams syncing community feedback to analytical clusters must pass data through the internal pseudonymization engine prior to ingestion:

python
import hashlib
import os

SECRET_SALT = os.environ.get("OSD_PII_SALT", "secure_local_dev_salt_change_in_prod")

def pseudonymize_participant(national_id: str, village_id: str) -> dict:
    """
    Transforms Thai national identifier into an irreversible, 
    consistent pseudonym for multi-year cohort tracking without PII leakage.
    """
    clean_id = national_id.strip().replace("-", "")
    salted_string = f"{clean_id}:{SECRET_SALT}:{village_id}"
    token = hashlib.sha256(salted_string.encode('utf-8')).hexdigest()[:16]
    
    return {
        "anon_id": f"TH-PART-{village_id}-{token}",
        "pdpa_compliant": True,
        "salt_version": "2026.1"
    }

# Example Output:
# {'anon_id': 'TH-PART-PKT-04-a9f3b281c7e2d410', 'pdpa_compliant': True, 'salt_version': '2026.1'}

5. Field Audit & Verification Checklist

  • Confirm paper consent notices feature both Thai (Prompt/Sarabun font) and English text with identical opt-in choices.
  • Ensure camera operators obtain verbal and sticker consent before capturing high-resolution photos of minors.
  • Verify that field tablets use device-level disk encryption (BitLocker / LUKS / Android Knox) with PIN locks.
  • Validate that test exports to CSV immediately redact columns containing phone numbers and National ID strings.
  • Run automated quarterly purge cron to decommission database records with expired 24-month retention flags.
Back to Knowledge Catalog