```python:inference/enterprise/workflows/enterprise_blocks/sinks/event_writer/v1.py
from typing import Any, Dict, Optional


def _build_event_data(
    event_schema: str,
    qc_result: Optional[str] = None,
    external_id: Optional[str] = None,
    location: Optional[str] = None,
    item_count: Optional[int] = None,
    item_type: Optional[str] = None,
    alert_type: Optional[str] = None,
    severity: Optional[str] = None,
    alert_description: Optional[str] = None,
    custom_value: Optional[str] = None,
) -> Dict[str, Any]:
    """Build schema-specific event_data dict with camelCase keys, stripping None values."""
    if event_schema == "quality_check":
        data = {}
        if qc_result is not None:
            data["result"] = qc_result
        if external_id is not None:
            data["externalId"] = external_id
    elif event_schema == "inventory_count":
        data = {}
        if location is not None:
            data["location"] = location
        if item_count is not None:
            data["itemCount"] = item_count
        if item_type is not None:
            data["itemType"] = item_type
        if external_id is not None:
            data["externalId"] = external_id
    elif event_schema == "safety_alert":
        data = {}
        if alert_type is not None:
            data["alertType"] = alert_type
        if severity is not None:
            data["severity"] = severity
        if alert_description is not None:
            data["description"] = alert_description
        if external_id is not None:
            data["externalId"] = external_id
    elif event_schema == "custom":
        data = {}
        if external_id is not None:
            data["externalId"] = external_id
        if custom_value is not None:
            data["value"] = custom_value
    else:
        data = {}
    # Strip None values — event_data schemas use extra="forbid"
    return data
```