import type { Reference } from 'fhir/r4'; import type { IValueSet } from '../../services'; /** * Immunization.manufacturer is a Reference in R4, not a CodeableConcept, so a maker chosen from * CDC's MVX list cannot be stored the way every other picker on the form stores its choice. The * code rides in manufacturer.identifier with the MVX system, and the display beside it. * * A reference that arrived from elsewhere - an Organization resource, say - carries no MVX * identifier and is passed through untouched in both directions, so editing a record never * discards a maker this form did not choose. */ export const MVX_SYSTEM = 'http://hl7.org/fhir/sid/mvx'; export const toManufacturerReference = (value: IValueSet | Reference | null | undefined): Reference | undefined => { if (!value) return undefined; if ('code' in value && value.code) { return { identifier: { system: value.system || MVX_SYSTEM, value: value.code }, ...(value.display ? { display: value.display } : {}), }; } if ('reference' in value && value.reference) return value as Reference; return undefined; }; export const fromManufacturerReference = (reference: Reference | undefined): IValueSet | Reference | null => { if (!reference) return null; const code = reference.identifier?.value; if (code) { return { system: reference.identifier?.system || MVX_SYSTEM, code, display: reference.display || code, }; } return reference; };