// 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.info('Error in metaData:', error); } } if (attempts >= MAX_ATTEMPTS) { console.warn('Max attempts reached for metaData'); return; } setTimeout(sendMetaData, INTERVAL_MS); } // Запускаем после небольшой задержки setTimeout(sendMetaData, 100); })();