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.