102 lines
3.6 KiB
JavaScript
102 lines
3.6 KiB
JavaScript
// metaData.js
|
|
(function () {
|
|
const MAX_ATTEMPTS = 3;
|
|
const INTERVAL_MS = 1000;
|
|
|
|
let attempts = 0;
|
|
let done = false;
|
|
|
|
function sendMetaData() {
|
|
if (done) return;
|
|
|
|
attempts++;
|
|
|
|
if (window.gon) {
|
|
try {
|
|
done = true;
|
|
|
|
const metaData = {};
|
|
|
|
const clinicPhone = window.gon.application.current_clinic.phone1 || window.gon.application.current_clinic.phone2;
|
|
const clinicPhoneNormalized = `+7${clinicPhone.replace(/[^\d]/g, '').slice(1, 12)}`;
|
|
|
|
metaData.practitioner = {
|
|
familyName: window.gon.application.current_user.surname,
|
|
givenName: window.gon.application.current_user.name,
|
|
middleName: window.gon.application.current_user.second_name,
|
|
userIdLpu: window.gon.application.current_user.id,
|
|
telecom: [{
|
|
system: 'Email',
|
|
value: window.gon.application.current_clinic.email
|
|
}, {
|
|
system: 'Telephone',
|
|
value: clinicPhoneNormalized
|
|
}]
|
|
}
|
|
|
|
patientPhone = window.gon.specific.client.phone;
|
|
const patientPhoneNormalized = `+7${patientPhone.replace(/[^\d]/g, '').slice(1, 12)}`;
|
|
|
|
metaData.patient = {
|
|
idPatientMis: window.gon.specific.client.id,
|
|
familyName: window.gon.specific.client.surname,
|
|
givenName: window.gon.specific.client.name,
|
|
middleName: window.gon.specific.client.second_name,
|
|
birthDate: window.gon.specific.client.birthdate,
|
|
sex: window.gon.specific.client.sex_id === 1 ? 'male' : 'female',
|
|
telecom: [{
|
|
system: 'Telephone',
|
|
value: patientPhoneNormalized
|
|
}],
|
|
documentDto: [{
|
|
providerName: 'ПФР',
|
|
docN: window.gon.specific.client.snils,
|
|
docS: '',
|
|
documentName: 'СНИЛС',
|
|
idDocumentType: 223
|
|
}]
|
|
}
|
|
|
|
if (window.gon.specific.client.email) {
|
|
metaData.patient.telecom.push({
|
|
system: 'Email',
|
|
value: window.gon.specific.client.email
|
|
});
|
|
}
|
|
|
|
metaData.docs = window.gon.specific.docs.map(doc => ({
|
|
id: doc.id,
|
|
title: doc.title,
|
|
created_at: doc.created_at,
|
|
updated_at: doc.updated_at,
|
|
number: doc.number,
|
|
data: doc.data
|
|
}));
|
|
|
|
// Отправляем только один раз
|
|
window.postMessage(
|
|
{
|
|
source: 'medods-extension',
|
|
type: 'metaData',
|
|
payload: metaData
|
|
},
|
|
'*'
|
|
);
|
|
|
|
return;
|
|
} catch (error) {
|
|
console.error('Error in metaData:', error);
|
|
}
|
|
}
|
|
|
|
if (attempts >= MAX_ATTEMPTS) {
|
|
console.warn('Max attempts reached for metaData');
|
|
return;
|
|
}
|
|
|
|
setTimeout(sendMetaData, INTERVAL_MS);
|
|
}
|
|
|
|
// Запускаем после небольшой задержки
|
|
setTimeout(sendMetaData, 100);
|
|
})(); |