(function () {
try {
// AQ-r2 (2026-06-09): respect the explicit-denial sentinel
// written by cookie-consent-harden.js writeATR() on any
// marketing-axis denial (payload.marketing === false; cycle-3 F1).
// Without this gate, the next page navigation re-creates
// gmx_first_touch from the current URL+referrer+utm_*+click_ids,
// silently undoing the reject-all deletion (sweep finding #1).
// The sentinel is cleared the moment the visitor grants
// marketing in the banner (analytics-only grant does NOT
// clear), restoring the writer path on the very next
// page load. Page-cache-safe: the sentinel is a
// browser-resident cookie checked in the inline script, so
// varnish/breeze-served HTML still hits this gate.
if (/(?:^|;\s*)gmx_consent_denied=1(?:;|$)/.test(document.cookie || '')) return;
var CLICK_IDS = ['gclid','fbclid','msclkid','ttclid','wbraid','gbraid','li_fat_id'];
var qs = new URLSearchParams(window.location.search);
var urlClickIdKey = null;
for (var i = 0; i < CLICK_IDS.length; i++) {
if (qs.get(CLICK_IDS[i])) { urlClickIdKey = CLICK_IDS[i]; break; }
}// Parse existing cookie.
var existing = null;
var match = document.cookie.match(/(?:^|;\s*)gmx_first_touch=([^;]+)/);
if (match) {
try { existing = JSON.parse(decodeURIComponent(match[1])); } catch (e) { existing = null; }
}// GWP-273 — referrer-enrichment branch.
// Keep existing unless either (a) URL carries a new click id
// the stored payload lacks (paid click is a higher-value
// signal and upgrades direct/organic), OR (b) the stored
// payload has empty referrer AND the current document.referrer
// is non-empty + external (Safari/ITP/policy-quirk catch:
// first-hit may have missed the referrer; later same-session
// page-loads can recover it).
var existingHasRef = !!(existing && existing.referrer && existing.referrer !== '');
var docRef = document.referrer || '';
var refHost = '';
if (docRef) {
try {
refHost = new URL(docRef).hostname.replace(/^www\./, '').toLowerCase();
} catch (e) { refHost = ''; }
}
var ownHost = (location.host || '').replace(/^www\./, '').toLowerCase();
var currentExternalRef = !!(refHost && refHost !== ownHost);
var canEnrichRef = !!existing && !existingHasRef && currentExternalRef;if (existing) {
if (!urlClickIdKey && !canEnrichRef) return;
if (urlClickIdKey && existing[urlClickIdKey] && !canEnrichRef) return;
}var utm_keys = [
'utm_source','utm_medium','utm_campaign','utm_content','utm_term',
'utm_adgroup','utm_matchtype','utm_network','utm_device','utm_placement'
];
// GWP-273 — merge-preserving base. When enriching an existing
// payload, retain its landing_url + ts + prior click ids /
// utms; only overlay referrer (and any click id appended below
// via the forEach). Branches with/without urlClickIdKey were
// collapsed — both produced the identical Object.assign — the
// click id is added uniformly later.
//
// GWP-273 design choice: "latest external referrer wins" —
// accepted edge case where a user opens a new external tab
// post-empty-first-touch and returns; low-volume, simple, no
// sentinel flag needed.
var data;
if (existing && canEnrichRef) {
data = Object.assign({}, existing, { referrer: docRef });
} else {
data = { landing_url: window.location.href, referrer: docRef, ts: Date.now() };
}
utm_keys.concat(CLICK_IDS).forEach(function (k) {
var v = qs.get(k);
if (v) data[k] = v;
});
var encoded = encodeURIComponent(JSON.stringify(data));
if (encoded.length > 3800) return;
var expires = new Date(Date.now() + 90 * 864e5).toUTCString(); // GWP-143 C1: match Google Ads 90-day attribution window
var secure = window.location.protocol === 'https:' ? '; Secure' : '';
document.cookie = 'gmx_first_touch=' + encoded + '; Path=/; Expires=' + expires + '; SameSite=Lax' + secure;
} catch (e) {}
})();
var breeze_prefetch = {"local_url":"https://gomixapp.co.il","ignore_remote_prefetch":"1","ignore_list":["/cart/","/checkout/","/my-account/","/(.)/u05d4u05d8u05d5u05e4u05e1-u05e0u05e9u05dcu05d7-u05d1u05d4u05e6u05dcu05d7u05d4/","wp-admin","wp-login.php"]};
//# sourceURL=breeze-prefetch-js-extra
מחפשים הודעה למטופלים על שינוי בשעות הקבלה? כאן תמצאו נוסח מוכן למרפאה או לקליניקה — מלאו את התאריך, השעות והסיבה, והנוסח יתעדכן אוטומטית. מעתיקים בלחיצה, מדפיסים לתלייה בדלפק הקבלה, או מורידים כקובץ PDF או Word.
מלאו את הפרטים — הנוסח יתעדכן אוטומטית:
הודעה למטופלים — עדכון שעות קבלה
מטופלים יקרים,
ביום [תאריך] תתקיים קבלת קהל במרפאה בין השעות [שעת התחלה] ל-[שעת סיום] בלבד, עקב [סיבה].
מה חשוב לדעת:
– מטופלים עם תור מחוץ לשעות אלו — ניצור עמכם קשר לתיאום מועד חלופי;
– המענה הטלפוני וזימון התורים יפעלו כרגיל;
– במקרים דחופים יש לפנות למוקד הרפואי בהתאם להנחיות הקופה או המרפאה.
אנו מתנצלים על אי-הנוחות ועומדים לרשותכם בכל שאלה.
לבירורים ולזימון תורים: [שם המרפאה], טל' [טלפון].
בברכת בריאות שלמה,
צוות המרפאה
איך מנסחים הודעה למטופלים על שינוי שעות קבלה
את ההודעה מפרסמים כמה ימים מראש לפחות — בדלפק הקבלה, בדלת הכניסה, במענה הקולי ובהודעת SMS או וואטסאפ למטופלים עם תור קרוב. מטופל שהגיע למרפאה סגורה הוא לא רק חוויית שירות גרועה — לעיתים זה מטופל שדחה בדיקה חשובה. ככל שקהל המרפאה מבוגר יותר, כך חשוב לחזק את הערוצים הפיזיים: שלט גדול וברור בכניסה עושה יותר מהודעה באפליקציה.
הקפידו לכלול ארבעה פרטים: התאריך, טווח השעות המעודכן, סיבת השינוי (בקצרה — "השתלמות צוות" מספיק) ולמי פונים בינתיים — טלפון המרפאה ומסלול למקרים דחופים לפי הנחיות הקופה. חשוב לציין מה קורה עם תורים שכבר נקבעו: משפט אחד — "ניצור עמכם קשר לתיאום מועד חלופי" — חוסך לצוות הקבלה עשרות שיחות מודאגות.
נקודה רגישה אחת: פרטיות המטופלים. הודעה על לוח ציבורי לעולם לא תכלול שמות מטופלים, פרטי טיפולים או כל מידע רפואי — רק את עובדת השינוי ופרטי ההתארגנות. ובצד המעשי: עדכנו באותה הזדמנות גם את שעות הפעילות בפרופיל העסק בגוגל ובדף המרפאה, כדי שמטופל שמחפש אתכם ברשת לא יקבל מידע סותר.
שאלות נפוצות
כמה זמן מראש מודיעים למטופלים על שינוי בשעות הקבלה?
בשינוי מתוכנן — לפחות כמה ימים מראש, ובמקביל בכמה ערוצים: שלט במרפאה, מענה קולי, SMS או וואטסאפ למטופלים עם תור קרוב. בשינוי פתאומי — מפרסמים מיד ומתעדפים יצירת קשר אישית עם בעלי התורים של אותו יום.
מה חייב להופיע בהודעה למטופלים?
תאריך השינוי, טווח השעות המעודכן, סיבת השינוי בקצרה, מה קורה עם תורים שנקבעו, ולמי פונים — טלפון המרפאה ומסלול למקרים דחופים. בלי שמות מטופלים או מידע רפואי כלשהו.
איך מודיעים למטופלים שכבר קבעו תור?
באופן אישי — שיחה, SMS או וואטסאפ — ולא מסתפקים בשלט. מציעים מועד חלופי כבר בהודעה הראשונה אם אפשר. ההודעה הכללית בעמוד זה משלימה את הפנייה האישית, לא מחליפה אותה.
מה כותבים למקרים דחופים?
מפנים למסלול הקיים: מוקד הקופה, מוקד רפואי אזורי או מד"א — לפי אופי המרפאה. משפט קבוע כמו "במקרים דחופים יש לפנות למוקד הרפואי בהתאם להנחיות הקופה" מכסה את רוב המצבים בלי להיכנס להנחיות רפואיות.
איפה עוד כדאי לעדכן את שעות הקבלה?
בפרופיל העסק בגוגל (זה מה שמטופלים רואים כשהם מחפשים אתכם), בדף או באפליקציה של המרפאה, במענה הקולי ובחתימת המייל. מידע סותר בין הערוצים מייצר טלפונים מיותרים — בדיוק מה שההודעה באה לחסוך.
נקודות מפתח
מודיעים כמה ימים מראש — שלט בקבלה, מענה קולי ו-SMS למטופלים עם תור
בהודעה: תאריך, שעות מעודכנות, סיבה קצרה ולמי פונים בינתיים
מטופלים עם תור קיים מקבלים עדכון אישי — לא רק שלט
ללא שמות מטופלים או מידע רפואי בהודעה ציבורית
הנוסח כאן חינמי — מילוי פרטים, העתקה, הדפסה או הורדה כ-PDF/Word
במרפאה עמוסה, דף מודפס בדלפק הוא הדבר הראשון שהולך לאיבוד: מסך שילוט דיגיטלי בחדר ההמתנה מציג את עדכוני שעות הקבלה, הנחיות למטופלים ומידע בריאותי — ומתעדכן מרחוק בשניות, גם כשאתם באמצע יום קבלה.
document.addEventListener('click', function(e) {
var el = e.target.closest('.gmx-lite-yt');
if (!el) return;
var vid = el.getAttribute('data-vid');
if (!vid) return;
var iframe = document.createElement('iframe');
iframe.src = 'https://www.youtube.com/embed/' + vid + '?autoplay=1';
iframe.style.cssText = 'position:absolute;top:0;left:0;width:100%;height:100%;border:0;';
iframe.allow = 'autoplay;encrypted-media';
iframe.allowFullscreen = true;
el.style.position = 'relative';
el.innerHTML = '';
el.appendChild(iframe);
});
(function () {
var c = document.body.className;
c = c.replace(/woocommerce-no-js/, 'woocommerce-js');
document.body.className = c;
})();
var gmxCf7LegacyUxI18n = {"errName":"Please enter a full name","errPhone":"Please enter a valid phone number","errEmail":"Please enter a valid email address","errRequired":"Required field"};
//# sourceURL=gmx-cf7-legacy-ux-js-extra
(function(){
function cleanUrl(url) {
// Strip query params embedded mid-path: /ID?params/file -> /ID/file
return url.replace(/\?[^\/]+\//g, '/');
}
function addWebPFallback(pic) {
if (pic.getAttribute('data-webp-fb')) return;
pic.setAttribute('data-webp-fb', '1');
var img = pic.querySelector('img');
if (!img) return;
img.onerror = function() {
this.onerror = null;
this.src = cleanUrl(this.src).replace('vi_webp','vi').replace('.webp','.jpg');
var sources = this.parentElement.querySelectorAll('source');
for (var i = 0; i < sources.length; i++) {
sources[i].srcset = cleanUrl(sources[i].srcset).replace('vi_webp','vi').replace('.webp','.jpg');
}
};
}
var observer = new MutationObserver(function() {
var pics = document.querySelectorAll('.video-seo-youtube-picture');
for (var i = 0; i < pics.length; i++) addWebPFallback(pics[i]);
});
observer.observe(document.documentElement, { childList: true, subtree: true });
})();
(function(){
var siteKey = "6Ldnu_gsAAAAAGpkh7vCd_h3L9BA193yFU59I4Do";
var action = "submit_lead_form";
var loaderUrl = "https:\/\/www.google.com\/recaptcha\/enterprise.js?render=6Ldnu_gsAAAAAGpkh7vCd_h3L9BA193yFU59I4Do";
// GWP-506 (perf): the reCAPTCHA Enterprise runtime costs ~900ms of main-thread
// work (PSI contactus TBT 660ms, perf 69). It was loaded eagerly on every page
// carrying a CF7 form. It now loads on the FIRST real page interaction
// (scroll/pointer/key/touch) — warming the runtime well before the user can
// reach submit — and never loads on a no-interaction (lab) page view, so the
// perf win holds. The token is still stamped on form focusin and refreshed at
// submit. IMPORTANT: the server gate is fail-CLOSED by default (GWP-412
// require_token) — a missing token at submit is treated as spam — so the
// runtime MUST be warm before submit; that is exactly why the warm trigger is
// first-page-interaction, NOT focusin-only (focusin-only left a race where a
// fast focus→submit could POST before the ~900ms download finished and drop a
// legit lead). The eager <script src> is gone.
var greReady = false, greWaiters = [], greLoadStarted = false;
function pollGre(attempts) {
if (typeof grecaptcha !== 'undefined' && grecaptcha.enterprise) {
greReady = true;
var queued = greWaiters;
greWaiters = [];
queued.forEach(function (fn) { try { fn(); } catch (e) {} });
return;
}
if (attempts > 200) {
// no-silent-failures: enterprise.js never became ready (network-blocked,
// consent/privacy blocker, or a Google outage). Surface it — a missing
// token fails CLOSED server-side (GWP-412) and drops the lead.
if (window.console && console.warn) {
console.warn('[GMX recaptcha] enterprise.js not ready after ~10s; token will be missing (submit fails closed).');
}
return; // give up after ~10s (200 * 50ms)
}
setTimeout(function () { pollGre(attempts + 1); }, 50);
}
function loadGre() {
if (greLoadStarted) return;
greLoadStarted = true;
var s = document.createElement('script');
s.src = loaderUrl;
s.async = true;
document.head.appendChild(s);
pollGre(0); // begin polling only once the runtime is actually loading
}
function whenGreReady(cb) {
if (greReady) return cb();
greWaiters.push(cb);
}
function stampToken(form) {
if (!form.querySelector('.wpcf7-form-control-wrap input[type="submit"], .wpcf7-submit')) return;
loadGre(); // lazy: kick off enterprise.js on demand (idempotent)
whenGreReady(function () {
grecaptcha.enterprise.ready(function () {
grecaptcha.enterprise.execute(siteKey, { action: action }).then(function (token) {
var hidden = form.querySelector('input[name="gmx_recaptcha_token"]');
if (!hidden) {
hidden = document.createElement('input');
hidden.type = 'hidden';
hidden.name = 'gmx_recaptcha_token';
form.appendChild(hidden);
}
hidden.value = token;
}).catch(function () {
// no-silent-failures: token generation failed; the server gate is
// fail-CLOSED (GWP-412), so this submit will be rejected as spam.
if (window.console && console.warn) {
console.warn('[GMX recaptcha] token execute failed; submit will fail closed.');
}
});
});
});
}
document.addEventListener('wpcf7submit', function (e) { stampToken(e.target); });
// Also stamp on first focus into any CF7 form (so token ready before submit).
// `whenGreReady()` queues the stamp until grecaptcha loads, so the once-
// listener stays safe even if grecaptcha isn't ready at focus-in time.
document.querySelectorAll('form.wpcf7-form').forEach(function (form) {
form.addEventListener('focusin', function once() {
form.removeEventListener('focusin', once);
stampToken(form);
});
});
// GWP-506: warm enterprise.js on the FIRST real page interaction so the ~900ms
// runtime is ready before the user reaches submit (closes the focusin-only race
// against the fail-CLOSED server gate, and covers AJAX/popup-injected forms that
// missed the focusin binding above). Never fires on a no-interaction (lab) view,
// so the perf win holds. Idempotent via loadGre()'s greLoadStarted guard.
var warmOpts = { passive: true, capture: true };
var warmEvents = ['pointerdown', 'keydown', 'touchstart', 'scroll'];
function warmGre() {
loadGre();
warmEvents.forEach(function (e) { window.removeEventListener(e, warmGre, warmOpts); });
}
warmEvents.forEach(function (e) { window.addEventListener(e, warmGre, warmOpts); });
})();
(function(){
var loaded = false;
function loadUserWay() {
if (loaded) return;
loaded = true;
var el = document.createElement('script');
el.setAttribute('data-account', "UX40fo0Ctw");
el.setAttribute('data-language', "he");
el.setAttribute('src', 'https://cdn.userway.org/widget.js');
document.body.appendChild(el);
events.forEach(function(e){ window.removeEventListener(e, loadUserWay, {passive: true}); });
}
var events = ['scroll', 'mousemove', 'touchstart', 'click', 'keydown'];
events.forEach(function(e){ window.addEventListener(e, loadUserWay, {passive: true}); });
})();