release
This commit is contained in:
+107
@@ -0,0 +1,107 @@
|
||||
// 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.patients = [{
|
||||
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.patients[0].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
|
||||
}));
|
||||
|
||||
metaData.userData = {
|
||||
id: window.gon.application.current_user.id,
|
||||
login: window.gon.application.current_user.username,
|
||||
};
|
||||
|
||||
// Отправляем только один раз
|
||||
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);
|
||||
})();
|
||||
Reference in New Issue
Block a user