@vidal-community/vidal-web-components
Version:
Vidal Web Components
588 lines (587 loc) • 41.1 kB
JavaScript
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var VidalHistoryTtt_1;
import { html, LitElement } from 'lit';
import { customElement, property } from 'lit/decorators.js';
import * as vis from 'vis-timeline/standalone';
import './timeline-scale-selector';
import { Drug, DrugType } from './model/drug';
import { parseAtcClassification, findMostRecentOffMarketDate, parsePrescribableName, parseSearchResult, parseVidalClassification, } from './karadoc/karadoc';
import { FullMedicationDispense } from './model/full-medication-dispense';
import { buildTimelineData } from './timeline/build';
import { Patient } from './model/patient';
import './vidal-history-order-and-group';
import './timeline-drug-display-mode-selector';
import { styles } from './vidal-history-ttt.styles';
import { Gender } from './model/gender';
import { Point } from './timeline/point';
import { addMonths, format, isBefore } from 'date-fns';
var Direction;
(function (Direction) {
Direction["PREVIOUS"] = "previous";
Direction["NEXT"] = "next";
})(Direction || (Direction = {}));
let VidalHistoryTtt = VidalHistoryTtt_1 = class VidalHistoryTtt extends LitElement {
constructor() {
super(...arguments);
this._medicationDispenses = [];
this._grouping = 'molecule';
this._errors = [];
this._dataErrors = [];
this.fullMedicationDispenses = [];
this.classifiedBy = 'ATC';
this.prescriptionItems = [];
this.zoomAndScale = {
zoom: 'year',
scale: { label: 'month', step: 1 },
};
}
set medicationDispenses(value) {
this._medicationDispenses = value;
this._dataErrors = [];
this._medicationDispenses.forEach((medicationDispense) => {
medicationDispense.dispensations.forEach((dispensation) => {
if (Number.isNaN(Date.parse(dispensation.startDate))) {
this._dataErrors.push(`La date indiquée (${dispensation.startDate}) pour le médicament ${medicationDispense.medicationCode} a un format incorrect`);
}
});
});
}
get medicationDispenses() {
return this._medicationDispenses;
}
get grouping() {
return this._grouping;
}
set grouping(grouping) {
this._grouping = grouping;
this.drawTimeline(this.fullMedicationDispenses);
}
get patient() {
return this._patient;
}
set patient(patient) {
var _a, _b;
this._patient = new Patient(Gender[(_b = (_a = patient === null || patient === void 0 ? void 0 : patient.sex) === null || _a === void 0 ? void 0 : _a.toUpperCase()) !== null && _b !== void 0 ? _b : ''], patient === null || patient === void 0 ? void 0 : patient.dateOfBirth, () => Date.now());
}
get dataErrors() {
return this._dataErrors;
}
get errors() {
return this._errors;
}
getHtmlElement(selector) {
return this.renderRoot.querySelector(selector);
}
render() {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
console.debug('Patient profile', this.patient);
console.debug('Input medication dispenses', this.medicationDispenses);
window.onresize = () => {
var _a;
(_a = this.timeline) === null || _a === void 0 ? void 0 : _a.setOptions({
maxHeight: this.getHtmlElement('.timeline-container').clientHeight,
});
};
(_a = this.timeline) === null || _a === void 0 ? void 0 : _a.destroy();
let genderIcon = '';
if (((_b = this.patient) === null || _b === void 0 ? void 0 : _b.sex) === Gender.MALE) {
genderIcon = VidalHistoryTtt_1.maleIcon;
}
if (((_c = this.patient) === null || _c === void 0 ? void 0 : _c.sex) === Gender.FEMALE) {
genderIcon = VidalHistoryTtt_1.femaleIcon;
}
const age = ((_d = this.patient) === null || _d === void 0 ? void 0 : _d.age) ? `(${this.patient.age} ans)` : '';
return html `
<link
href="https://unpkg.com/vis-timeline@latest/styles/vis-timeline-graph2d.min.css"
rel="stylesheet"
type="text/css"
/>
<div class="vidal-header">
<span>
<img
height="40px"
src="${VidalHistoryTtt_1.logoVidal}"
alt="Logo Vidal"
/>
</span>
<span> Historique des traitements</span>
<span class="patient">
<span>${(_f = (_e = this.patient) === null || _e === void 0 ? void 0 : _e.dateOfBirth) === null || _f === void 0 ? void 0 : _f.toLocaleDateString()}</span>
<span>${age}</span>
<span class="gender-logo">
<img
height="30px"
src="${genderIcon}"
alt="${(_h = (_g = this.patient) === null || _g === void 0 ? void 0 : _g.sex) !== null && _h !== void 0 ? _h : ''}"
/>
</span>
</span>
</div>
<div class="sub-header first">
<timeline-scale-selector
.valueChangeEvent="${(value) => this.changeScale(value)}"
></timeline-scale-selector>
<div class="todayButtonWrapper">
<button
title="Définir la date de fin à aujourd'hui"
class="todayButton"
@click="${() => this.selectToday()}"
>
<span>Aujourd'hui</span>
</button>
</div>
<div class="meta-data">
<span
>Appel du ${new Date().toLocaleString()}<img
class="warning-icon"
src="${VidalHistoryTtt_1.warningIcon}"
alt="Warning"
/></span>
<span>Source : ${(_j = this.dataSource) !== null && _j !== void 0 ? _j : 'non précisée'}</span>
<span
>${this.dataDate
? html `Données du
<span class="data-date-value"
>${(_k = this.dataDate) === null || _k === void 0 ? void 0 : _k.toLocaleDateString()}</span
>`
: ''}</span
>
</div>
</div>
<div class="sub-header last">
<vidal-history-order-and-group
.switchHandler="${(classification) => this.reclassify(classification)}"
></vidal-history-order-and-group>
<div class="regroupment-container">
<span class="regroupment-label"> Regroupement </span>
<div class="order-by-arrow"></div>
<timeline-drug-display-mode-selector
.onClickHandler="${this.onTimeLineGroupingClickHandler()}"
.grouping="${this.grouping}"
></timeline-drug-display-mode-selector>
</div>
</div>
<div class="available-soon hidden-div">Bientôt disponible</div>
<div class="timeline-container"></div>
`;
}
selectToday() {
this.startRange = this.computeStartDate();
this.endRange = new Date();
this.changeScale(this.zoomAndScale);
}
/**
* Change display of the timeline according to selected timeline scale
*/
changeScale(value) {
var _a, _b;
this.currentDate = this.startRange
? new Date(this.startRange.getTime())
: new Date();
this.zoomAndScale = value;
const currentDateTime = this.currentDate.getTime();
const end = addMonths(currentDateTime, this.getDurationInMonths()).getTime();
this.startRange = new Date(currentDateTime);
this.endRange = new Date(end);
this.zoomAndScale = value;
(_a = this.timeline) === null || _a === void 0 ? void 0 : _a.setOptions({
start: this.startRange.getTime(),
end: end,
timeAxis: { scale: value.scale.label, step: value.scale.step },
});
(_b = this.timeline) === null || _b === void 0 ? void 0 : _b.redraw();
}
updated() {
console.time('FullMedicationDispenses fetch');
this.medicationDispenses.forEach((medicationDispense) => {
if (!medicationDispense.medicationCode.trim()) {
this._errors.push('Attention, des médicaments sans code ont été ignorés.');
}
else if (medicationDispense.dispensations.length === 0) {
this._errors.push(`Attention, il n'y a pas de date pour le médicament ${medicationDispense.medicationCode}`);
}
});
this.fullMedicationDispenses = [];
Promise.all(this.getFullMedicationDispensesPromises())
.then(() => {
if (this.fullMedicationDispenses) {
this.drawTimeline(this.fullMedicationDispenses);
}
})
.catch((error) => {
this._errors.push('Erreur technique');
console.error(error);
})
.finally(() => {
if (this._errors.length > 0 || this._dataErrors.length > 0) {
const warningIcon = this.getHtmlElement('.warning-icon');
warningIcon.style.opacity = '1';
let errorsTooltip = '';
this._errors.forEach((error) => {
errorsTooltip += `${error}\n`;
});
this._dataErrors.forEach((error) => {
errorsTooltip += `${error}\n`;
});
warningIcon.setAttribute('title', errorsTooltip);
}
const metaData = this.getHtmlElement('.meta-data');
metaData.style.opacity = '1';
console.timeEnd('FullMedicationDispenses fetch');
this.hydrateFullMedicationDispensesWithVidalClassifications();
this.hydrateFullMedicationDispensesWithPrescribableNames();
});
}
/**
* Retrieve ATC classifications xml data from API, parse it and put it into an instance of Classifications
*/
async fetchAtcClassifications(drug) {
var _a;
const drugId = drug.id;
let url;
if (drug.type === DrugType.PACK) {
url = `/rest/api/package/${drugId}?aggregate=ATC_CLASSIFICATION`;
}
else if (drug.type === DrugType.UCD) {
url = `/rest/api/ucd/${drugId}?aggregate=ATC_CLASSIFICATION`;
}
// @ts-ignore
return (_a = this.dataFetchingSupplier) === null || _a === void 0 ? void 0 : _a.call(this, url).then(async (response) => {
if (response.status === 200) {
return parseAtcClassification(await response.text());
}
else if (response.status === 204) {
this._errors.push(`Médicament ${drugId} de type ${drug.type} introuvable`);
}
else {
this._errors.push(`Erreur technique lors de la récupération de la présentation ${drugId}`);
}
return true;
}).catch((_error) => {
this._errors.push(`Erreur technique lors de la récupération de la présentation ${drugId}`);
}).finally(() => Promise.resolve());
}
/**
* Retrieve vidal classifications xml data from API, parse it and put it into an instance of Classifications
*/
async fetchVidalClassifications(drug) {
var _a;
const productId = drug.productId;
const url = `/rest/api/product/${productId}/vidal-classification`;
// @ts-ignore
return (_a = this.dataFetchingSupplier) === null || _a === void 0 ? void 0 : _a.call(this, url).then(async (response) => {
if (response.status === 200) {
return parseVidalClassification(await response.text());
}
else if (response.status === 204) {
this._errors.push(`Classe Vidal introuvable pour la spécialité ${productId}`);
}
else {
this._errors.push(`Erreur technique lors de la récupération de la classe Vidal pour la spécialité ${productId}`);
}
return true;
}).catch((_error) => {
this._errors.push(`Erreur technique lors de la récupération de la classe Vidal pour la spécialité ${productId}`);
}).finally(() => Promise.resolve());
}
/**
* For a given drug, get data from api
*/
async fetchDrugByCode(drugCode) {
var _a;
// @ts-ignore
return (_a = this.dataFetchingSupplier) === null || _a === void 0 ? void 0 : _a.call(this, `/rest/api/search?code=${drugCode}`).then(async (response) => {
if (response.status === 200) {
return parseSearchResult(await response.text());
}
else if (response.status === 204) {
this._errors.push(`Médicament de code ${drugCode} introuvable`);
}
else {
this._errors.push(`Erreur technique lors de la récupération du médicament de code ${drugCode}`);
}
return true;
}).catch((_error) => {
this._errors.push(`Erreur technique lors de la récupération du médicament de code ${drugCode}`);
}).finally(() => Promise.resolve());
}
async fetchUcdPackageMostRecentOffMarketDate(ucdId) {
var _a;
// @ts-ignore
return (_a = this.dataFetchingSupplier) === null || _a === void 0 ? void 0 : _a.call(this, `/rest/api/ucd/${ucdId}/packages`).then(async (response) => {
if (response.status === 200) {
return findMostRecentOffMarketDate(await response.text());
}
else if (response.status === 204) {
this._errors.push(`Présentation de l'UCD ${ucdId} introuvable`);
}
else {
this._errors.push(`Erreur technique lors de la récupération de l'UCD ${ucdId}`);
}
return;
}).catch((_error) => {
this._errors.push(`Erreur technique lors de la récupération de la présentation du l'UCD ${ucdId}`);
}).finally(() => Promise.resolve());
}
/**
*
* Get prescribable name of one VMP from API
*/
async fetchPrescribableNameForVmp(vmpId) {
var _a;
// @ts-ignore
return (_a = this.dataFetchingSupplier) === null || _a === void 0 ? void 0 : _a.call(this, `/rest/api/vmp/${vmpId}/prescribables`).then(async (response) => {
if (response.status === 200) {
return parsePrescribableName(await response.text());
}
else if (response.status === 204) {
this._errors.push(`Prescriptible introuvable pour le VMP ${vmpId}`);
}
else {
this._errors.push(`Erreur technique lors de la récupération du nom de prescriptible pour le VMP ${vmpId}`);
}
return true;
}).catch((_error) => {
this._errors.push(`Erreur technique lors de la récupération du nom de prescriptible pour le VMP ${vmpId}`);
}).finally(() => Promise.resolve());
}
drawTimeline(fullMedicationDispenses) {
var _a, _b;
console.debug('Medication dispenses enriched via Vidal API ↩', fullMedicationDispenses);
this.toggleTimeline();
const [rootClasses, leafClasses, prescriptionItems] = buildTimelineData(fullMedicationDispenses, this.classifiedBy, this.grouping);
this.prescriptionItems = prescriptionItems;
const container = this.getHtmlElement('.timeline-container');
container.innerHTML = '';
const startDate = this.computeStartDate();
const options = {
stack: false,
zoomable: false,
verticalScroll: true,
maxHeight: this.getHtmlElement('.timeline-container').clientHeight,
start: (_a = this.startRange) !== null && _a !== void 0 ? _a : startDate,
end: (_b = this.endRange) !== null && _b !== void 0 ? _b : Date.now(),
timeAxis: {
scale: this.zoomAndScale.scale.label,
step: this.zoomAndScale.scale.step,
},
orientation: 'top',
groupHeightMode: 'fixed',
};
const groups = new vis.DataSet();
groups.add(rootClasses);
groups.add(leafClasses);
console.debug('Preparing timeline data... ⏳', rootClasses, leafClasses, prescriptionItems);
if (this.medicationDispenses.length > 0) {
this.timeline = new vis.Timeline(container, prescriptionItems,
// @ts-ignore
groups, options);
}
this.timeline.on('changed', () => {
var _a, _b;
(_b = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.vis-label.autre')) === null || _b === void 0 ? void 0 : _b.setAttribute('title', 'Les médicaments appartenant à plusieurs classes ATC sont regroupés dans la catégorie AUTRE.');
const timeAxis = this.getHtmlElement('.vis-time-axis.vis-foreground');
if (!this.renderRoot.querySelector('.arrowWrapper')) {
timeAxis.prepend(this.createArrowForTimeNavigation(Direction.PREVIOUS));
timeAxis.append(this.createArrowForTimeNavigation(Direction.NEXT));
}
this.getHtmlElement('.timeline-container').style.opacity = '1';
});
this.renderRoot
.querySelectorAll('.vis-inner span')
.forEach((element) => element.setAttribute('title', this.grouping === 'VMP'
? 'Aucun VMP trouvé pour ce médicament'
: 'Aucun prescriptible trouvé pour ce médicament'));
this.timeline.on('click', (props) => {
props.event.preventDefault();
this.setRangeFromTimeline();
});
this.timeline.on('contextmenu', (props) => {
props.event.preventDefault();
this.getDrugsForDate(new Date(props.time));
});
}
computeStartDate() {
const date = new Date();
date.setMonth(date.getMonth() - this.getDurationInMonths());
return date;
}
setRangeFromTimeline() {
this.startRange = new Date(this.timeline.range.start);
this.endRange = new Date(this.timeline.range.end);
}
getDrugsForDate(date) {
const drugsIds = this.prescriptionItems
.filter((item) => item instanceof Point && isBefore(new Date(item.start), date))
.map((prescription) => prescription.drugId)
.filter((value, index, self) => {
return self.indexOf(value) === index;
});
const dateWithDrugs = {
date: format(date, 'yyyy-MM-dd'),
drugs: drugsIds,
};
if (this.drugsForDateEvent) {
this.drugsForDateEvent(dateWithDrugs);
}
}
onTimeLineGroupingClickHandler() {
return (event) => {
const element = event.target;
const id = element.getAttribute('id');
this.grouping = id;
};
}
createArrowForTimeNavigation(direction) {
const arrowWrapper = document.createElement('div');
arrowWrapper.classList.add('arrowWrapper', direction);
arrowWrapper.setAttribute('title', direction === Direction.PREVIOUS
? 'Remonter dans le temps'
: 'Avancer dans le temps');
const arrow = document.createElement('div');
arrowWrapper.addEventListener('click', () => {
var _a, _b;
const durationInMonths = this.getDurationInMonths();
this.currentDate = (_b = (_a = this.startRange) !== null && _a !== void 0 ? _a : this.currentDate) !== null && _b !== void 0 ? _b : new Date();
if (direction === Direction.PREVIOUS) {
const previousMonth = this.currentDate.getMonth() - durationInMonths;
this.currentDate.setMonth(previousMonth);
}
else if (direction === Direction.NEXT) {
const nextMonth = this.currentDate.getMonth() + durationInMonths;
this.currentDate.setMonth(nextMonth);
}
this.timeline.moveTo(this.currentDate, () => this.setRangeFromTimeline());
});
arrow.classList.add('arrow', direction);
arrowWrapper.appendChild(arrow);
return arrowWrapper;
}
getDurationInMonths() {
let durationInMonths;
if (this.zoomAndScale.zoom === 'month') {
durationInMonths = 1;
}
else if (this.zoomAndScale.zoom === 'semester') {
durationInMonths = 6;
}
else if (this.zoomAndScale.zoom === 'year') {
durationInMonths = 12;
}
return durationInMonths;
}
getFullMedicationDispensesPromises() {
const promises = [];
this.medicationDispenses
.flatMap((medicationDispense) => medicationDispense.medicationCode)
.forEach((code) => {
promises.push(this.hydrateFullMedicationDispense(code));
});
return promises;
}
/**
* For each drug, get drug, and ATC classifications data
* from API and put it into a FullMedicationDispense array
*
* For offMarket UCD drug type fetch its packages
* and hydrate drug offMarketDate with the most recent offMarketDate packages
*/
async hydrateFullMedicationDispense(medicationCode) {
const drug = await this.fetchDrugByCode(medicationCode.toString());
if (drug === null || drug === void 0 ? void 0 : drug.id) {
const atcClassifications = await this.fetchAtcClassifications(drug);
if (drug.isOffMarKetUcd()) {
drug.offMarketDate = await this.fetchUcdPackageMostRecentOffMarketDate(drug.id);
}
const dispensations = this.medicationDispenses
.filter((medicationDispense) => medicationDispense.medicationCode === drug.cip13.toString() ||
medicationDispense.medicationCode === drug.cip.toString() ||
medicationDispense.medicationCode === drug.ucd ||
medicationDispense.medicationCode === drug.ucd13.toString())
.flatMap((medicationDispense) => medicationDispense.dispensations);
if (atcClassifications) {
this.fullMedicationDispenses.push(new FullMedicationDispense(new Drug(drug.id, drug.cip13, drug.cip, drug.name, drug.ucd, drug.ucd13, drug.type, drug.vmpName, drug.marketStatus, drug.vmpId, drug.offMarketDate, drug.productId, undefined), atcClassifications, dispensations));
}
}
}
/**
* For each drug, get Vidal classifications data
* from API and put it into a FullMedicationDispense array
*/
hydrateFullMedicationDispensesWithVidalClassifications() {
this.fullMedicationDispenses.forEach((medicationDispense) => this.fetchVidalClassifications(medicationDispense.drug).then((vidalClassification) => (medicationDispense.vidalClassifications = vidalClassification)));
}
/**
* For each drug, get his prescribable name
* from API and put it into a FullMedicationDispense array
*/
hydrateFullMedicationDispensesWithPrescribableNames() {
this.fullMedicationDispenses.forEach((medicationDispense) => {
var _a;
if ((_a = medicationDispense.drug) === null || _a === void 0 ? void 0 : _a.vmpId) {
this.fetchPrescribableNameForVmp(medicationDispense.drug.vmpId).then((prescribableName) => (medicationDispense.drug.prescribableName = prescribableName));
}
});
}
reclassify(classification) {
this.classifiedBy = classification;
this.drawTimeline(this.fullMedicationDispenses);
}
toggleTimeline() {
if (this.grouping === 'prescribable') {
this.hideDiv('timeline-container');
this.showDiv('available-soon');
}
else {
this.showDiv('timeline-container');
this.hideDiv('available-soon');
}
}
hideDiv(className) {
var _a;
const element = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.' + className);
element.classList.add('hidden-div');
}
showDiv(className) {
var _a;
const element = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.' + className);
element.classList.remove('hidden-div');
}
};
VidalHistoryTtt.logoVidal = 'data:image/png;base64,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';
VidalHistoryTtt.maleIcon = 'data:image/svg+xml;base64,PHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgZGF0YS1wcmVmaXg9ImZhcyIgZGF0YS1pY29uPSJtYXJzIiBjbGFzcz0ic3ZnLWlubGluZS0tZmEgZmEtbWFycyBmYS13LTEyIiByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDM4NCA1MTIiPjxwYXRoIGZpbGw9ImN1cnJlbnRDb2xvciIgZD0iTTM3MiA2NGgtNzljLTEwLjcgMC0xNiAxMi45LTguNSAyMC41bDE2LjkgMTYuOS04MC43IDgwLjdjLTIyLjItMTQtNDguNS0yMi4xLTc2LjctMjIuMUM2NC41IDE2MCAwIDIyNC41IDAgMzA0czY0LjUgMTQ0IDE0NCAxNDQgMTQ0LTY0LjUgMTQ0LTE0NGMwLTI4LjItOC4xLTU0LjUtMjIuMS03Ni43bDgwLjctODAuNyAxNi45IDE2LjljNy42IDcuNiAyMC41IDIuMiAyMC41LTguNVY3NmMwLTYuNi01LjQtMTItMTItMTJ6TTE0NCAzODRjLTQ0LjEgMC04MC0zNS45LTgwLTgwczM1LjktODAgODAtODAgODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgweiI+PC9wYXRoPjwvc3ZnPg==';
VidalHistoryTtt.femaleIcon = 'data:image/svg+xml;base64,PHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgZGF0YS1wcmVmaXg9ImZhcyIgZGF0YS1pY29uPSJ2ZW51cyIgY2xhc3M9InN2Zy1pbmxpbmUtLWZhIGZhLXZlbnVzIGZhLXctOSIgcm9sZT0iaW1nIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyODggNTEyIj48cGF0aCBmaWxsPSJjdXJyZW50Q29sb3IiIGQ9Ik0yODggMTc2YzAtNzkuNS02NC41LTE0NC0xNDQtMTQ0UzAgOTYuNSAwIDE3NmMwIDY4LjUgNDcuOSAxMjUuOSAxMTIgMTQwLjRWMzY4SDc2Yy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDM2djM2YzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTM2aDM2YzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0zNnYtNTEuNmM2NC4xLTE0LjUgMTEyLTcxLjkgMTEyLTE0MC40em0tMjI0IDBjMC00NC4xIDM1LjktODAgODAtODBzODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwLTgwLTM1LjktODAtODB6Ij48L3BhdGg+PC9zdmc+';
VidalHistoryTtt.warningIcon = `data:image/png;base64,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`;
VidalHistoryTtt.styles = styles;
__decorate([
property({ type: Array })
], VidalHistoryTtt.prototype, "medicationDispenses", null);
__decorate([
property()
], VidalHistoryTtt.prototype, "grouping", null);
__decorate([
property({ attribute: false })
], VidalHistoryTtt.prototype, "patient", null);
__decorate([
property({ attribute: false })
], VidalHistoryTtt.prototype, "dataFetchingSupplier", void 0);
__decorate([
property({ attribute: false })
], VidalHistoryTtt.prototype, "dataDate", void 0);
__decorate([
property({ attribute: false })
], VidalHistoryTtt.prototype, "dataSource", void 0);
__decorate([
property()
], VidalHistoryTtt.prototype, "drugsForDateEvent", void 0);
VidalHistoryTtt = VidalHistoryTtt_1 = __decorate([
customElement('vidal-history-ttt')
], VidalHistoryTtt);
export { VidalHistoryTtt };
//# sourceMappingURL=vidal-history-ttt.js.map