@claudebernard/medication-request-editor-element
Version:
An element providing some custom stuff.
166 lines (157 loc) • 4.55 kB
TypeScript
import { Bundle } from 'fhir/r5.js';
import { CSSResult } from 'lit';
import { LitElement } from 'lit';
import { Medication } from 'fhir/r5';
import { MedicationRequest } from 'fhir/r5';
import { TemplateResult } from 'lit-html';
declare interface ButtonsPreferences {
changeProduct: SectionPreferences;
}
declare interface DosageInstructionFormValues {
dose: {
min: number | null;
max: number | null;
intakeUnit: {
value: string;
label: string;
} | null;
};
timing: {
ma: boolean;
mi: boolean;
ap: boolean;
so: boolean;
co: boolean;
nu: boolean;
};
frequency: {
min: number | null;
max: number | null;
every: number | null;
periodUnit: {
value: string;
label: string;
} | null;
};
duration: {
min: number | null;
max: number | null;
periodUnit: {
value: string;
label: string;
} | null;
};
maximum: {
value: number | null;
intakeUnit: {
value: string;
label: string;
} | null;
periodUnit: {
value: string;
label: string;
} | null;
};
dayOfWeek: {
mon: boolean;
tue: boolean;
wed: boolean;
thu: boolean;
fri: boolean;
sat: boolean;
sun: boolean;
};
}
declare interface FormPreferences {
maximumDosage: SectionPreferences;
}
/**
* Interface pour représenter un médicament extrait d'un Bundle FHIR
*/
declare interface MedicationInfo {
medication: Medication;
medicationRequest: MedicationRequest | null;
idPrescription: string;
}
export declare class MedicationRequestEditor extends LitElement {
medication: MedicationInfo | null;
patientProfile: Bundle | null;
apiUrl: string;
apiKey: string | undefined;
actionsVisibility: boolean;
preferences: UserPreferences;
selectHeader: {
value: string;
label: string;
};
formValues: DosageInstructionFormValues;
usualPosologiesOptions: Array<{
value: string;
label: string;
subText?: string;
category?: string;
categoryColor?: string;
categoryPosition?: string;
}>;
selectedPosology: MedicationRequest | null;
selectedDosageIndex: number;
private listUsualPosologies;
private intakeUnits;
private fieldErrors;
private touchedFields;
private frequencyUnitSelect;
private showHeaderSelectSlot;
updated(changedProperties: Map<string, unknown>): void;
private get customPosology();
private getSelectedDosage;
private getAdditionalInstructionText;
private setMedicationRequest;
private updateCustomPosology;
private runValidation;
private resetValidation;
private handleFieldBlur;
private fieldClass;
private focusFirstError;
private renderSectionMessages;
private getMedicationRequestById;
private handleDosageInstructionClick;
private setSelectedPosologyAndDosage;
private handlePosologyChange;
validateEdition(): void;
private patchFormSection;
private convertIfNeeded;
private handleDoseIntakeUnitChange;
private handleMaximumIntakeUnitChange;
private handleTimingCheckboxChange;
private handleCompoundCheckboxChange;
private handleFrequencyPeriodUnitChange;
private handleDayOfWeekCheckboxChange;
private isExactTimingSelection;
private get isMsActive();
private get isMmsActive();
private patchNumberField;
private handleFrequencyFieldChange;
private getIntakeUnitStep;
private get intakeUnitOptions();
private handleCommentPosologyChange;
private handleCommentDosageChange;
private get posologySelectOptions();
private get activePosologyOption();
private getBasicPosologies;
private getUsualPosologiesOptions;
closeModal(): void;
changeProductClicked(): void;
private renderDosageViewers;
private renderPosologyPanel;
private renderFormPanel;
render(): TemplateResult<1>;
static styles: CSSResult;
}
declare interface SectionPreferences {
display: boolean;
}
declare interface UserPreferences {
form: FormPreferences;
buttons?: ButtonsPreferences;
}
export { }