import type { Extension, Questionnaire } from 'fhir/r4'; // The old two-state builder wrote initial false for both an untouched yes/no and an authored No, so // only a Questionnaire saved by the Not set / Yes / No editor (stamped here) can carry an authored No. export const QUESTIONNAIRE_COMPATIBILITY_URL = 'https://akashichealthrecords.com/fhir/StructureDefinition/questionnaire-compatibility-version'; export const QUESTIONNAIRE_COMPATIBILITY_VERSION = 1; export const questionnaireCompatibilityStamp = (): Extension => ({ url: QUESTIONNAIRE_COMPATIBILITY_URL, valueInteger: QUESTIONNAIRE_COMPATIBILITY_VERSION }); export const isCompatibilityVersioned = (questionnaire?: Pick | null): boolean => (questionnaire?.extension ?? []).some((extension: Extension) => extension.url === QUESTIONNAIRE_COMPATIBILITY_URL && typeof extension.valueInteger === 'number' && extension.valueInteger >= QUESTIONNAIRE_COMPATIBILITY_VERSION); /** A stored boolean initial as Yes (true), No (false) or unset (null); legacy false is unset. */ export const readBooleanInitial = (value: unknown, versioned: boolean): boolean | null => { if (value === true) return true; if (value === false && versioned) return false; return null; };