Skip to main content
Version: v0.0.2

Function: defineProfile()

defineProfile(opts): X12Profile

Build a readonly X12Profile from a validated spec. Invalid input throws "./errors.js".X12ProfileError with an actionable message: missing/empty name, unknown option key (with a typo hint), or a quirk that violates the locked hard rule (missing fixture, bad effect, unknown expectedWarnings code).

extends composes parent profiles: lineage flattens + dedupes, quirks merge by id (child wins on collision, non-colliding parent quirks survive), and description is last-wins.

Parameters

opts

X12ProfileSpec

Returns

X12Profile

Example

import { defineProfile } from "@cosyte/x12";
const availity = defineProfile({
name: "availity",
description: "Availity clearinghouse 835 ERA conventions",
quirks: [
{
id: "payer-loop-ref-2u",
effect: "adds",
summary: "Payer Loop 1000A carries a REF*2U additional payer identifier.",
fixture: "remit/835-availity-quirk.edi",
sourceCategory: "Availity 835 ERA companion guide - payer-loop REF",
},
],
});
availity.name; // "availity"
availity.lineage; // ["availity"]
availity.describe().adds; // [{ id: "payer-loop-ref-2u", ... }]