PageSourceSearch

https://globalkidneyacademy.org/learningcenter/

html globalkidneyacademy.org collected 2026-10-08 07:26:33 UTC 33,921 bytes, 835 lines download raw bytes

1
2
3<!DOCTYPE html>
4
5<html lang="en"><head>
6<meta charset="utf-8" content="width=device-width, initial-scale=1.0" name="viewport"/>
7<meta content="IE=edge" http-equiv="X-UA-Compatible"/>
8<meta content="width=device-width, initial-scale=1" name="viewport"/>
9<meta content="Global Kidney Academy" name="description"/>
10<meta content="Global Kidney Academy" property="og:title"/>
11<title>Learning Center</title>
12<link href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css" rel="stylesheet"/>
13<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
14<link href="https://cdn.eyehealthacademy.org/uploads/commercial-pages/takeaction/bootstrap.css" rel="stylesheet" type="text/css"/>
15<link href="https://cdn.eyehealthacademy.org/uploads/commercial-pages/takeaction/jquery.fancybox.min.css" rel="stylesheet" type="text/css"/>
16<link href="https://cdn.medtelligence.net/assets/favicons/GKA/favicon.ico" rel="shortcut icon" type="image/x-icon"/>
17<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
vendor: 1 bytes, line 17
17
18<script defer="defer" src="https://cdn.reachmd.com/uploads/commercial-pages/global-kidney-academy/scripts/runtime.05-01-23.bundle.js"></script>
vendor: 1 bytes, line 18
18
19<script defer="defer" src="https://cdn.reachmd.com/uploads/commercial-pages/global-kidney-academy/scripts/main.39b1be5732a8f8289715.bundle.08-02-23.js"></script>
19
20<link href="https://cdn.reachmd.com/uploads/commercial-pages/global-kidney-academy/styles/main.9-1-26.css" rel="stylesheet"/>
21</head>
22<body id="bodyId">
23<main class="container-main main-landing">
24<div class="header sticky">
25<div class="content-container">
26<div class="logo logo--1">
27<a href="https://globalkidneyacademy.org/" target="_blank">
28<img alt="Global Kidney Academy" class="logo-img" src="https://cdn.reachmd.com/uploads/commercial-pages/global-kidney-academy/images/gka_logo.png"/>
29</a>
30</div>
31<p class="sub-header-text">GLOBAL KIDNEY ACADEMY</p>
32</div>
33</div>
34<div class="header-spacer"><div class="content-container"><div class="logo logo--1"><a href="https://globalkidneyacademy.org/" target="_blank"><img alt="Global Kidney Academy" class="logo-img" src="https://cdn.reachmd.com/uploads/commercial-pages/global-kidney-academy/images/gka_logo.png"/></a></div><p class="sub-header-text">GLOBAL KIDNEY ACADEMY</p></div></div>
35<div class="main-logo">
36<div class="content-container force-full-width">
37<div class="main-text-container main-text-container-1 col-lg-6 col-xs-7">
38<p class="main-text main-text-0">
39                    Global Kidney Academy
40                </p>
41<p class="main-text main-text-1">
42                    Welcome to a global nephrology curriculum focused on the current treatment challenges and opportunities to address the unmet medical needs of the patient with chronic kidney disease. The Academy aims to improve learner confidence and patient outcomes in the management of chronic kidney disease and progression to end-stage renal disease (ESRD) through a holistic approach based on current guidelines, evidence-based medicine and real-world data.
43                </p>
44</div>
45</div>
46</div>
47<div class="section hero">
48<div class="content-container force-full-width activities">
49<div class="hero-section force-full-width">
50<div class="hero-section-thumbnail">
51<div class="overlay"></div>
52</div>
53<div class="hero-section-leadership force-full-width">
54<div class="hero-section-leadership-text"><a href="https://globalkidneyacademy.org/learningcenter/resources/">Click Here</a> to View Chronic Kidney Disease Resources</div>
55</div>
56<div style="background:#fff;margin-top:12px;padding-top:24px">
57<script data-use-service-core="" defer="" src="https://static.elfsight.com/platform/platform.js"></script>
57
58<div class="elfsight-app-87af1db9-c171-470b-b842-a0e991c01c18"></div>
59</div>
60</div>
61<div class="education-section force-full-width">
62<div class="ed-link ed-link-header">AN EDUCATIONAL PATHWAY DESIGNED FOR YOUR THERAPEUTIC AREA</div>
63<div class="ed-link ed-link-subheader">SELECT YOUR THERAPEUTIC AREA</div>
64<a class="ed-link hidden" href="https://globalkidneyacademy.org/disease-state/anca-associated-vasculitis-aav/" target="_blank">ANCA-Associated Vasculitis (AAV)</a>
65<a class="ed-link" href="https://globalkidneyacademy.org/disease-state/igan-fsgs/" target="_blank">IgA Nephropathy (IgAN)</a>
66<a class="ed-link" href="https://globalkidneyacademy.org/disease-state/ckd-mbd/" target="_blank">CKD-MBD</a>
67<a class="ed-link" href="https://globalkidneyacademy.org/disease-state/pruritus-ckd-ap/" target="_blank">CKD-Associated Pruritus <span class="ipad-break"></span>(CKD-aP)</a>
68<a class="ed-link" href="https://globalkidneyacademy.org/disease-state/hyperkalemia-ckd/" target="_blank">Hyperkalemia in CKD (HK-CKD)</a>
69</div>
70</div>
71</div>
72<div class="section featured">
73<div class="content-container section-featured force-full-width">
74<div class="section-featured-align col-xs-12">
75<p class="sub-text-1">FEATURED CME PROGRAMS</p>
76<!-- Feature 8-31-26 -->
77<div class="col-xs-12 col-md-6 feature">
78<a href="/segment/26634" target="_self">
79<div class="feature-id26634-video feature-video"></div>
80<div class="feature-box">
81<p class="feature-box-title">Decoding IgAN: From Suspicion to Solution</p>
82</div>
83</a>
84</div>
85<!-- Feature 8-18-26 -->
86<div class="col-xs-12 col-md-6 feature">
87<a href="/segment/37616" target="_self">
88<div class="feature-id37616-video feature-video"></div>
89<div class="feature-box">
90<p class="feature-box-title">Beyond the Lab Values: Shared Decisions in Hyperkalemia Management with Potassium Binders</p>
91</div>
92</a>
93</div>
94<!-- Feature 8-17-26 -->
95<div class="col-xs-12 col-md-6 feature">
96<a href="/segment/37611" target="_self">
97<div class="feature-id37611-video feature-video"></div>
98<div class="feature-box">
99<p class="feature-box-title">Itching for Answers: Holistic CKD-aP Care</p>
100</div>
101</a>
102</div>
103<!-- Feature 5-14-26 -->
104<div class="col-xs-12 col-md-6 feature">
105<a href="/segment/54631" target="_self">
106<div class="feature-id54631-video feature-video"></div>
107<div class="feature-box">
108<p class="feature-box-title">Translating the Latest KDIGO Guidelines into Practice: IV Iron Therapy in Patients with Non-Dialysis-Dependent CKD</p>
109</div>
110</a>
111</div>
112<!-- Feature 4-22-26 -->
113<div class="col-xs-12 col-md-6 feature">
114<a href="/segment/26630" target="_self">
115<div class="feature-id26630-video feature-video"></div>
116<div class="feature-box">
117<p class="feature-box-title">Navigating Upated KDIGO Clinical Practice Guideline Recommndations To Maximize Proteinuria Reduction in Patients with IgAN</p>
118</div>
119</a>
120</div>
121<!-- Feature 4-22-26 -->
122<div class="col-xs-12 col-md-6 feature">
123<a href="/segment/54630" target="_self">
124<div class="feature-id54630-video feature-video"></div>
125<div class="feature-box">
126<p class="feature-box-title">Optimizing Iron Deficiency Management in CKD: IV Iron Replacement Therapy Amid the Latest KDIGO Guidelines</p>
127</div>
128</a>
129</div>
130<!-- Feature 3-30-26 -->
131<div class="col-xs-12 col-md-6 feature">
132<a href="/segment/37607" target="_self">
133<div class="feature-id37607-video feature-video"></div>
134<div class="feature-box">
135<p class="feature-box-title">
135Stuck on Antihistamines for Managing Patients With CKD-aP? Time to Reconsider!</p>
136</div>
137</a>
138</div>
139<!-- Feature 3-3-26 -->
140<div class="col-xs-12 col-md-6 feature">
141<a href="/segment/26633" target="_self">
142<div class="feature-id26633-video feature-video"></div>
143<div class="feature-box">
144<p class="feature-box-title">Inside the IgAN Clinic: Shared Decision-Making Into Practice</p>
145</div>
146</a>
147</div>
148<!-- Feature 2-23-26 -->
149<div class="col-xs-12 col-md-6 feature">
150<a href="/segment/37617" target="_self">
151<div class="feature-id37617-video feature-video"></div>
152<div class="feature-box">
153<p class="feature-box-title">Case-Based Approach: Managing Hyperkalemia in Patients With CKD and Heart Failure</p>
154</div>
155</a>
156</div>
157<!-- Feature 12-30-25 -->
158<div class="col-xs-12 col-md-6 feature">
159<a href="/segment/37606" target="_self">
160<div class="feature-id37606-video feature-video"></div>
161<div class="feature-box">
162<p class="feature-box-title">Targeting CKD-aP at the Source: Key Mechanisms and Treatments</p>
163</div>
164</a>
165</div>
166<!-- Feature 10-22-25 -->
167<div class="col-xs-12 col-md-6 feature">
168<a href="/segment/37619" target="_self">
169<div class="feature-id37619-video feature-video"></div>
170<div class="feature-box">
171<p class="feature-box-title">Individualized Management of Hyperkalemia: The Role of Potassium Binders in Patients With Cardiorenal Disease</p>
172</div>
173</a>
174</div>
175<!-- Feature 10-22-25 -->
176<div class="col-xs-12 col-md-6 feature">
177<a href="/segment/26640" target="_self">
178<div class="feature-id26640-video feature-video"></div>
179<div class="feature-box">
180<p class="feature-box-title">Decoding Itch in CKD: From CKD-aP Suspicion to Solution</p>
181</div>
182</a>
183</div>
184<!-- Feature 10-03-25 -->
185<div class="col-xs-12 col-md-6 feature">
186<a href="/segment/26635" target="_self">
187<div class="feature-id26635-video feature-video"></div>
188<div class="feature-box">
189<p class="feature-box-title">Real-World IgAN: A Case-Based Approach to Maximizing Kidney Preservation</p>
190</div>
191</a>
192</div>
193<!-- Feature 9-26-25 -->
194<div class="col-xs-12 col-md-6 feature">
195<a href="/segment/30044" target="_self">
196<div class="feature-id30044-video feature-video"></div>
197<div class="feature-box">
198<p class="feature-box-title">Optimizing IgAN Care: Sparsentan’s Role Amid the Latest KDIGO Guideline Updates</p>
199</div>
200</a>
201</div>
202<!-- Feature 9-23-25 -->
203<div class="col-xs-12 col-md-6 feature">
204<a href="/segment/26750" target="_self">
205<div class="feature-id26750-video feature-video"></div>
206<div class="feature-box">
207<p class="feature-box-title">Optimizing RAASi/MRA Therapy in Patients with Heart Failure, CKD, and Hyperkalemia: A Microlearning Curriculum Approach</p>
208</div>
209</a>
210</div>
211<!-- Feature 8-28-25 -->
212<div class="col-xs-12 col-md-6 feature">
213<a href="/segment/26631" target="_self">
214<div class="feature-id26631-video feature-video"></div>
215<div class="feature-box">
216<p class="feature-box-title">Optimizing IgAN Care: Achieving Lower Proteinuria Targets with Combination Therapy</p>
217</div>
218</a>
219</div>
220<!-- Feature 8-1-25 -->
221<div class="col-xs-12 col-md-6 feature">
222<a href="/segment/26641" target="_self">
223<div class="feature-id26641-video feature-video"></div>
224<div class="feature-box">
225<p class="feature-box-title">Difelikefalin: Managing CKD-aP for Improved Quality of Life</p>
226</div>
227</a>
228</div>
229<!-- Prepared for next feature -->
230<!-- Feature DD-MM-YY -->
231<!--<div class="col-xs-12 col-md-6 feature">-->
232<!--<a href="https://reachmd.com/u5719"-->
233<!--target="_self">-->
234<!--<div class="feature-two-video feature-video"></div>-->
235<!--<div class="feature-box">-->
236<!--<p class="feature-box-title">Management of ADPKD</p>-->
237<!--</div>-->
238<!--</a>-->
239<!--</div>-->
240</div>
241</div>
242</div>
243<div class="section-pages force-full-width">
244<div class="content-container force-full-width">
245<div class="img-container img-container-resources col-xs-12 col-md-5"></div>
246<div class="sub-sections col-xs-12 col-md-7">
247<div class="sub-section-pages">
248<p class="sub-text-resources-1">GLOBAL KIDNEY ACADEMY RESOURCE CENTER</p>
249<div class="sub-text-resources-3">
250<ul>
251<li>Guidelines</li>
252<li>Clinical Data Articles</li>
253<li>Patient Assessment Tools</li>
254<li>Videos</li>
255<li>Case Studies</li>
256<li>Downloadable Slides</li>
257</ul>
258</div>
259<div class="cta-action" onclick="window.open('https://globalkidneyacademy.org/learningcenter/resources/', '_self')">
260                        VIEW RESOURCES
261                    </div>
262</div>
263</div>
264</div>
265</div>
266<div class="section-pages force-full-width">
267<div class="content-container force-full-width">
268<div class="img-container img-container-steering col-xs-12 col-md-5"></div>
269<div class="sub-sections col-xs-12 col-md-7">
270<div class="sub-section-pages">
271<p class="sub-text-steering-1">MEET OUR GLOBAL KIDNEY ACADEMY STEERING COMMITTEES</p>
272<p class="sub-text-steering-2">
273                        Leading experts from around the world have joined together to combine their findings from
274                        research and clinical experience to improve outcomes in kidney disease.
275                    </p>
276<div class="cta-action steering" onclick="window.open('https://globalkidneyacademy.org/learningcenter/steeringcommittee/', '_self')">
277                        MEET OUR COMMITTEES
278                    </div>
279</div>
280</div>
281</div>
282</div>
283<div class="section-pages force-full-width">
284<div class="content-container force-full-width">
285<div class="img-container img-container-about col-xs-12 col-md-5"></div>
286<div class="sub-sections col-xs-12 col-md-7">
287<div class="sub-section-pages">
288<p class="sub-text-about-1">ABOUT THE GLOBAL KIDNEY ACADEMY</p>
289<p class="sub-text-about-2">
289This global curriculum was developed by world-renowned leaders in the management of kidney disease and is focused on improving guideline-directed care through the dissemination of evidence-based medicine and real-world data. With the activities and resources provided here in the Academy, healthcare professionals will be prepared to meet the challenges of treating patients with kidney diseases, far beyond CKD and dialysis.
290                        <br/><br/>
291                        This educational series is developed by Medtelligence and supported by an unrestricted educational grant from CSL Vifor.
292                    </p>
293</div>
294</div>
295</div>
296</div>
297<footer class="footer">
298<div class="footer__main">
299<div class="container">
300<nav class="footer__menu">
301<ul class="footer__menu__list reset-ul">
302<li class="footer__menu__list__item"><a alt="TERMS" class="text--primary footer__menu__link" data-nopjax="" href="https://globalkidneyacademy.org/pages/terms/">TERMS</a></li>
303<li class="footer__menu__list__item"><a alt="PRIVACY" class="text--primary footer__menu__link" data-nopjax="" href="https://globalkidneyacademy.org/pages/privacy/">PRIVACY</a></li>
304<li class="footer__menu__list__item"><a alt="CONTACT US" class="text--primary footer__menu__link" data-nopjax="" href="https://globalkidneyacademy.org/pages/contact-global-kidney-academy/">CONTACT US</a>
305<li class="footer__menu__list__item"><a alt="ABOUT US" class="text--primary footer__menu__link" data-nopjax="" href="https://globalkidneyacademy.org/pages/about-global-kidney-academy/">ABOUT US</a></li>
306</li>
307</ul>
308</nav>
309</div>
310</div>
311<div class="container">
312<hr class="footer__break"/>
313</div>
314<div class="footer__content">
315<div class="container">
316<div class="footer__section footer__section--contact">
317<div class="footer__get-help__phone"></div>
318<div class="footer__get-help"><span class="footer__get-help__text">GET
319                HELP</span><span><a class="footer__get-help__number" href="tel:(866) 423-7849">(866) 423-7849</a></span></div>
320</div>
321<div class="footer__section footer__section--socials white-hover-icons">
322<a class="footer__section__social__twitter leave-page" href="https://twitter.com/GKA_CME/" target="_blank"></a>
323</div>
324<hr class="footer__break hidden"/>
325<div class="footer__section footer__section--address"><a class="footer__section__link" href="https://globalkidneyacademy.org/" title="Global Kidney Academy"><img src="https://cdn.reachmd.com/uploads/global_kidney_academy/gka_white.png" title="Global Kidney Academy"/>
326<p class="footer__location">
327                        1301 Virginia Drive, Suite 300
328                        <br/>Fort Washington PA, 19034
329                    </p>
330</a></div>
331<p class="footer__rights">
332                    ©<span class="current-year"></span> All rights reserved.
333                </p>
334</div>
335</div>
336</footer>
337</main>
338<script>
339  document.querySelector('.current-year').textContent = new Date().getFullYear();
340</script>
340
341
342<script>
343    
344    if (!window.location.origin) {
345      window.location.origin = window.location.protocol + '//' + window.location.hostname + (window.location.port ? ':' + window.location.port: '');
346    }
347    window.currentSite = {
348        brandEmail: '[email protected]',
349        externalSegmentTrackingActive: false
350    };
351    window.isAndroidWebview = false;
352    window.isIosWebview = false;
353    window.reachMD = {
354        
355        siteName: 'ReachMD',
356        brandName: 'Global Kidney Academy',
357        webNotificationsPromptEnabled: true,
358        inAppNotificationsEnabled: true,
359        appVersion: 'v5.94.3',
360        
361        
362        notifications: [],
363        urls: {
364            media: 'https://cdn.globalkidneyacademy.org/',
365            static: 'https://cdn.globalkidneyacademy.org/assets/',
366            login: '/accounts/login/',
367            register: '/registration/register/',
368            logger: {
369                batch: '/b/',
370                analytics_api_host: 'https://data.reachmd.com/',
371                analytics_api_enabled: true,
372            }
373        },
374        
375        isMobile: false,
376        
377        gamId: '169748214',
378        googleAdsConversionId: 'AW-666525006',
379        googleAdsConversionLabel: 'R488CNfg04EcEM666b0C',
380        utmCampaign: '',
381        serverTime: '2026-10-08T03:26:33.908856-0400',
382        buildId: '212d097c3e0f6c7d0b19d648383ef940',
383        feSessionId: '07a6b6c6-7e82-4878-a568-c260555b2e3c',
384        stream: {
385            src: 'https://live.reachmd.com/RMD',
386            streamId: 'None',
387            title: 'ReachMD Radio',
388            poster: 'https://cdn.globalkidneyacademy.org/assets/img/common/poster_with_bg.jpg'
389        },
390        user: {
391          'rmdvid': "91f1ad47-0d93-4447-afd1-7f2e66c881ab",
392          
393          
394          socialLogins: {
395            fb: "/profiles/login/facebook/",
396            ln: "/profiles/login/linkedin-oauth2/",
397            apple: "/profiles/login/apple-id/",
398            google: "/profiles/login/google-oauth2/"
399          },
400          
401          'isLoggedIn': false,
402          
403          
404          'isAppUser': false,
405          
406          
407          'anonymousLiveEventIds': [],
408        },
409        siteDateFormat: 'MM/dd/yyyy',
410        siteId: 13,
411        isTemplateV2: 'False',
412        isTemplateV4: 'False',
413        hasPrintSubscription: false,
414        siteCode: 'gka',
415        encryptedSessionId: '7043fd0b7c2e368417966e907e4b84b8706deecfbb8283d5363d9462f303c65668edc08833b7cb6291f9b01ef24007f5',
416        
417        injected: {},
418        visitedDi: {},
419        newsletter: undefined,
420        
421        abt: [],
422        stripePublicKey: 'pk_live_51OrNx6GcPT0G3zEdTGMnKj5SzK2QZW9l7go2bIyvYNDK5JCGKoBY3IfdusdMaScgRuJi5AXbj5BG1LdbFlno4aqB00DwLOfey3',
423        stripeSubscriptionPublicKey: 'pk_live_51OtZhXIhq0322TCLqG3GadGbwi0CFC8rPCHThoqHpNAUEtwrd4dqetN3hcbBfdmU8qZdFsHFGNRgIdc02KnmUZd400kFdpjodk',
424        tagData: undefined,
425        
426        claraWidget: {"clara_config": {"userToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0ZW5hbnRfaWQiOiJkZmYwN2JkZi00MzZjLTQyZTQtYTcxOC02OGM5MjkxMDJiM2YiLCJjbGllbnRfaWQiOiJmMTZlZTUxMS1lYmU1LTRlN2MtYTJmYi0zOTliOTgyMDZhMzMiLCJ1c2VyX3JlZiI6bnVsbCwidmlzaXRvcl9pZCI6IjkxZjFhZDQ3LTBkOTMtNDQ0Ny1hZmQxLTdmMmU2NmM4ODFhYiIsImF1ZCI6ImNsYXJhLXdpZGdldCIsImlhdCI6MTc5MTQ0NDM5MywiZXhwIjoxNzkxNTMwNzkzfQ.aBInrOEkEcEU0biy8RAfb1aTzd3Ekho2fwC_t190n6Q", "clientId": "f16ee511-ebe5-4e7c-a2fb-399b98206a33", "apiBase": "https://chatbot.reachmd.com"}, "clara_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0ZW5hbnRfaWQiOiJkZmYwN2JkZi00MzZjLTQyZTQtYTcxOC02OGM5MjkxMDJiM2YiLCJjbGllbnRfaWQiOiJmMTZlZTUxMS1lYmU1LTRlN2MtYTJmYi0zOTliOTgyMDZhMzMiLCJ1c2VyX3JlZiI6bnVsbCwidmlzaXRvcl9pZCI6IjkxZjFhZDQ3LTBkOTMtNDQ0Ny1hZmQxLTdmMmU2NmM4ODFhYiIsImF1ZCI6ImNsYXJhLXdpZGdldCIsImlhdCI6MTc5MTQ0NDM5MywiZXhwIjoxNzkxNTMwNzkzfQ.aBInrOEkEcEU0biy8RAfb1aTzd3Ekho2fwC_t190n6Q"},
427        claraApiBaseUrl: 'https://chatbot.reachmd.com',
428        
429        
430    };
431
432    function fetchTagData() {
433        var currentUrl = new URL(window.location.href);
434        var apiUrl = new URL('/latest/profiles/api/ptags/', window.location.origin);
435
436        var relevantParams = [
437            'origin',
438            'lorigin',
439            'aforigin',
440            'tporigin',
441            'utm_source',
442            'utm_profession',
443            'utm_specialty'
444        ];
445
446        relevantParams.forEach(function(param) {
447            var value = currentUrl.searchParams.get(param);
448            if (value) {
449                apiUrl.searchParams.set(param.replace(/utm_/g, 'u_'), value);
450            }
451        });
452
453        fetch(apiUrl.toString(), {
454            method: 'GET',
455            credentials: 'same-origin',
456            headers: {
457                'Accept': 'application/json',
458                'Content-Type': 'application/json',
459            }
460        })
461        .then(function(response) {
462            if (!response.ok) {
463                throw new Error('Unable to retrieve tag data info: ' + response.statusText);
464            }
465            return response.json();
466        })
467        .then(function(data) {
468            window.reachMD.tagData = {
469                p: data.p || '',
470                s: data.s || '',
471                i: data.i || '',
472                fi: data.fi || 'false',
473            };
474            if (typeof window.CustomEvent === 'function') {
475                var event = new CustomEvent('tag.data.ready', {
476                    detail: window.reachMD.tagData
477                });
478                window.dispatchEvent(event);
479            }
480        })
481        .catch(function() {
482            window.reachMD.tagData = {
483                p: '',
484                s: '',
485                i: '',
486                fi: 'false',
487            };
488            console.info('[LOG]: Unable to retrieve tag data info');
489        });
490    }
491
492    fetchTagData();
493</script>
vendor: 1 bytes, line 493
493
494<script>window.intlCopies = {};</script>
494
495</body>
496</html>
497    
497<script>
498        (function (w, d, t, s, o, a, m) {
499            w[o] = w[o] || function () {
500                (w[o].q = w[o].q || []).push(arguments)
501            };
502            w[o].l = 1 * new Date();
503            a = d.createElement(t);
504            m = d.getElementsByTagName(t)[0];
505            a.async = 1;
506            a.src = s;
507            m.parentNode.insertBefore(a, m)
508        })(window, document, 'script', 'https://rmdframework.reachmd.com/static/rmd.js', 'RMDT');
509        RMDT('init');
510        
511            var xhttp = new XMLHttpRequest();
512            xhttp.open('GET', 'https://rmdframework.reachmd.com/visitor/91f1ad47-0d93-4447-afd1-7f2e66c881ab', true);
513            xhttp.withCredentials = true;
514            xhttp.setRequestHeader('Content-Type', 'application/json');
515            xhttp.send();
516        
517    </script>
517
518
519
520
521<script>
522  (function (w, d, t, s, o, a, m) {
523    w[o] = w[o] || function () {
524      (w[o].q = w[o].q || []).push(arguments)
525    };
526    w[o].l = 1 * new Date();
527    a = d.createElement(t);
528    m = d.getElementsByTagName(t)[0];
529    a.async = 1;
530    a.src = s;
531    m.parentNode.insertBefore(a, m)
532  })
533  
534    (window, document, 'script', "https://cdn.globalkidneyacademy.org/assets/js/logger.js", 'RMDTLOG');
535  
536  RMDTLOG('init');
537</script>
537
538
539
540    
540<script>
541
542(function (i, s, o, g, r, a, m) {
543    i['NewGoogleAnalyticsObject'] = r;
544    i[r] = i[r] || function () {
545        (i.dataLayer = i.dataLayer || []).push(arguments)
546    };
547    a = s.createElement(o),
548    m = s.getElementsByTagName(o)[0];
549    a.async = 1;
550    a.src = g;
551    m.parentNode.insertBefore(a, m)
552})(window, document, 'script', '//www.googletagmanager.com/gtag/js?id=G-17Z3JJ2PKP', 'gtag');
553
554gtag('js', new Date());
555gtag('config', 'G-17Z3JJ2PKP');
556
557</script>
557
558
559
560<script>
561    (() => {
562        // Clean up previous instance (handles PJAX re-navigation)
563        if (window.__tsiCleanup) {
564            window.__tsiCleanup();
565        }
566
567        const INTERVAL_INITIAL = 1000;         // first hit: 1s
568        const INTERVAL_FIRST_MINUTE = 5000;    // 0-60s: every 5s
569        const INTERVAL_SECOND_MINUTE = 10000;  // 60-120s: every 10s
570        const INTERVAL_AFTER = 20000;          // 120s+: every 20s
571        const STATIC_PAGE_ELEMENT_CLICK = 1721;
572        const CLICK_IGNORE_TAGS = ['html', 'body', 'script', 'style'];
573        const STORAGE_KEY = 'tsi_' + window.location.pathname;
574
575        const loadState = () => {
576            try {
577                const raw = sessionStorage.getItem(STORAGE_KEY);
578                if (raw) return JSON.parse(raw);
579            } catch (e) { console.error('[LOG]: Error loading tracking state', e); }
580            return null;
581        };
582
583        const saveState = () => {
584            try {
585                sessionStorage.setItem(STORAGE_KEY, JSON.stringify({
586                    mediaPlayedTime: mediaPlayedTime,
587                    userStartedAt: userStartedAt
588                }));
589            } catch (e) { console.error('[LOG]: Error saving tracking state', e); }
590        };
591
592        const savedState = loadState();
593        let lastUpdateTime = Date.now();
594        let mediaPlayedTime = savedState ? savedState.mediaPlayedTime : 0;
595        let sessionPlayedTime = mediaPlayedTime;
596        let trackingTimer = null;
597        let isFirstHit = !savedState;
598        let finalSent = false;
599        const userStartedAt = savedState ? savedState.userStartedAt : new Date().toISOString().slice(0, 19);
600
601        const getCookie = (name) => {
602            const value = '; ' + document.cookie;
603            const parts = value.split('; ' + name + '=');
604            if (parts.length === 2) return parts.pop().split(';').shift();
605            return null;
606        };
607
608        const getRMDVID = () => {
609            const rmd = window.reachMD || {};
610            const fromWindow = rmd.user && rmd.user.rmdvid;
611            if (fromWindow) return fromWindow;
612            return getCookie('RMDVID');
613        };
614
615        let rmdVisitorId = getRMDVID();
616
617        const getSource = () => {
618            const SOURCE_MAPPING = {
619                'desktop': 0, 'mobile': 1, 'ios': 2, 'android': 3,
620                'native_app_ios': 4, 'native_app_android': 5
621            };
622            const sourceParam = new URLSearchParams(window.location.search).get('source');
623            if (sourceParam && SOURCE_MAPPING[sourceParam] !== undefined) {
624                return SOURCE_MAPPING[sourceParam];
625            }
626            const sourceCookie = getCookie('source');
627            if (sourceCookie && [0, 1, 2, 3, 4, 5].indexOf(parseInt(sourceCookie, 10)) > -1) {
628                return parseInt(sourceCookie, 10);
629            }
630            if (screen.width <= 980 || window.innerWidth <= 980) {
631                return SOURCE_MAPPING.mobile;
632            }
633            return SOURCE_MAPPING.desktop;
634        };
635
636        const getXPath = (el) => {
637            if (el.id) return '//*[@id="' + el.id + '"]';
638            const parts = [];
639            let current = el;
640            while (current && current.nodeType === 1) {
641                let index = 1;
642                let sibling = current.previousSibling;
643                while (sibling) {
644                    if (sibling.nodeType === 1 && sibling.tagName === current.tagName) index++;
645                    sibling = sibling.previousSibling;
646                }
647                parts.unshift(current.tagName.toLowerCase() + '[' + index + ']');
648                current = current.parentNode;
649            }
650            return '/' + parts.join('/');
651        };
652
653        const getClickText = (target) => {
654            const anchor = target.closest ? target.closest('a') : null;
655            const button = target.closest ? target.closest('button') : null;
656            const source = anchor || button || target;
657            return (source.innerText || '').trim().substring(0, 100);
658        };
659
660        const getInterval = () => {
661            if (isFirstHit) return INTERVAL_INITIAL;
662            if (sessionPlayedTime < 60) return INTERVAL_FIRST_MINUTE;
663            if (sessionPlayedTime < 120) return INTERVAL_SECOND_MINUTE;
664            return INTERVAL_AFTER;
665        };
666
667        const getHost = () => {
668            const rmd = window.reachMD || {};
669            const urls = (rmd.urls || {}).logger || {};
670            return urls.analytics_api_host;
671        };
672
673        const getPayload = () => {
674            const rmd = window.reachMD || {};
675            return {
676                device_type: getSource(),
677                rmd_visitor_id: rmdVisitorId,
678                segment_id: 0,
679                session_id: rmd.encryptedSessionId,
680                site_id: rmd.siteId,
681                user_started_at: userStartedAt,
682                user_stopped_at: new Date().toISOString().slice(0, 19),
683                active_time: mediaPlayedTime,
684                page_url: window.location.href,
685            };
686        };
687
688        const onClickCapture = (e) => {
689            const target = e.target;
690            const tag = target.tagName.toLowerCase();
691            if (CLICK_IGNORE_TAGS.indexOf(tag) > -1) return;
692            const anchor = target.closest ? target.closest('a') : null;
693            const rmd = window.reachMD || {};
694            const event = {
695                event_type: STATIC_PAGE_ELEMENT_CLICK,
696                site_id: rmd.siteId,
697                source: getSource(),
698                rmd_visitor_id: rmdVisitorId,
699                user_id: (rmd.user && rmd.user.isLoggedIn) ? rmd.user.id : null,
700                page_url: window.location.href,
701                click_id: target.id || null,
702                click_xpath: target.id ? null : getXPath(target),
703                click_tag: tag,
704                click_text: getClickText(target),
705                click_href: anchor ? anchor.href : null,
706                click_ts: new Date().toISOString().slice(0, 19),
707            };
708            const xhr = new XMLHttpRequest();
709            xhr.open('POST', '/b/', true);
710            xhr.setRequestHeader('Content-Type', 'application/json');
711            xhr.setRequestHeader('X-CSRFToken', (document.querySelector('meta[name="csrf-token"]') || {}).content || '');
712            xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
713            xhr.send(JSON.stringify([event]));
714        };
715
716        const sendLog = () => {
717            const currentTime = Date.now();
718            const elapsed = Math.round((currentTime - lastUpdateTime) / 1000);
719            lastUpdateTime = currentTime;
720            mediaPlayedTime += elapsed;
721            sessionPlayedTime += elapsed;
722            isFirstHit = false;
723            saveState();
724
725            if (!rmdVisitorId) rmdVisitorId = getRMDVID();
726
727            const host = getHost();
728            if (!host || mediaPlayedTime < 1) return;
729
730            const payload = JSON.stringify(getPayload());
731
732            const xhr = new XMLHttpRequest();
733            xhr.open('POST', host + 'tsi/', true);
734            xhr.setRequestHeader('Content-Type', 'application/json');
735            xhr.send(payload);
736
737            scheduleNext();
738        };
739
740        const scheduleNext = () => {
741            clearTimeout(trackingTimer);
742            trackingTimer = setTimeout(sendLog, getInterval());
743        };
744
745        const sendFinalLog = () => {
746            if (finalSent) return;
747            finalSent = true;
748
749            const currentTime = Date.now();
750            const elapsed = Math.round((currentTime - lastUpdateTime) / 1000);
751            mediaPlayedTime += elapsed;
752            sessionPlayedTime += elapsed;
753            saveState();
754
755            if (!rmdVisitorId) rmdVisitorId = getRMDVID();
756
757            const host = getHost();
758            if (!host || mediaPlayedTime < 1) return;
759
760            const payload = JSON.stringify(getPayload());
761
762            if (navigator.sendBeacon) {
763                const blob = new Blob([payload], { type: 'application/json' });
764                navigator.sendBeacon(host + 'tsi/', blob);
765            } else {
766                fetch(host + 'tsi/', {
767                    method: 'POST',
768                    headers: { 'Content-Type': 'application/json' },
769                    body: payload,
770                    keepalive: true
771                });
772            }
773        };
774
775        const onVisibilityChange = () => {
776            if (document.visibilityState === 'hidden') {
777                clearTimeout(trackingTimer);
778                sendFinalLog();
779            } else {
780                lastUpdateTime = Date.now();
781                finalSent = false;
782                scheduleNext();
783            }
784        };
785
786        const onPageHide = () => {
787            clearTimeout(trackingTimer);
788            sendFinalLog();
789        };
790
791        const onPageShow = (e) => {
792            if (e.persisted) {
793                lastUpdateTime = Date.now();
794                finalSent = false;
795                scheduleNext();
796                listenForPjaxCleanup();
797            }
798        };
799
800        const cleanup = () => {
801            clearTimeout(trackingTimer);
802            sendFinalLog();
803            document.removeEventListener('click', onClickCapture, true);
804            document.removeEventListener('visibilitychange', onVisibilityChange);
805            window.removeEventListener('pagehide', onPageHide);
806            window.removeEventListener('pageshow', onPageShow);
807            if (typeof $ !== 'undefined') $(document).off('pjax:start.tsi');
808            window.__tsiCleanup = null;
809        };
810
811        const listenForPjaxCleanup = () => {
812            if (typeof $ === 'undefined') return;
813            $(document).off('pjax:start.tsi').one('pjax:start.tsi', () => {
814                if (window.__tsiCleanup) window.__tsiCleanup();
815            });
816        };
817
818        scheduleNext();
819
820        document.removeEventListener('click', onClickCapture, true);
821        document.removeEventListener('visibilitychange', onVisibilityChange);
822        window.removeEventListener('pagehide', onPageHide);
823        window.removeEventListener('pageshow', onPageShow);
824
825        document.addEventListener('click', onClickCapture, true);
826        document.addEventListener('visibilitychange', onVisibilityChange);
827        window.addEventListener('pagehide', onPageHide);
828        window.addEventListener('pageshow', onPageShow);
829        listenForPjaxCleanup();
830
831        window.__tsiCleanup = cleanup;
832    })();
833</script>
833
834
835

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.