@opencharts/resources
v0.0.1
Published
Resource utilities for OpenCharts
Maintainers
Readme
@opencharts/resources
Canonical resource catalog, validator, and built-in FHIR-aligned resource types.
Overview
@opencharts/resources provides the resource type system used by the canonical data model. Every resource instance must have a registered type. The catalog cross-references @opencharts/parameters at registration time to ensure every parameter spec names a valid, registered parameter type.
CanonicalResourceCatalog— register, retrieve, and validate resource definitions.CanonicalResourceValidator— validate resource instances and arrays.baseResources/registerBaseResources— the built-in FHIR-aligned resource set (Patient, Encounter, Observation, DocumentReference, …).
Installation
npm install @opencharts/resourcesUsage
Using the base resource set
import { createCanonicalSystem } from '@opencharts/sdk';
const { resources } = createCanonicalSystem();
const patientDef = resources.get('Patient');
console.log(patientDef.resolvable); // trueManual setup (no SDK)
import { CanonicalResourceCatalog, registerBaseResources } from '@opencharts/resources';
import { CanonicalParameterCatalog, registerBaseParameters } from '@opencharts/parameters';
const parameters = new CanonicalParameterCatalog();
registerBaseParameters(parameters);
// Pass parameterCatalog for referential-integrity checks at registration time
const resources = new CanonicalResourceCatalog({ parameterCatalog: parameters });
registerBaseResources(resources);Register a custom resource type
resources.register({
type: 'Lab',
version: 1,
name: 'Lab Result',
description: 'A laboratory observation result',
parameters: {
identifiers: { parameter: 'IdentifierList' },
code: { parameter: 'CodeableConcept', cardinality: '1..1' },
subject_ref: { parameter: 'ResourceReference', cardinality: '1..1' },
effective: { parameter: 'DateOrDateTimeOrPeriod' },
value: { parameter: 'ObservationValue' },
},
resolvable: false,
});Validate a resource instance
import { CanonicalResourceValidator } from '@opencharts/resources';
import { CanonicalExtensionRegistry } from '@opencharts/extension';
const extensions = new CanonicalExtensionRegistry();
const validator = new CanonicalResourceValidator({
resourceCatalog: resources,
parameterCatalog: parameters,
extensionRegistry: extensions,
});
const { valid, errors } = validator.validateResource({
key: 'lab-1',
type: 'Lab',
parameters: {
code: { system: 'loinc', code: '718-7' }, // CodeableConcept
subject_ref: { type: 'Patient', id: 'p-001' },
},
});
if (!valid) console.error(errors);Validate an array of resources
const report = validator.validateResourceArray([resource1, resource2]);
// report: { valid: boolean, errors: string[] }
// Also checks for duplicate keys across the array.Built-in Resource Types
Identity / organization
Patient, Practitioner, PractitionerRole, Organization, Location, RelatedPerson, Coverage
Scheduling / clinical context
Appointment, Encounter, EpisodeOfCare, ServiceRequest
Clinical data
Observation, Condition, AllergyIntolerance, Procedure, DiagnosticReport, Immunization, CarePlan, Goal, Medication, MedicationRequest, MedicationAdministration, MedicationDispense, MedicationStatement
Documents
DocumentReference, ClinicalDocument, Binary
Operation outputs
DataPackage, ExportManifest, ValidationReport, TransformationResult, DeliveryReceipt
API Reference
CanonicalResourceCatalog
| Method | Description |
|---|---|
| register(definition) | Register a resource definition (immutable once published) |
| get(type, version?) | Retrieve a definition (latest if no version) |
| has(type, version?) | Check existence |
| list() | All registered definitions |
| validateDefinition(definition) | Structural validation (used internally) |
CanonicalResourceValidator
| Method | Description |
|---|---|
| validateResource(resource, context?) | Returns { valid, errors } |
| validateResourceArray(resources) | Validates array including duplicate-key check |
