import type { Questionnaire, QuestionnaireItem, QuestionnaireResponse, QuestionnaireResponseItem } from 'fhir/r4'; export type RecursiveUpdateFunction = (qItem: QuestionnaireItem, qrItemOrItems: QuestionnaireResponseItem | QuestionnaireResponseItem[] | null, extraData: T) => QuestionnaireResponseItem | QuestionnaireResponseItem[] | null; /** * A generic (and safe) way to update a QuestionnaireResponse given a recursive function and a set of data i.e. Record, Record * This function relies heavily on mapQItemsIndex() and getQrItemsIndex() to accurately pinpoint the locations of QR items based on their positions in the Q, taking into account repeating group answers, non-filled questions, etc * * @author Sean Fong */ export declare function updateQuestionnaireResponse(questionnaire: Questionnaire, questionnaireResponse: QuestionnaireResponse, recursiveUpdateFunction: RecursiveUpdateFunction, extraData: T): QuestionnaireResponse; export type RecursiveReadArrayFunction = (qItem: QuestionnaireItem, qrItemOrItems: QuestionnaireResponseItem | QuestionnaireResponseItem[] | null, extraData?: U) => T[] | null; /** * A generic (and safe) way to read an array of element(s) i.e. QuestionnaireResponseItem[], extracted Observation[] from a QuestionnaireResponse given a recursive function. * It also provides an optional extraData (generic U) parameter for additional data that the recursive function may need. * This function relies heavily on mapQItemsIndex() and getQrItemsIndex() to accurately pinpoint the locations of QR items based on their positions in the Q, taking into account repeating group answers, non-filled questions, etc * * @author Sean Fong */ export declare function readQuestionnaireResponse(questionnaire: Questionnaire, questionnaireResponse: QuestionnaireResponse, recursiveReadFunction: RecursiveReadArrayFunction, extraData?: U): T[]; export type RecursiveTraverseFunction = (qItem: QuestionnaireItem, root?: Questionnaire, parent?: QuestionnaireItem, extraData?: U) => void; export declare function traverseQuestionnaire(questionnaire: Questionnaire, recursiveTraverseFunction: RecursiveTraverseFunction, extraData?: U): void;