Skip to main content
Version: v0.0.3

Function: defineProfile()

defineProfile(opts): NcpdpProfile

Build a readonly NcpdpProfile from a validated spec. Invalid input throws "./errors.js".NcpdpProfileError 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 standard/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

NcpdpProfileSpec

Returns

NcpdpProfile

Example

import { defineProfile } from "@cosyte/ncpdp/profiles";
const pbm = defineProfile({
name: "pbm",
description: "PBM / clearinghouse Telecom claim conventions",
quirks: [
{
id: "person-code-required",
standard: "telecom",
effect: "requires",
summary: "Insurance segment carries a Person Code (303-C3).",
fixture: "telecom/pbm-person-code.ncpdp",
sourceCategory: "NCPDP Telecommunication vD.0: Person Code (303-C3)",
},
],
});
pbm.name; // "pbm"
pbm.lineage; // ["pbm"]
pbm.describe().requires; // [{ id: "person-code-required", ... }]