/** * Factory helpers for standardized ValidationIssue creation. */ import { type ValidationIssue, type ValidationAspect, type ValidationSeverity } from '@records-fhir/validation-types'; import { type ValidationCode } from './message-catalog'; export interface CreateIssueParams { code: ValidationCode | string; path: string; resourceType: string; messageParams?: Record; customMessage?: string; profile?: string; details?: Record; severityOverride?: ValidationSeverity; aspectOverride?: ValidationAspect; ruleId?: string; } /** * Kept for backward-compatible tests/callers. Issue IDs are now deterministic * and no longer rely on mutable counters. */ export declare function resetIssueCounter(): void; export declare function createValidationIssue(params: CreateIssueParams): ValidationIssue; /** * Create a terminology binding violation issue. * Uses different message templates for primitive codes (no system) vs Coding types (with system). */ export declare function createBindingViolation(params: { strength: 'required' | 'extensible' | 'preferred' | 'example'; code: string; system?: string; valueSet: string; path: string; resourceType: string; profile?: string; }): ValidationIssue; /** * Create a "binding could not be verified" informational issue. * * Emitted when a coded element's ValueSet cannot be expanded locally and no * terminology server confirmed the code. Distinct from a binding violation: * the code is not known to be wrong, only unverifiable. Severity is * informational so it never gates, but the skip becomes visible instead of * silent (gap P-3). */ export declare function createBindingUnverified(params: { strength: 'required' | 'extensible' | 'preferred'; code: string; system?: string; valueSet: string; path: string; resourceType: string; profile?: string; /** Override the default `information` severity (e.g. `warning` under a strict policy). */ severityOverride?: ValidationSeverity; }): ValidationIssue; export declare function createRequiredElementMissing(params: { element: string; path: string; resourceType: string; profile?: string; }): ValidationIssue; export declare function createReferenceTypeMismatch(params: { actual: string; allowed: string[]; path: string; resourceType: string; }): ValidationIssue; export declare function createConstraintViolation(params: { key: string; message: string; path: string; resourceType: string; profile?: string; severity?: ValidationSeverity; }): ValidationIssue; export declare function createValidationError(params: { message: string; path: string; resourceType: string; aspect?: ValidationAspect; }): ValidationIssue; //# sourceMappingURL=issue-factory.d.ts.map