Web-based Machine Learning Model for Predicting... | F1000Research "use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(){var t=function(){var t,e,o=[],n=window,r=n;for(;r;){try{if(r.frames.__tcfapiLocator){t=r;break}}catch(t){}if(r===n.top)break;r=r.parent}t||(!function t(){var e=n.document,o=!!n.frames.__tcfapiLocator;if(!o)if(e.body){var r=e.createElement("iframe");r.style.cssText="display:none",r.name="__tcfapiLocator",e.body.appendChild(r)}else setTimeout(t,5);return!o}(),n.__tcfapi=function(){for(var t=arguments.length,n=new Array(t),r=0;r 3&&2===parseInt(n[1],10)&&"boolean"==typeof n[3]&&(e=n[3],"function"==typeof n[2]&&n[2]("set",!0)):"ping"===n[0]?"function"==typeof n[2]&&n[2]({gdprApplies:e,cmpLoaded:!1,cmpStatus:"stub"}):o.push(n)},n.addEventListener("message",(function(t){var e="string"==typeof t.data,o={};if(e)try{o=JSON.parse(t.data)}catch(t){}else o=t.data;var n="object"===_typeof(o)&&null!==o?o.__tcfapiCall:null;n&&window.__tcfapi(n.command,n.version,(function(o,r){var a={__tcfapiReturn:{returnValue:o,success:r,callId:n.callId}};t&&t.source&&t.source.postMessage&&t.source.postMessage(e?JSON.stringify(a):a,"*")}),n.parameter)}),!1))};"undefined"!=typeof module?module.exports=t:t()}(); dataLayer = dataLayer || []; // Standard GTM initialization - Google Consent Mode handles consent automatically (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl+ '>m_auth=hzk0Vc3qFsQYhCrIoHz68A>m_preview=env-1>m_cookies_win=x';f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-MWFK8L5J'); ;window.NREUM||(NREUM={});NREUM.init={distributed_tracing:{enabled:true},privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]}}; ;NREUM.loader_config={accountID:"438030",trustKey:"438030",agentID:"772317073",licenseKey:"97f8f67f26",applicationID:"772317073"} ;NREUM.info={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",licenseKey:"97f8f67f26",applicationID:"772317073",sa:1} ;/*! For license information please see nr-loader-spa-1.236.0.min.js.LICENSE.txt */ (()=>{"use strict";var e,t,r={5763:(e,t,r)=>{r.d(t,{P_:()=>l,Mt:()=>g,C5:()=>s,DL:()=>v,OP:()=>T,lF:()=>D,Yu:()=>y,Dg:()=>h,CX:()=>c,GE:()=>b,sU:()=>_});var n=r(8632),i=r(9567);const o={beacon:n.ce.beacon,errorBeacon:n.ce.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function c(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.D)(t,o),(0,n.Qy)(e,a[e],"info")}var u=r(7056);const d=()=>{const e={blockSelector:"[data-nr-block]",maskInputOptions:{password:!0}};return{allow_bfcache:!0,privacy:{cookies_enabled:!0},ajax:{deny_list:void 0,enabled:!0,harvestTimeSeconds:10},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},session:{domain:void 0,expiresMs:u.oD,inactiveMs:u.Hb},ssl:void 0,obfuscate:void 0,jserrors:{enabled:!0,harvestTimeSeconds:10},metrics:{enabled:!0},page_action:{enabled:!0,harvestTimeSeconds:30},page_view_event:{enabled:!0},page_view_timing:{enabled:!0,harvestTimeSeconds:30,long_task:!1},session_trace:{enabled:!0,harvestTimeSeconds:10},harvest:{tooManyRequestsDelay:60},session_replay:{enabled:!1,harvestTimeSeconds:60,sampleRate:.1,errorSampleRate:.1,maskTextSelector:"*",maskAllInputs:!0,get blockClass(){return"nr-block"},get ignoreClass(){return"nr-ignore"},get maskTextClass(){return"nr-mask"},get blockSelector(){return e.blockSelector},set blockSelector(t){e.blockSelector+=",".concat(t)},get maskInputOptions(){return e.maskInputOptions},set maskInputOptions(t){e.maskInputOptions={...t,password:!0}}},spa:{enabled:!0,harvestTimeSeconds:10}}},f={};function l(e){if(!e)throw new Error("All configuration objects require an agent identifier!");if(!f[e])throw new Error("Configuration for ".concat(e," was never set"));return f[e]}function h(e,t){if(!e)throw new Error("All configuration objects require an agent identifier!");f[e]=(0,i.D)(t,d()),(0,n.Qy)(e,f[e],"config")}function g(e,t){if(!e)throw new Error("All configuration objects require an agent identifier!");var r=l(e);if(r){for(var n=t.split("."),i=0;i {r.d(t,{D:()=>i});var n=r(50);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.Z)("Setting a Configurable requires an object as input");if(!t||"object"!=typeof t)return(0,n.Z)("Setting a Configurable requires a model to set its initial properties");const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.Z)("An error occurred while setting a property of a Configurable",e)}return r}catch(e){(0,n.Z)("An error occured while setting a Configurable",e)}}},6818:(e,t,r)=>{r.d(t,{Re:()=>i,gF:()=>o,q4:()=>n});const n="1.236.0",i="PROD",o="CDN"},385:(e,t,r)=>{r.d(t,{FN:()=>a,IF:()=>u,Nk:()=>f,Tt:()=>s,_A:()=>o,il:()=>n,pL:()=>c,v6:()=>i,w1:()=>d});const n="undefined"!=typeof window&&!!window.document,i="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),o=n?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),a=""+o?.location,s=/iPad|iPhone|iPod/.test(navigator.userAgent),c=s&&"undefined"==typeof SharedWorker,u=(()=>{const e=navigator.userAgent.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),d=Boolean(n&&window.document.documentMode),f=!!navigator.sendBeacon},1117:(e,t,r)=>{r.d(t,{w:()=>o});var n=r(50);const i={agentIdentifier:"",ee:void 0};class o{constructor(e){try{if("object"!=typeof e)return(0,n.Z)("shared context requires an object as input");this.sharedContext={},Object.assign(this.sharedContext,i),Object.entries(e).forEach((e=>{let[t,r]=e;Object.keys(i).includes(t)&&(this.sharedContext[t]=r)}))}catch(e){(0,n.Z)("An error occured while setting SharedContext",e)}}}},8e3:(e,t,r)=>{r.d(t,{L:()=>d,R:()=>c});var n=r(2177),i=r(1284),o=r(4322),a=r(3325);const s={};function c(e,t){const r={staged:!1,priority:a.p[t]||0};u(e),s[e].get(t)||s[e].set(t,r)}function u(e){e&&(s[e]||(s[e]=new Map))}function d(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"feature";if(u(e),!e||!s[e].get(t))return a(t);s[e].get(t).staged=!0;const r=[...s[e]];function a(t){const r=e?n.ee.get(e):n.ee,a=o.X.handlers;if(r.backlog&&a){var s=r.backlog[t],c=a[t];if(c){for(var u=0;s&&u {let[t,r]=e;return r.staged}))&&(r.sort(((e,t)=>e[1].priority-t[1].priority)),r.forEach((e=>{let[t]=e;a(t)})))}function f(e,t){var r=e[1];(0,i.D)(t[r],(function(t,r){var n=e[0];if(r[0]===n){var i=r[1],o=e[3],a=e[2];i.apply(o,a)}}))}},2177:(e,t,r)=>{r.d(t,{c:()=>f,ee:()=>u});var n=r(8632),i=r(2210),o=r(1284),a=r(5763),s="nr@context";let c=(0,n.fP)();var u;function d(){}function f(e){return(0,i.X)(e,s,l)}function l(){return new d}function h(){u.aborted=!0,u.backlog={}}c.ee?u=c.ee:(u=function e(t,r){var n={},c={},f={},g=!1;try{g=16===r.length&&(0,a.OP)(r).isolatedBacklog}catch(e){}var p={on:b,addEventListener:b,removeEventListener:y,emit:v,get:x,listeners:w,context:m,buffer:A,abort:h,aborted:!1,isBuffering:E,debugId:r,backlog:g?{}:t&&"object"==typeof t.backlog?t.backlog:{}};return p;function m(e){return e&&e instanceof d?e:e?(0,i.X)(e,s,l):l()}function v(e,r,n,i,o){if(!1!==o&&(o=!0),!u.aborted||i){t&&o&&t.emit(e,r,n);for(var a=m(n),s=w(e),d=s.length,f=0;fn,p:()=>i});var n=r(2177).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},4322:(e,t,r)=>{r.d(t,{X:()=>o});var n=r(5546);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.E,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.E);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3239:(e,t,r)=>{r.d(t,{bP:()=>s,iz:()=>c,m$:()=>a});var n=r(385);let i=!1,o=!1;try{const e={get passive(){return i=!0,!1},get signal(){return o=!0,!1}};n._A.addEventListener("test",null,e),n._A.removeEventListener("test",null,e)}catch(e){}function a(e,t){return i||o?{capture:!!e,passive:i,signal:t}:!!e}function s(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3?arguments[3]:void 0;window.addEventListener(e,t,a(r,n))}function c(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3?arguments[3]:void 0;document.addEventListener(e,t,a(r,n))}},4402:(e,t,r)=>{r.d(t,{Ht:()=>u,M:()=>c,Rl:()=>a,ky:()=>s});var n=r(385);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n._A?.crypto||n._A?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(31))),i.split("").map((e=>"x"===e?o(t,++r).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n._A?.crypto||n._A?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(31)));const a=[];for(var s=0;s {r.d(t,{Bq:()=>n,Hb:()=>o,oD:()=>i});const n="NRBA",i=144e5,o=18e5},7894:(e,t,r)=>{function n(){return Math.round(performance.now())}r.d(t,{z:()=>n})},7243:(e,t,r)=>{r.d(t,{e:()=>o});var n=r(385),i={};function o(e){if(e in i)return i[e];if(0===(e||"").indexOf("data:"))return{protocol:"data"};let t;var r=n._A?.location,o={};if(n.il)t=document.createElement("a"),t.href=e;else try{t=new URL(e,r.href)}catch(e){return o}o.port=t.port;var a=t.href.split("://");!o.port&&a[1]&&(o.port=a[1].split("/")[0].split("@").pop().split(":")[1]),o.port&&"0"!==o.port||(o.port="https"===a[0]?"443":"80"),o.hostname=t.hostname||r.hostname,o.pathname=t.pathname,o.protocol=a[0],"/"!==o.pathname.charAt(0)&&(o.pathname="/"+o.pathname);var s=!t.protocol||":"===t.protocol||t.protocol===r.protocol,c=t.hostname===r.hostname&&t.port===r.port;return o.sameOrigin=s&&(!t.hostname||c),"/"===o.pathname&&(i[e]=o),o}},50:(e,t,r)=>{function n(e,t){"function"==typeof console.warn&&(console.warn("New Relic: ".concat(e)),t&&console.warn(t))}r.d(t,{Z:()=>n})},2587:(e,t,r)=>{r.d(t,{N:()=>c,T:()=>u});var n=r(2177),i=r(5546),o=r(8e3),a=r(3325);const s={stn:[a.D.sessionTrace],err:[a.D.jserrors,a.D.metrics],ins:[a.D.pageAction],spa:[a.D.spa],sr:[a.D.sessionReplay,a.D.sessionTrace]};function c(e,t){const r=n.ee.get(t);e&&"object"==typeof e&&(Object.entries(e).forEach((e=>{let[t,n]=e;void 0===u[t]&&(s[t]?s[t].forEach((e=>{n?(0,i.p)("feat-"+t,[],void 0,e,r):(0,i.p)("block-"+t,[],void 0,e,r),(0,i.p)("rumresp-"+t,[Boolean(n)],void 0,e,r)})):n&&(0,i.p)("feat-"+t,[],void 0,void 0,r),u[t]=Boolean(n))})),Object.keys(s).forEach((e=>{void 0===u[e]&&(s[e]?.forEach((t=>(0,i.p)("rumresp-"+e,[!1],void 0,t,r))),u[e]=!1)})),(0,o.L)(t,a.D.pageViewEvent))}const u={}},2210:(e,t,r)=>{r.d(t,{X:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},1284:(e,t,r)=>{r.d(t,{D:()=>n});const n=(e,t)=>Object.entries(e||{}).map((e=>{let[r,n]=e;return t(r,n)}))},4351:(e,t,r)=>{r.d(t,{P:()=>o});var n=r(2177);const i=()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}};function o(e){try{return JSON.stringify(e,i())}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}}}},3960:(e,t,r)=>{r.d(t,{K:()=>a,b:()=>o});var n=r(3239);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.bP)("load",e,t)}function a(e){if(i())return e();(0,n.iz)("DOMContentLoaded",e)}},8632:(e,t,r)=>{r.d(t,{EZ:()=>u,Qy:()=>c,ce:()=>o,fP:()=>a,gG:()=>d,mF:()=>s});var n=r(7894),i=r(385);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return i._A.NREUM||(i._A.NREUM={}),void 0===i._A.newrelic&&(i._A.newrelic=i._A.NREUM),i._A.NREUM}function s(){let e=a();return e.o||(e.o={ST:i._A.setTimeout,SI:i._A.setImmediate,CT:i._A.clearTimeout,XHR:i._A.XMLHttpRequest,REQ:i._A.Request,EV:i._A.Event,PR:i._A.Promise,MO:i._A.MutationObserver,FETCH:i._A.fetch}),e}function c(e,t,r){let i=a();const o=i.initializedAgents||{},s=o[e]||{};return Object.keys(s).length||(s.initializedAt={ms:(0,n.z)(),date:new Date}),i.initializedAgents={...o,[e]:{...s,[r]:t}},i}function u(e,t){a()[e]=t}function d(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},7956:(e,t,r)=>{r.d(t,{N:()=>i});var n=r(3239);function i(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0;return void(0,n.iz)("visibilitychange",(function(){if(t)return void("hidden"==document.visibilityState&&e());e(document.visibilityState)}),r,i)}},1214:(e,t,r)=>{r.d(t,{em:()=>v,u5:()=>N,QU:()=>S,_L:()=>I,Gm:()=>L,Lg:()=>M,gy:()=>U,BV:()=>Q,Kf:()=>ee});var n=r(2177);const i="nr@original";var o=Object.prototype.hasOwnProperty,a=!1;function s(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");var a,s,c,u="-"===n.charAt(0);for(c=0;c 2?n-2:0),o=2;o {r(A[T],e,w),r(E[T],e,w)})),r(l._A,"fetch",y),t.on(y+"end",(function(e,r){var n=this;if(r){var i=r.headers.get("content-length");null!==i&&(n.rxSize=i),t.emit(y+"done",[null,r],n)}else t.emit(y+"done",[e],n)})),t}const O={},j=["pushState","replaceState"];function S(e){const t=function(e){return(e||n.ee).get("history")}(e);return!l.il||O[t.debugId]++||(O[t.debugId]=1,s(t).inPlace(window.history,j,"-")),t}var P=r(3239);const C={},R=["appendChild","insertBefore","replaceChild"];function I(e){const t=function(e){return(e||n.ee).get("jsonp")}(e);if(!l.il||C[t.debugId])return t;C[t.debugId]=!0;var r=s(t),i=/[?&](?:callback|cb)=([^&#]+)/,o=/(.*)\.([^.]+)/,a=/^(\w+)(\.|$)(.*)$/;function c(e,t){var r=e.match(a),n=r[1],i=r[3];return i?c(i,t[n]):t[n]}return r.inPlace(Node.prototype,R,"dom-"),t.on("dom-start",(function(e){!function(e){if(!e||"string"!=typeof e.nodeName||"script"!==e.nodeName.toLowerCase())return;if("function"!=typeof e.addEventListener)return;var n=(a=e.src,s=a.match(i),s?s[1]:null);var a,s;if(!n)return;var u=function(e){var t=e.match(o);if(t&&t.length>=3)return{key:t[2],parent:c(t[1],window)};return{key:e,parent:window}}(n);if("function"!=typeof u.parent[u.key])return;var d={};function f(){t.emit("jsonp-end",[],d),e.removeEventListener("load",f,(0,P.m$)(!1)),e.removeEventListener("error",l,(0,P.m$)(!1))}function l(){t.emit("jsonp-error",[],d),t.emit("jsonp-end",[],d),e.removeEventListener("load",f,(0,P.m$)(!1)),e.removeEventListener("error",l,(0,P.m$)(!1))}r.inPlace(u.parent,[u.key],"cb-",d),e.addEventListener("load",f,(0,P.m$)(!1)),e.addEventListener("error",l,(0,P.m$)(!1)),t.emit("new-jsonp",[e.src],d)}(e[0])})),t}var k=r(5763);const H={};function L(e){const t=function(e){return(e||n.ee).get("mutation")}(e);if(!l.il||H[t.debugId])return t;H[t.debugId]=!0;var r=s(t),i=k.Yu.MO;return i&&(window.MutationObserver=function(e){return this instanceof i?new i(r(e,"fn-")):i.apply(this,arguments)},MutationObserver.prototype=i.prototype),t}const z={};function M(e){const t=function(e){return(e||n.ee).get("promise")}(e);if(z[t.debugId])return t;z[t.debugId]=!0;var r=n.c,o=s(t),a=k.Yu.PR;return a&&function(){function e(r){var n=t.context(),i=o(r,"executor-",n,null,!1);const s=Reflect.construct(a,[i],e);return t.context(s).getCtx=function(){return n},s}l._A.Promise=e,Object.defineProperty(e,"name",{value:"Promise"}),e.toString=function(){return a.toString()},Object.setPrototypeOf(e,a),["all","race"].forEach((function(r){const n=a[r];e[r]=function(e){let i=!1;[...e||[]].forEach((e=>{this.resolve(e).then(a("all"===r),a(!1))}));const o=n.apply(this,arguments);return o;function a(e){return function(){t.emit("propagate",[null,!i],o,!1,!1),i=i||!e}}}})),["resolve","reject"].forEach((function(r){const n=a[r];e[r]=function(e){const r=n.apply(this,arguments);return e!==r&&t.emit("propagate",[e,!0],r,!1,!1),r}})),e.prototype=a.prototype;const n=a.prototype.then;a.prototype.then=function(){var e=this,i=r(e);i.promise=e;for(var a=arguments.length,s=new Array(a),c=0;c e())),t};function m(e,t){i.inPlace(t,["onreadystatechange"],"fn-",E)}function b(){var e=this,t=r.context(e);e.readyState>3&&!t.resolved&&(t.resolved=!0,r.emit("xhr-resolved",[],e)),i.inPlace(e,f,"fn-",E)}if(function(e,t){for(var r in e)t[r]=e[r]}(o,p),p.prototype=o.prototype,i.inPlace(p.prototype,J,"-xhr-",E),r.on("send-xhr-start",(function(e,t){m(e,t),function(e){h.push(e),a&&(y?y.then(A):u?u(A):(w=-w,x.data=w))}(t)})),r.on("open-xhr-start",m),a){var y=c&&c.resolve();if(!u&&!c){var w=1,x=document.createTextNode(w);new a(A).observe(x,{characterData:!0})}}else t.on("fn-end",(function(e){e[0]&&e[0].type===d||A()}));function A(){for(var e=0;e {r.d(t,{t:()=>n});const n=r(3325).D.ajax},6660:(e,t,r)=>{r.d(t,{A:()=>i,t:()=>n});const n=r(3325).D.jserrors,i="nr@seenError"},3081:(e,t,r)=>{r.d(t,{gF:()=>o,mY:()=>i,t9:()=>n,vz:()=>s,xS:()=>a});const n=r(3325).D.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},4649:(e,t,r)=>{r.d(t,{t:()=>n});const n=r(3325).D.pageAction},7633:(e,t,r)=>{r.d(t,{Dz:()=>i,OJ:()=>a,qw:()=>o,t9:()=>n});const n=r(3325).D.pageViewEvent,i="firstbyte",o="domcontent",a="windowload"},9251:(e,t,r)=>{r.d(t,{t:()=>n});const n=r(3325).D.pageViewTiming},3614:(e,t,r)=>{r.d(t,{BST_RESOURCE:()=>i,END:()=>s,FEATURE_NAME:()=>n,FN_END:()=>u,FN_START:()=>c,PUSH_STATE:()=>d,RESOURCE:()=>o,START:()=>a});const n=r(3325).D.sessionTrace,i="bstResource",o="resource",a="-start",s="-end",c="fn"+a,u="fn"+s,d="pushState"},7836:(e,t,r)=>{r.d(t,{BODY:()=>A,CB_END:()=>E,CB_START:()=>u,END:()=>x,FEATURE_NAME:()=>i,FETCH:()=>_,FETCH_BODY:()=>v,FETCH_DONE:()=>m,FETCH_START:()=>p,FN_END:()=>c,FN_START:()=>s,INTERACTION:()=>l,INTERACTION_API:()=>d,INTERACTION_EVENTS:()=>o,JSONP_END:()=>b,JSONP_NODE:()=>g,JS_TIME:()=>T,MAX_TIMER_BUDGET:()=>a,REMAINING:()=>f,SPA_NODE:()=>h,START:()=>w,originalSetTimeout:()=>y});var n=r(5763);const i=r(3325).D.spa,o=["click","submit","keypress","keydown","keyup","change"],a=999,s="fn-start",c="fn-end",u="cb-start",d="api-ixn-",f="remaining",l="interaction",h="spaNode",g="jsonpNode",p="fetch-start",m="fetch-done",v="fetch-body-",b="jsonp-end",y=n.Yu.ST,w="-start",x="-end",A="-body",E="cb"+x,T="jsTime",_="fetch"},5938:(e,t,r)=>{r.d(t,{W:()=>o});var n=r(5763),i=r(2177);class o{constructor(e,t,r){this.agentIdentifier=e,this.aggregator=t,this.ee=i.ee.get(e,(0,n.OP)(this.agentIdentifier).isolatedBacklog),this.featureName=r,this.blocked=!1}}},9144:(e,t,r)=>{r.d(t,{j:()=>m});var n=r(3325),i=r(5763),o=r(5546),a=r(2177),s=r(7894),c=r(8e3),u=r(3960),d=r(385),f=r(50),l=r(3081),h=r(8632);function g(){const e=(0,h.gG)();["setErrorHandler","finished","addToTrace","inlineHit","addRelease","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId"].forEach((t=>{e[t]=function(){for(var r=arguments.length,n=new Array(r),i=0;i 1?r-1:0),i=1;i {e.exposed&&e.api[t]&&o.push(e.api[t](...n))})),o.length>1?o:o[0]}(t,...n)}}))}var p=r(2587);function m(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},m=arguments.length>2?arguments[2]:void 0,v=arguments.length>3?arguments[3]:void 0,{init:b,info:y,loader_config:w,runtime:x={loaderType:m},exposed:A=!0}=t;const E=(0,h.gG)();y||(b=E.init,y=E.info,w=E.loader_config),(0,i.Dg)(e,b||{}),(0,i.GE)(e,w||{}),(0,i.sU)(e,x),y.jsAttributes??={},d.v6&&(y.jsAttributes.isWorker=!0),(0,i.CX)(e,y),g();const T=function(e,t){t||(0,c.R)(e,"api");const h={};var g=a.ee.get(e),p=g.get("tracer"),m="api-",v=m+"ixn-";function b(t,r,n,o){const a=(0,i.C5)(e);return null===r?delete a.jsAttributes[t]:(0,i.CX)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),x(m,n,!0,o||null===r?"session":void 0)(t,r)}function y(){}["setErrorHandler","finished","addToTrace","inlineHit","addRelease"].forEach((e=>h[e]=x(m,e,!0,"api"))),h.addPageAction=x(m,"addPageAction",!0,n.D.pageAction),h.setCurrentRouteName=x(m,"routeName",!0,n.D.spa),h.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,i.OP)(e).customTransaction=(r||"http://custom.transaction")+t,x(m,"setPageViewName",!0)()},h.setCustomAttribute=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof e){if(["string","number"].includes(typeof t)||null===t)return b(e,t,"setCustomAttribute",r);(0,f.Z)("Failed to execute setCustomAttribute.\nNon-null value must be a string or number type, but a type of was provided."))}else(0,f.Z)("Failed to execute setCustomAttribute.\nName must be a string type, but a type of was provided."))},h.setUserId=function(e){if("string"==typeof e||null===e)return b("enduser.id",e,"setUserId",!0);(0,f.Z)("Failed to execute setUserId.\nNon-null value must be a string type, but a type of was provided."))},h.interaction=function(){return(new y).get()};var w=y.prototype={createTracer:function(e,t){var r={},i=this,a="function"==typeof t;return(0,o.p)(v+"tracer",[(0,s.z)(),e,r],i,n.D.spa,g),function(){if(p.emit((a?"":"no-")+"fn-start",[(0,s.z)(),i,a],r),a)try{return t.apply(this,arguments)}catch(e){throw p.emit("fn-err",[arguments,this,"string"==typeof e?new Error(e):e],r),e}finally{p.emit("fn-end",[(0,s.z)()],r)}}}};function x(e,t,r,i){return function(){return(0,o.p)(l.xS,["API/"+t+"/called"],void 0,n.D.metrics,g),i&&(0,o.p)(e+t,[(0,s.z)(),...arguments],r?null:this,i,g),r?void 0:this}}function A(){r.e(439).then(r.bind(r,7438)).then((t=>{let{setAPI:r}=t;r(e),(0,c.L)(e,"api")})).catch((()=>(0,f.Z)("Downloading runtime APIs failed...")))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{w[e]=x(v,e,void 0,n.D.spa)})),h.noticeError=function(e,t){"string"==typeof e&&(e=new Error(e)),(0,o.p)(l.xS,["API/noticeError/called"],void 0,n.D.metrics,g),(0,o.p)("err",[e,(0,s.z)(),!1,t],void 0,n.D.jserrors,g)},d.il?(0,u.b)((()=>A()),!0):A(),h}(e,v);return(0,h.Qy)(e,T,"api"),(0,h.Qy)(e,A,"exposed"),(0,h.EZ)("activatedFeatures",p.T),T}},3325:(e,t,r)=>{r.d(t,{D:()=>n,p:()=>i});const n={ajax:"ajax",jserrors:"jserrors",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",spa:"spa"},i={[n.pageViewEvent]:1,[n.pageViewTiming]:2,[n.metrics]:3,[n.jserrors]:4,[n.ajax]:5,[n.sessionTrace]:6,[n.pageAction]:7,[n.spa]:8,[n.sessionReplay]:9}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>(({78:"page_action-aggregate",147:"metrics-aggregate",242:"session-manager",317:"jserrors-aggregate",348:"page_view_timing-aggregate",412:"lazy-feature-loader",439:"async-api",538:"recorder",590:"session_replay-aggregate",675:"compressor",733:"session_trace-aggregate",786:"page_view_event-aggregate",873:"spa-aggregate",898:"ajax-aggregate"}[e]||e)+"."+{78:"ac76d497",147:"3dc53903",148:"1a20d5fe",242:"2a64278a",317:"49e41428",348:"bd6de33a",412:"2f55ce66",439:"30bd804e",538:"1b18459f",590:"cf0efb30",675:"ae9f91a8",733:"83105561",786:"06482edd",860:"03a8b7a5",873:"e6b09d52",898:"998ef92b"}[e]+"-1.236.0.min.js"),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d {s.onerror=s.onload=null,clearTimeout(h);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},h=setTimeout(l.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=l.bind(null,s.onerror),s.onload=l.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.j=364,i.p="https://js-agent.newrelic.com/",(()=>{var e={364:0,953:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u {i.r(o);var e=i(3325),t=i(5763);const r=Object.values(e.D);function n(e){const n={};return r.forEach((r=>{n[r]=function(e,r){return!1!==(0,t.Mt)(r,"".concat(e,".enabled"))}(r,e)})),n}var a=i(9144);var s=i(5546),c=i(385),u=i(8e3),d=i(5938),f=i(3960),l=i(50);class h extends d.W{constructor(e,t,r){let n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];super(e,t,r),this.auto=n,this.abortHandler,this.featAggregate,this.onAggregateImported,n&&(0,u.R)(e,r)}importAggregator(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this.featAggregate||!this.auto)return;const r=c.il&&!0===(0,t.Mt)(this.agentIdentifier,"privacy.cookies_enabled");let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let t;try{if(r){const{setupAgentSession:e}=await Promise.all([i.e(860),i.e(242)]).then(i.bind(i,3228));t=e(this.agentIdentifier)}}catch(e){(0,l.Z)("A problem occurred when starting up session manager. This page will not start or extend any session.",e)}try{if(!this.shouldImportAgg(this.featureName,t))return void(0,u.L)(this.agentIdentifier,this.featureName);const{lazyFeatureLoader:r}=await i.e(412).then(i.bind(i,8582)),{Aggregate:o}=await r(this.featureName,"aggregate");this.featAggregate=new o(this.agentIdentifier,this.aggregator,e),n(!0)}catch(e){(0,l.Z)("Downloading and initializing ".concat(this.featureName," failed..."),e),this.abortHandler?.(),n(!1)}};c.il?(0,f.b)((()=>o()),!0):o()}shouldImportAgg(r,n){return r!==e.D.sessionReplay||!1!==(0,t.Mt)(this.agentIdentifier,"session_trace.enabled")&&(!!n?.isNew||!!n?.state.sessionReplay)}}var g=i(7633),p=i(7894);class m extends h{static featureName=g.t9;constructor(r,n){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(super(r,n,g.t9,i),("undefined"==typeof PerformanceNavigationTiming||c.Tt)&&"undefined"!=typeof PerformanceTiming){const n=(0,t.OP)(r);n[g.Dz]=Math.max(Date.now()-n.offset,0),(0,f.K)((()=>n[g.qw]=Math.max((0,p.z)()-n[g.Dz],0))),(0,f.b)((()=>{const t=(0,p.z)();n[g.OJ]=Math.max(t-n[g.Dz],0),(0,s.p)("timing",["load",t],void 0,e.D.pageViewTiming,this.ee)}))}this.importAggregator()}}var v=i(1117),b=i(1284);class y extends v.w{constructor(e){super(e),this.aggregatedData={}}store(e,t,r,n,i){var o=this.getBucket(e,t,r,i);return o.metrics=function(e,t){t||(t={count:0});return t.count+=1,(0,b.D)(e,(function(e,r){t[e]=w(r,t[e])})),t}(n,o.metrics),o}merge(e,t,r,n,i){var o=this.getBucket(e,t,n,i);if(o.metrics){var a=o.metrics;a.count+=r.count,(0,b.D)(r,(function(e,t){if("count"!==e){var n=a[e],i=r[e];i&&!i.c?a[e]=w(i.t,n):a[e]=function(e,t){if(!t)return e;t.c||(t=x(t.t));return t.min=Math.min(e.min,t.min),t.max=Math.max(e.max,t.max),t.t+=e.t,t.sos+=e.sos,t.c+=e.c,t}(i,a[e])}}))}else o.metrics=r}storeMetric(e,t,r,n){var i=this.getBucket(e,t,r);return i.stats=w(n,i.stats),i}getBucket(e,t,r,n){this.aggregatedData[e]||(this.aggregatedData[e]={});var i=this.aggregatedData[e][t];return i||(i=this.aggregatedData[e][t]={params:r||{}},n&&(i.custom=n)),i}get(e,t){return t?this.aggregatedData[e]&&this.aggregatedData[e][t]:this.aggregatedData[e]}take(e){for(var t={},r="",n=!1,i=0;i t.max&&(t.max=e),e 2&&void 0!==arguments[2])||arguments[2];super(e,r,j.t,n),c.il&&((0,t.OP)(e).initHidden=Boolean("hidden"===document.visibilityState),(0,N.N)((()=>(0,s.p)("docHidden",[(0,p.z)()],void 0,j.t,this.ee)),!0),(0,O.bP)("pagehide",(()=>(0,s.p)("winPagehide",[(0,p.z)()],void 0,j.t,this.ee))),this.importAggregator())}}var P=i(3081);class C extends h{static featureName=P.t9;constructor(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];super(e,t,P.t9,r),this.importAggregator()}}var R,I=i(2210),k=i(1214),H=i(2177),L={};try{R=localStorage.getItem("__nr_flags").split(","),console&&"function"==typeof console.log&&(L.console=!0,-1!==R.indexOf("dev")&&(L.dev=!0),-1!==R.indexOf("nr_dev")&&(L.nrDev=!0))}catch(e){}function z(e){try{L.console&&z(e)}catch(e){}}L.nrDev&&H.ee.on("internal-error",(function(e){z(e.stack)})),L.dev&&H.ee.on("fn-err",(function(e,t,r){z(r.stack)})),L.dev&&(z("NR AGENT IN DEVELOPMENT MODE"),z("flags: "+(0,b.D)(L,(function(e,t){return e})).join(", ")));var M=i(6660);class B extends h{static featureName=M.t;constructor(r,n){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];super(r,n,M.t,i),this.skipNext=0;try{this.removeOnAbort=new AbortController}catch(e){}const o=this;o.ee.on("fn-start",(function(e,t,r){o.abortHandler&&(o.skipNext+=1)})),o.ee.on("fn-err",(function(t,r,n){o.abortHandler&&!n[M.A]&&((0,I.X)(n,M.A,(function(){return!0})),this.thrown=!0,(0,s.p)("err",[n,(0,p.z)()],void 0,e.D.jserrors,o.ee))})),o.ee.on("fn-end",(function(){o.abortHandler&&!this.thrown&&o.skipNext>0&&(o.skipNext-=1)})),o.ee.on("internal-error",(function(t){(0,s.p)("ierr",[t,(0,p.z)(),!0],void 0,e.D.jserrors,o.ee)})),this.origOnerror=c._A.onerror,c._A.onerror=this.onerrorHandler.bind(this),c._A.addEventListener("unhandledrejection",(t=>{const r=function(e){let t="Unhandled Promise Rejection: ";if(e instanceof Error)try{return e.message=t+e.message,e}catch(t){return e}if(void 0===e)return new Error(t);try{return new Error(t+(0,D.P)(e))}catch(e){return new Error(t)}}(t.reason);(0,s.p)("err",[r,(0,p.z)(),!1,{unhandledPromiseRejection:1}],void 0,e.D.jserrors,this.ee)}),(0,O.m$)(!1,this.removeOnAbort?.signal)),(0,k.gy)(this.ee),(0,k.BV)(this.ee),(0,k.em)(this.ee),(0,t.OP)(r).xhrWrappable&&(0,k.Kf)(this.ee),this.abortHandler=this.#e,this.importAggregator()}#e(){this.removeOnAbort?.abort(),this.abortHandler=void 0}onerrorHandler(t,r,n,i,o){"function"==typeof this.origOnerror&&this.origOnerror(...arguments);try{this.skipNext?this.skipNext-=1:(0,s.p)("err",[o||new F(t,r,n),(0,p.z)()],void 0,e.D.jserrors,this.ee)}catch(t){try{(0,s.p)("ierr",[t,(0,p.z)(),!0],void 0,e.D.jserrors,this.ee)}catch(e){}}return!1}}function F(e,t,r){this.message=e||"Uncaught error with no additional information",this.sourceURL=t,this.line=r}let U=1;const q="nr@id";function G(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===c._A?0:(0,I.X)(e,q,(function(){return U++}))}function V(e){if("string"==typeof e&&e.length)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,D.P)(e).length}catch(e){return}}}var X=i(7243);class W{constructor(e){this.agentIdentifier=e,this.generateTracePayload=this.generateTracePayload.bind(this),this.shouldGenerateTrace=this.shouldGenerateTrace.bind(this)}generateTracePayload(e){if(!this.shouldGenerateTrace(e))return null;var r=(0,t.DL)(this.agentIdentifier);if(!r)return null;var n=(r.accountID||"").toString()||null,i=(r.agentID||"").toString()||null,o=(r.trustKey||"").toString()||null;if(!n||!i)return null;var a=(0,_.M)(),s=(0,_.Ht)(),c=Date.now(),u={spanId:a,traceId:s,timestamp:c};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(u.traceContextParentHeader=this.generateTraceContextParentHeader(a,s),u.traceContextStateHeader=this.generateTraceContextStateHeader(a,c,n,i,o)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(u.newrelicHeader=this.generateTraceHeader(a,s,c,n,i,o)),u}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,o){if(!("function"==typeof c._A?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return o&&n!==o&&(a.d.tk=o),btoa((0,D.P)(a))}shouldGenerateTrace(e){return this.isDtEnabled()&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var r=!1,n={};if((0,t.Mt)(this.agentIdentifier,"distributed_tracing")&&(n=(0,t.P_)(this.agentIdentifier).distributed_tracing),e.sameOrigin)r=!0;else if(n.allowed_origins instanceof Array)for(var i=0;i 2&&void 0!==arguments[2])||arguments[2];super(r,n,Z.t,i),(0,t.OP)(r).xhrWrappable&&(this.dt=new W(r),this.handler=(e,t,r,n)=>(0,s.p)(e,t,r,n,this.ee),(0,k.u5)(this.ee),(0,k.Kf)(this.ee),function(r,n,i,o){function a(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=E,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},e.addEventListener("load",(function(r){_(t,e)}),(0,O.m$)(!1)),c.IF||e.addEventListener("progress",(function(e){t.lastSize=e.loaded}),(0,O.m$)(!1))}function s(e){this.params={method:e[0]},T(this,e[1]),this.metrics={}}function u(e,n){var i=(0,t.DL)(r);i.xpid&&this.sameOrigin&&n.setRequestHeader("X-NewRelic-ID",i.xpid);var a=o.generateTracePayload(this.parsedOrigin);if(a){var s=!1;a.newrelicHeader&&(n.setRequestHeader("newrelic",a.newrelicHeader),s=!0),a.traceContextParentHeader&&(n.setRequestHeader("traceparent",a.traceContextParentHeader),a.traceContextStateHeader&&n.setRequestHeader("tracestate",a.traceContextStateHeader),s=!0),s&&(this.dt=a)}}function d(e,t){var r=this.metrics,i=e[0],o=this;if(r&&i){var a=V(i);a&&(r.txSize=a)}this.startTime=(0,p.z)(),this.listener=function(e){try{"abort"!==e.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==e.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof t.onload)&&"function"==typeof o.end)&&o.end(t)}catch(e){try{n.emit("internal-error",[e])}catch(e){}}};for(var s=0;s 1?e[1]=i:e.push(i)}else e[0]&&e[0].headers&&s(e[0].headers,n)&&(this.dt=n);function s(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function x(e,t){this.params={},this.metrics={},this.startTime=(0,p.z)(),this.dt=t,e.length>=1&&(this.target=e[0]),e.length>=2&&(this.opts=e[1]);var r,n=this.opts||{},i=this.target;"string"==typeof i?r=i:"object"==typeof i&&i instanceof Y?r=i.url:c._A?.URL&&"object"==typeof i&&i instanceof URL&&(r=i.href),T(this,r);var o=(""+(i&&i instanceof Y&&i.method||n.method||"GET")).toUpperCase();this.params.method=o,this.txSize=V(n.body)||0}function A(t,r){var n;this.endTime=(0,p.z)(),this.params||(this.params={}),this.params.status=r?r.status:0,"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);var o={txSize:this.txSize,rxSize:n,duration:(0,p.z)()-this.startTime};i("xhr",[this.params,o,this.startTime,this.endTime,"fetch"],this,e.D.ajax)}function E(t){var r=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(var o=0;o 2&&void 0!==arguments[2])||arguments[2];super(e,t,we.t,r),this.importAggregator()}}new class{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,_.ky)(16);c._A?(this.agentIdentifier=t,this.sharedAggregator=new y({agentIdentifier:this.agentIdentifier}),this.features={},this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(m),Object.assign(this,(0,a.j)(this.agentIdentifier,e,e.loaderType||"agent")),this.start()):(0,l.Z)("Failed to initial the agent. Could not determine the runtime environment.")}get config(){return{info:(0,t.C5)(this.agentIdentifier),init:(0,t.P_)(this.agentIdentifier),loader_config:(0,t.DL)(this.agentIdentifier),runtime:(0,t.OP)(this.agentIdentifier)}}start(){const t="features";try{const r=n(this.agentIdentifier),i=[...this.desiredFeatures];i.sort(((t,r)=>e.p[t.featureName]-e.p[r.featureName])),i.forEach((t=>{if(r[t.featureName]||t.featureName===e.D.pageViewEvent){const n=function(t){switch(t){case e.D.ajax:return[e.D.jserrors];case e.D.sessionTrace:return[e.D.ajax,e.D.pageViewEvent];case e.D.sessionReplay:return[e.D.sessionTrace];case e.D.pageViewTiming:return[e.D.pageViewEvent];default:return[]}}(t.featureName);n.every((e=>r[e]))||(0,l.Z)("".concat(t.featureName," is enabled but one or more dependent features has been disabled (").concat((0,D.P)(n),"). This may cause unintended consequences or missing data...")),this.features[t.featureName]=new t(this.agentIdentifier,this.sharedAggregator)}})),(0,T.Qy)(this.agentIdentifier,this.features,t)}catch(e){(0,l.Z)("Failed to initialize all enabled instrument classes (agent aborted) -",e);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,T.fP)();return delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.[t],delete this.sharedAggregator,r.ee?.abort(),delete r.ee?.get(this.agentIdentifier),!1}}}({features:[J,m,S,class extends h{static featureName=oe;constructor(t,r){if(super(t,r,oe,!(arguments.length>2&&void 0!==arguments[2])||arguments[2]),!c.il)return;const n=this.ee;let i;(0,k.QU)(n),this.eventsEE=(0,k.em)(n),this.eventsEE.on(se,(function(e,t){this.bstStart=(0,p.z)()})),this.eventsEE.on(ae,(function(t,r){(0,s.p)("bst",[t[0],r,this.bstStart,(0,p.z)()],void 0,e.D.sessionTrace,n)})),n.on(ce+ne,(function(e){this.time=(0,p.z)(),this.startPath=location.pathname+location.hash})),n.on(ce+ie,(function(t){(0,s.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,e.D.sessionTrace,n)}));try{i=new PerformanceObserver((t=>{const r=t.getEntries();(0,s.p)(te,[r],void 0,e.D.sessionTrace,n)})),i.observe({type:re,buffered:!0})}catch(e){}this.importAggregator({resourceObserver:i})}},C,xe,B,class extends h{static featureName=de;constructor(e,r){if(super(e,r,de,!(arguments.length>2&&void 0!==arguments[2])||arguments[2]),!c.il)return;if(!(0,t.OP)(e).xhrWrappable)return;try{this.removeOnAbort=new AbortController}catch(e){}let n,i=0;const o=this.ee.get("tracer"),a=(0,k._L)(this.ee),s=(0,k.Lg)(this.ee),u=(0,k.BV)(this.ee),d=(0,k.Kf)(this.ee),f=this.ee.get("events"),l=(0,k.u5)(this.ee),h=(0,k.QU)(this.ee),g=(0,k.Gm)(this.ee);function m(e,t){h.emit("newURL",[""+window.location,t])}function v(){i++,n=window.location.hash,this[ve]=(0,p.z)()}function b(){i--,window.location.hash!==n&&m(0,!0);var e=(0,p.z)();this[pe]=~~this[pe]+e-this[ve],this[ye]=e}function y(e,t){e.on(t,(function(){this[t]=(0,p.z)()}))}this.ee.on(ve,v),s.on(be,v),a.on(be,v),this.ee.on(ye,b),s.on(ge,b),a.on(ge,b),this.ee.buffer([ve,ye,"xhr-resolved"],this.featureName),f.buffer([ve],this.featureName),u.buffer(["setTimeout"+le,"clearTimeout"+fe,ve],this.featureName),d.buffer([ve,"new-xhr","send-xhr"+fe],this.featureName),l.buffer([me+fe,me+"-done",me+he+fe,me+he+le],this.featureName),h.buffer(["newURL"],this.featureName),g.buffer([ve],this.featureName),s.buffer(["propagate",be,ge,"executor-err","resolve"+fe],this.featureName),o.buffer([ve,"no-"+ve],this.featureName),a.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"],this.featureName),y(l,me+fe),y(l,me+"-done"),y(a,"new-jsonp"),y(a,"jsonp-end"),y(a,"cb-start"),h.on("pushState-end",m),h.on("replaceState-end",m),window.addEventListener("hashchange",m,(0,O.m$)(!0,this.removeOnAbort?.signal)),window.addEventListener("load",m,(0,O.m$)(!0,this.removeOnAbort?.signal)),window.addEventListener("popstate",(function(){m(0,i>1)}),(0,O.m$)(!0,this.removeOnAbort?.signal)),this.abortHandler=this.#e,this.importAggregator()}#e(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}],loaderType:"spa"})})(),window.NRBA=o})(); window.jQuery || document.write(' ') CKEDITOR_BASEPATH='https://f1000research.com/js/vendor/ckeditor/' window.reactTheme = 'research'; window.MathJax = { CommonHTML: { linebreaks: { automatic: true } }, 'HTML-CSS': { linebreaks: { automatic: true } }, SVG: { linebreaks: { automatic: true } }, AuthorInit: function() { MathJax.Hub.Register.MessageHook('End Process', function () { let timeout = false; // holder for timeout id const delay = 250; // delay after event is "complete" to run callback const reflowMath = function() { const dispFormulas = document.querySelectorAll('.disp-formula.panel'); if (!dispFormulas) { return; } for (const dispFormula of dispFormulas) { const child = dispFormula.querySelector('.MathJax_Preview').nextSibling.firstChild; const isMultiline = MathJax.Hub.getAllJax(dispFormula)[0].root.isMultiline; if (dispFormula.offsetWidth < child.offsetWidth || isMultiline) { MathJax.Hub.Queue(['Rerender', MathJax.Hub, dispFormula]); } } }; window.addEventListener('resize', function() { clearTimeout(timeout); // clear the timeout timeout = setTimeout(reflowMath, delay); // start timing for event "completion" }); }); }, }; if (window.location.hash == '#_=_'){ window.location = window.location.href.split('#')[0] } !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function() {n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)} ;if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '1641728616063202'); fbq('track', "PixelInitialized", {}); (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:2318163,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); search file_upload Submit your research search menu close search Browse Gateways & Collections How to Publish Submit your Research My Submissions Article Guidelines Article Guidelines (New Versions) Open Data, Software and Code Guidelines Open Data and Accessible Source Materials Guidelines (HSS) Open Data, Software and Code Guidelines (PSE) Prepublication Checks Production Process Posters and Slides Guidelines Document Guidelines Article Processing Charges Peer Review Finding Article Reviewers About How it Works For Reviewers Our Advisors Policies Glossary FAQs For Developers Newsroom Contact My Research Submissions Content and Tracking Alerts My Details Sign In file_upload Submit your research { "@context": "https://schema.org", "@type": "ScholarlyArticle", "mainEntityOfPage": { "@type": "WebPage", "@id": "https://f1000research.com/articles/15-690" }, "headline": "Web-based Machine Learning Model for Predicting Chronic Kidney Disease in Patients with Type 2 Diabetes...", "datePublished": "2026-05-09T05:14:17", "dateModified": "2026-05-09T05:14:17", "author": [ { "@type": "Person", "name": "Lily Kresnowati" }, { "@type": "Person", "name": "Suhartono Suhartono" }, { "@type": "Person", "name": "Zahroh Shaluhiyah" }, { "@type": "Person", "name": "Bagoes Widjanarko" }, { "@type": "Person", "name": "Faizul Hasan" } ], "publisher": { "@type": "Organization", "name": "F1000Research", "logo": { "@type": "ImageObject", "url": "https://f1000research.com/img/AMP/F1000Research_image.png", "height": 480, "width": 60 } }, "image": { "@type": "ImageObject", "url": "https://f1000research.com/img/AMP/F1000Research_image.png", "height": 1200, "width": 150 }, "description": " Background Chronic kidney disease (CKD) is a serious complication of type 2 diabetes (T2DM), particularly in low- and middle-income countries with limited access to early diagnosis. Predicting CKD risk using routine clinical data could enable earlier nephroprotective care. This study developed and internally validated a machine learning-based web application to predict incident CKD among T2DM patients in Indonesia’s national health insurance program (Prolanis). Methods A machine learning prediction model was conducted using BPJS Prolanis data (2017–2023). Adults (≥18 years) with T2DM and no prior CKD were included. Six algorithms (Logistic Regression, Random Forest, Decision Tree, XGBoost, LightGBM, CatBoost) were trained to predict CKD. Performance was assessed via accuracy, precision, recall, F1 score, and AUC. SHAP was used for interpretability. Results Among 7,581 individuals, 864 (11.4%) developed CKD. CatBoost achieved the best performance (AUC = 0.847, accuracy = 0.797, precision = 0.643, recall = 0.525, F1 = 0.578). SHAP identified rapid-acting insulin analogues, amlodipine, furosemide, high blood urea nitrogen, and folic acid as key positive predictors. Advanced age and higher comorbidity burden increased risk, while chronic ischaemic heart disease and dental pulp diseases appeared protective—likely due to healthcare utilization bias. A web-based risk calculator was developed. Conclusions The CatBoost-based web app demonstrated strong discriminative ability for predicting incident CKD in T2DM patients using routine claims data. This tool may support risk stratification in primary care settings across Indonesia and similar low-resource environments. " } { "@context": "http://schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": "1", "item": { "@id": "https://f1000research.com/", "name": "Home" } }, { "@type": "ListItem", "position": "2", "item": { "@id": "https://f1000research.com/browse/articles", "name": "Browse" } }, { "@type": "ListItem", "position": "3", "item": { "@id": "https://f1000research.com/articles/15-690/v1", "name": "Web-based Machine Learning Model for Predicting Chronic Kidney Disease..." } } ] } Home Browse Web-based Machine Learning Model for Predicting Chronic Kidney Disease... ALL Metrics - Views Downloads Get PDF Get XML Cite How to cite this article Kresnowati L, Suhartono S, Shaluhiyah Z et al. Web-based Machine Learning Model for Predicting Chronic Kidney Disease in Patients with Type 2 Diabetes Mellitus: A Multicenter Study [version 1; peer review: awaiting peer review] . F1000Research 2026, 15 :690 ( https://doi.org/10.12688/f1000research.179913.1 ) NOTE: If applicable, it is important to ensure the information in square brackets after the title is included in all citations of this article. Close Copy Citation Details Export Export Citation Sciwheel EndNote Ref. Manager Bibtex ProCite Sente EXPORT Select a format first Track Share ▬ ✚ Research Article Web-based Machine Learning Model for Predicting Chronic Kidney Disease in Patients with Type 2 Diabetes Mellitus: A Multicenter Study [version 1; peer review: awaiting peer review] Lily Kresnowati 1 , Suhartono Suhartono 2 , Zahroh Shaluhiyah https://orcid.org/0000-0003-2663-7918 3 , Bagoes Widjanarko 3 , Faizul Hasan https://orcid.org/0000-0001-7802-1328 4 Lily Kresnowati 1 , Suhartono Suhartono 2 , [...] Zahroh Shaluhiyah https://orcid.org/0000-0003-2663-7918 3 , Bagoes Widjanarko 3 , Faizul Hasan https://orcid.org/0000-0001-7802-1328 4 PUBLISHED 09 May 2026 Author details Author details 1 Doctoral Program of Public Health, Faculty of Public Health, Universitas Diponegoro, Semarang, Central Java, Indonesia 2 Department of Environmental Health, Diponegoro University School of Public Health, Semarang, Central Java, Indonesia 3 Department of Health Promotion and Behavioral Science, Faculty of Public Health, Universitas Diponegoro, Semarang, Central Java, Indonesia 4 Faculty of Nursing, Chulalongkorn University, Bangkok, Bangkok, Thailand Lily Kresnowati Roles: Conceptualization, Data Curation, Formal Analysis, Funding Acquisition, Investigation, Methodology, Project Administration, Resources, Software, Validation, Visualization, Writing – Original Draft Preparation, Writing – Review & Editing Suhartono Suhartono Roles: Supervision, Validation, Writing – Original Draft Preparation, Writing – Review & Editing Zahroh Shaluhiyah Roles: Supervision, Validation, Writing – Original Draft Preparation, Writing – Review & Editing Bagoes Widjanarko Roles: Supervision, Validation, Writing – Original Draft Preparation, Writing – Review & Editing Faizul Hasan Roles: Conceptualization, Data Curation, Formal Analysis, Funding Acquisition, Investigation, Methodology, Project Administration, Resources, Software, Supervision, Validation, Visualization, Writing – Original Draft Preparation, Writing – Review & Editing OPEN PEER REVIEW REVIEWER STATUS AWAITING PEER REVIEW Abstract Background Chronic kidney disease (CKD) is a serious complication of type 2 diabetes (T2DM), particularly in low- and middle-income countries with limited access to early diagnosis. Predicting CKD risk using routine clinical data could enable earlier nephroprotective care. This study developed and internally validated a machine learning-based web application to predict incident CKD among T2DM patients in Indonesia’s national health insurance program (Prolanis). Methods A machine learning prediction model was conducted using BPJS Prolanis data (2017–2023). Adults (≥18 years) with T2DM and no prior CKD were included. Six algorithms (Logistic Regression, Random Forest, Decision Tree, XGBoost, LightGBM, CatBoost) were trained to predict CKD. Performance was assessed via accuracy, precision, recall, F1 score, and AUC. SHAP was used for interpretability. Results Among 7,581 individuals, 864 (11.4%) developed CKD. CatBoost achieved the best performance (AUC = 0.847, accuracy = 0.797, precision = 0.643, recall = 0.525, F1 = 0.578). SHAP identified rapid-acting insulin analogues, amlodipine, furosemide, high blood urea nitrogen, and folic acid as key positive predictors. Advanced age and higher comorbidity burden increased risk, while chronic ischaemic heart disease and dental pulp diseases appeared protective—likely due to healthcare utilization bias. A web-based risk calculator was developed. Conclusions The CatBoost-based web app demonstrated strong discriminative ability for predicting incident CKD in T2DM patients using routine claims data. This tool may support risk stratification in primary care settings across Indonesia and similar low-resource environments. READ ALL READ LESS Keywords chronic kidney disease, type 2 diabetes mellitus, machine learning, prediction model, web-based calculator. Corresponding Author(s) Lily Kresnowati ( [email protected] ) Faizul Hasan ( [email protected] ) Close Corresponding authors: Lily Kresnowati, Faizul Hasan Competing interests: No competing interests were disclosed. Grant information: The author(s) declared that no grants were involved in supporting this work. Copyright: © 2026 Kresnowati L et al . This is an open access article distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. How to cite: Kresnowati L, Suhartono S, Shaluhiyah Z et al. Web-based Machine Learning Model for Predicting Chronic Kidney Disease in Patients with Type 2 Diabetes Mellitus: A Multicenter Study [version 1; peer review: awaiting peer review] . F1000Research 2026, 15 :690 ( https://doi.org/10.12688/f1000research.179913.1 ) First published: 09 May 2026, 15 :690 ( https://doi.org/10.12688/f1000research.179913.1 ) Latest published: 09 May 2026, 15 :690 ( https://doi.org/10.12688/f1000research.179913.1 ) Introduction Chronic kidney disease (CKD) constitutes a significant global public health challenge, with particularly concerning trends observed in low- and middle-income nations. 1 , 2 Characterised by a gradual decline in renal function, CKD significantly elevates the risks of cardiovascular incidents, end-stage renal disease (ESRD), hospitalisation, and early mortality. 3 Approximately 10% of persons globally suffer from CKD, with diabetes mellitus and hypertension responsible for more than half of the cases. 4 The prevalence of CKD in Indonesia has consistently increased over the last decade, primarily due to the rising incidence of type 2 diabetes mellitus (T2DM), which currently impacts around 10.7 million adults nationwide. 5 , 6 The economic and societal burdens are significant: 7 , 8 chronic kidney disease necessitates continuous care, regular monitoring, and, in advanced stages, expensive renal replacement therapy. Individuals with T2DM are at an elevated risk of developing CKD, referred to as diabetic kidney disease (DKD). Between 20% and 40% of patients with T2DM will develop DKD during their lifetime, establishing diabetes as the predominant cause of End-Stage Renal Disease in numerous countries. 9 – 12 The etiology of DKD include intricate connections among hyperglycemia, haemodynamic changes, inflammation, and genetic predisposition. 13 , 14 Hyperglycemia triggers glomerular hyperfiltration, oxidative stress, and the buildup of advanced glycation end-products, ultimately leading to glomerulosclerosis, tubulointerstitial fibrosis, and progressive nephron loss. 14 , 15 Well-defined risk factors for DKD encompass advanced age, male gender, prolonged diabetes duration, higher haemoglobin A1c levels, hypertension, dyslipidaemia, obesity, and tobacco use. 9 , 16 Timely diagnosis of T2DM patients at increased CKD risk is essential for the initiation of effective nephroprotective strategies: stringent glycaemic management, blood pressure control through RAAS inhibition, and lifestyle modifications. Conventional DKD risk prediction techniques predominantly employ logistic regression or Cox proportional hazards, utilising a restricted set of predetermined factors. Despite achieving moderate performance (AUC values generally between 0.70 and 0.80), these models exhibit significant limitations: they presuppose linear relationships between predictors and outcomes, failing to adequately represent the intricate biology of DKD; they frequently necessitate comprehensive data on all predictors, which is often inaccessible in resource-limited environments; and many are developed from specific clinical trial populations or small, single-center cohorts, thereby raising concerns regarding their generalisability. 17 , 18 Machine learning (ML) provides a robust alternative for predicting clinical risks. Ensemble tree-based methodologies—specifically CatBoost, XGBoost, and LightGBM—exhibit considerable promise owing to their resilience against outliers, capacity to manage heterogeneous data types, and intrinsic mechanisms for addressing missing values, frequently surpassing logistic regression with AUCs ranging from 0.80 to 0.90. 19 , 20 Nonetheless, significant deficiencies persist: the majority of ML research originates from high-income nations, with scant contributions from Southeast Asia, particularly Indonesia; numerous models depend on laboratory metrics that are not easily accessible in primary care settings; practical clinical application featuring user-friendly web interfaces is restricted; and model interpretability has only recently been tackled via SHAP analysis. 21 Indonesia’s national health insurance system (BPJS Kesehatan) encompasses roughly 80% of the populace and administers Prolanis, a chronic disease management initiative that methodically enrols T2DM patients and produces extensive real-world clinical data. Nonetheless, no machine learning-based instrument has been specially designed for the Indonesian T2DM population to forecast incident chronic kidney disease utilising frequently gathered Prolanis data. This study sought to create and internally validate a machine learning predictive model for incident chronic kidney disease in patients with T2DM enrolled in BPJS Indonesia’s national health insurance chronic disease management program (Prolanis), utilising routinely gathered demographic, clinical, and medication data. The study aimed to improve interpretability through SHAP analysis and to offer a practical web-based calculator similar to previously published AI risk assessment tools. 22 Material and methods Study design and data source We predictive ML study utilising a sample dataset from Indonesia’s Badan Penyelenggara Jaminan Sosial (BPJS) Chronic Disease Management Program, referred to as Prolanis. The collection included anonymised patient data gathered from January 1, 2017, to December 31, 2023. The BPJS Prolanis database comprises organised data on patient demographics, clinical diagnoses (classified according to the International Classification of Diseases, 10th Revision [ICD-10]), medication prescriptions (classified using the Anatomical Therapeutic Chemical [ATC] system), laboratory results, and outpatient visit records. The research adhered to the Transparent Reporting of a Multivariable Prediction Model for Individual Prognosis or Diagnosis (TRIPOD) standards. Study population The trial cohort consisted of patients diagnosed with T2DM who engaged in the Prolanis program. Adults (≥18 years) were included if they had a minimum of two documented outpatient visits during the study period. The index date was established as the date of the initial T2DM diagnosis documented within the observation period. Patients were excluded if they had a previous diagnosis of CKD at the start of their monitoring period. CKD was categorised with ICD-10 codes N18.1–N18.9 (chronic kidney disease stages 1–5, unspecified), alongside Z49 (dialysis care) and Z99.2 (dependency on renal dialysis). Furthermore, patients with absent outcome data or insufficient essential characteristic information were removed from the study. Outcome definition The primary outcome of this study was the onset of incident CKD after the diagnostic date of T2DM. CKD was established by a combination of diagnostic and laboratory criteria to guarantee thorough case identification. A patient was classified as having developed CKD if they met one of the following criteria: (1) a new ICD-10 diagnosis code for CKD (N18.1–N18.9, Z49 for dialysis care, or Z99.2 for renal dialysis dependence) recorded during the follow-up period, or (2) laboratory evidence of renal dysfunction noted in structured clinical documentation, defined as an estimated glomerular filtration rate (eGFR) below 60 mL/min/1.73m 2 or the presence of albuminuria. Patients were monitored from the index date until the occurrence of the earliest event: diagnosis of CKD, death, conclusion of accessible data (December 31, 2023), or the last recorded clinical visit, whichever transpired first. Data collection and input features Data at the patient level were retrieved from the BPJS Prolanis database, including demographic details, clinical comorbidities, drug prescriptions, and available laboratory findings. Demographic characteristics encompassed age as a continuous variable (quantified in years), sex (male or female), and overweight or obesity status, defined as a body mass index of 25 kg/m 2 or higher when such data were accessible. Comorbidities were detected with ICD-10 codes recorded on the index date or within the year prior; they encompassed hypertension, cardiovascular disease, heart failure, and the aggregate of unique diagnoses as an indicator of overall illness burden. Medication utilisation was assessed using Anatomical Therapeutic Chemical (ATC) codes, with a patient deemed exposed if they had a minimum of one prescription fill for a specific medication within the six months before to or subsequent to the index date. Medications of interest encompassed antidiabetic therapies (notably rapid-acting insulin analogues), aspirin, proton pump inhibitors (PPIs), non-steroidal anti-inflammatory drugs (NSAIDs), amlodipine, furosemide, folic acid, and other antihypertensive or antiplatelet agents. Laboratory data, particularly blood urea nitrogen (BUN) levels, were obtained where accessible. All features, with the exception of age, were binarized to indicate presence or absence, although age was maintained as a continuous variable. Only instances with complete data on essential features and the outcome were included in the final analysis. Model development and internal validation We developed and internally validated six ML algorithms aimed to predict incident CKD: Logistic Regression, Random Forest, Decision Tree, Extreme Gradient Boosting (XGBoost), Light Gradient Boosting Machine (LGBM), and Categorical Boosting (CatBoost). All models were executed utilising the PyCaret open-source machine learning package in Python. The complete dataset was randomly divided into a training set consisting of 80% of the patients and an internal validation (test) set including the remaining 20%, with stratification by outcome status to maintain the proportion of CKD cases in both subsets. Hyperparameters for each algorithm were calibrated using 10-fold cross-validation on the training dataset to enhance model performance and mitigate overfitting. Subsequent to hyperparameter adjustment, each model was trained on the training set and subsequently evaluated on the hold-out test set to determine its predictive efficacy on novel data. The CatBoost model, exhibiting superior overall performance, was chosen as the final model for subsequent interpretation and feature importance analysis. Performance metrics The model’s performance was evaluated using a thorough array of conventional classification measures to facilitate comparison among the six algorithms. Accuracy was determined as the ratio of right predictions (true positives plus true negatives) to total predictions. Precision, defined as the ratio of true positives to the sum of true positives and false positives, was employed to reduce false-positive predictions. Recall, or sensitivity, was computed as the ratio of true positives to the total of true positives and false negatives, indicating the model’s proficiency in accurately identifying actual CKD cases. The F1 score, defined as the harmonic mean of precision and recall, is calculated as 2 times (precision × recall) divided by (precision + recall), offering a balanced assessment of model accuracy that considers both false positives and false negatives. The area under the receiver operating characteristic curve (ROC-AUC) was employed to evaluate the model’s capacity to differentiate between patients who developed CKD and those who did not across various classification thresholds; an AUC of 0.5 signifies random performance, whereas an AUC of 1.0 denotes perfect discrimination. Feature importance and explainability SHapley Additive exPlanations (SHAP) were employed to explain model predictions and assess the contribution of each feature to the ultimate model output. A summary plot was created to illustrate the ten most significant elements. In the SHAP summary graphic, red signifies elevated feature values (augmenting CKD probability), whereas blue denotes diminished feature values (reducing CKD probability). SHAP values were calculated for the CatBoost model, which exhibited the greatest ROC-AUC among all evaluated algorithms. Statistical analysis All statistical analyses were conducted utilising Python (version 3.9) alongside the PyCaret, scikit-learn, and SHAP libraries. Continuous data are expressed as mean ± standard deviation (SD), whereas categorical variables are represented as frequencies and percentages. Baseline parameters were compared between individuals who developed CKD and those who did not, utilising independent t-tests for continuous variables and chi-square testing for categorical data. A two-tailed p-value of less than 0.05 was deemed statistically significant. No correction for multiple comparisons was implemented owing to the exploratory character of the model construction. Ethics approval and consent to participate The study utilised de-identified secondary data obtained from the BPJS Kesehatan Prolanis database. Ethical approval was obtained from the Institutional Review Board of the Faculty of Public Health at Diponegoro University (approval number: 1.EA/KEPK-FKM/2026). The ethics committee waived the requirement for informed consent due to the study’s reliance on retrospective analysis of anonymised secondary data, which entailed no direct interaction with human participants and did not provide researchers with any identifying information at any point. Consequently, no written nor verbal informed permission was acquired, in accordance with the committee’s waiver. Results Study population and baseline characteristics A total of 7,581 patients were included in the final analysis. The average age of the cohort was 54.2 years (SD ± 9.0), with a predominance of females (54.1%). The average number of hospital visits per patient was 90.8, and the average number of recorded diagnoses was 30.6. 27.2% of the population exhibited overweight or obesity. Hypertension was the predominant comorbidity at 9.7%, succeeded by cardiovascular disease at 5.1% and heart failure at 0.3%. Antidiabetics were prescribed to 85.6% of patients, aspirin to 51.2%, proton pump inhibitors to 17.4%, and NSAIDs to 1.6%. CKD was identified in 864 patients (11.4%) ( Table 1 ). Table 1. Demographic and outcome characteristic. Variables n (%) Total patients 7581 (100) Age, years (mean ± SD) 54.2 ± 9.0 Gender Male 3477 (45.9) Female 4104 (54.1) Visit numbers, mean 90.8 Overweight/Obesity 2061 (27.2) Comorbidity Hypertension 732 (9.7) Cardiovascular disease 385 (5.1) Heart failure 22 (0.3) Diagnoses count, mean 30.6 Drugs Antidiabetics 6493 (85.6) Aspirin 3879 (51.2) Proton Pump Inhibitors 1320 (17.4) NSAIDs 125 (1.6) Outcome of having CKD Yes 864 (11.4) No 6717 (88.6) Model development and internal validation Six machine learning algorithms were developed and subjected to internal validation. The CatBoost classifier attained the greatest ROC-AUC of 0.847, succeeded by Random Forest at 0.840, LightGBM at 0.836, Logistic Regression at 0.826, XGBoost at 0.821, and Decision Tree at 0.697. Regarding accuracy, Random Forest exhibited the highest performance at 0.810, whilst both CatBoost and Logistic Regression attained an accuracy of 0.797. CatBoost exhibited a precision of 0.643, a recall of 0.525, and an F1 score of 0.578 ( Table 2 ). The receiver operating characteristic (ROC) curves for all six models indicated that CatBoost had the highest true-positive rate over the majority of false-positive rate thresholds ( Figure 1 ). Table 2. Six nearest neighbor algorithms used in machine learning. Model Accuracy Precision Recall F1 ROC_AUC Lr 0.796992 0.651376 0.503546 0.568000 0.826196 Rf 0.810150 0.663934 0.574468 0.615970 0.839900 Dt 0.757519 0.540541 0.567376 0.553633 0.696731 Xgboost 0.798872 0.639344 0.553191 0.593156 0.820736 Lgbm 0.791353 0.622951 0.539007 0.577947 0.835673 Catboost 0.796992 0.643478 0.524823 0.578125 0.847373 Figure 1. Receiver operating characteristic curve of top 5 model. Feature importance and SHAP analysis SHAP research determined the ten most significant features influencing model predictions. Elevated levels (red) of rapid-acting insulin analogue utilisation were significantly correlated with a heightened likelihood of CKD, whereas diminished levels (blue) were linked to a reduced risk. Likewise, elevated levels of amlodipine, furosemide, folic acid, and BUN augmented the probability of CKD prediction. Conversely, advanced age, chronic ischaemic heart disease, and conditions affecting the pulp and periapical tissues were linked to a diminished predicted chance of CKD ( Figure 2 ). The protective association of chronic ischaemic heart disease and dental pulp problems may indicate healthcare-seeking behaviours or unaccounted confounding factors in claims-based data. Figure 2. Shapley additive explanations analysis summary plot for top 10 feature important. Web-based calculator A user-friendly web-based risk calculator was built utilising the CatBoost model to enhance clinical application. The calculator enables clinicians to input patient demographics, comorbidities, medications, and BUN values to get a personalised CKD risk assessment. The interface presents the primary contributing elements for each prediction, hence improving model transparency and clinical utility ( Figure 3 ). Figure 3. The web-based machine learning calculator system. Discussion To the best of our knowledge, this study is among the first to develop and validate a web-based machine learning tool for predicting incident CKD in patients with T2DM participating in Prolanis program in Indonesia. In this study of 7,581 patients, we established that the CatBoost classifier attained the superior discriminative performance, evidenced by a ROC-AUC of 0.847, an accuracy of 0.797, and an F1 score of 0.578. The findings indicate that machine learning models, especially gradient boosting algorithms, might function as efficient screening tools able to identify high-risk T2DM patients who could benefit from early nephroprotective therapies. Our results align with prior research utilising machine learning to predict CKD in diabetic cohorts. A thorough evaluation indicated that machine learning models for predicting diabetic kidney disease generally attain AUC values between 0.80 and 0.90, with gradient boosting techniques frequently surpassing conventional logistic regression. 19 A study by Song et al. (2020) utilising the Korean National Health Insurance Service database revealed that XGBoost attained an AUC of 0.84 for predicting CKD progression in T2DM patients, closely corresponding to our CatBoost AUC of 0.847. 20 The equivalent efficacy of CatBoost in our analysis underscores the increasing agreement that ensemble tree-based techniques are adept at managing the high-dimensional, heterogeneous clinical data characteristic of real-world electronic health records. However, our model’s recall (0.525) and F1 score (0.578) were moderate, suggesting that although the model has reasonable overall accuracy, it exhibits limited sensitivity in identifying all real CKD cases. This phenomenon is prevalent in imbalanced datasets where the result (CKD) manifests in merely 11.4% of the population, as observed in our cohort. Similar issues have been documented in other studies; for example, research utilising a Japanese claims database indicated a recall of 0.58 for CKD prediction employing random forests. 23 These findings emphasise the necessity for prudence in utilising such models as exclusive decision-making instruments and stress the significance of integrating machine learning predictions with clinical expertise. Our SHAP analysis discovered numerous significant predictors of incident CKD, many of which are physiologically plausible and align with current clinical knowledge. The utilisation of rapid-acting insulin analogues was one of the most significant predictors of CKD progression, with elevated values (shown in red on the SHAP summary plot) correlating with a heightened chance of CKD occurrence. This finding presumably indicates confounding by indication rather than a direct nephrotoxic effect of insulin. Patients necessitating rapid-acting insulin generally exhibit prolonged diabetes duration, suboptimal glycaemic management, and heightened insulin resistance—each serving as separate risk factors for diabetic kidney damage. The United Kingdom Prospective Diabetes Study (UKPDS) established that intensive glucose-lowering therapy, encompassing insulin, mitigated the progression of microalbuminuria, indicating that insulin administration serves as an indicator of disease severity rather than a causative factor in CKD. 24 , 25 The finding that the usage of amlodipine and furosemide elevates the probability of CKD can be interpreted as a reflection of the underlying disease burden. Amlodipine, a calcium channel blocker, is frequently used for hypertension, which impacts roughly 9.7% of our cohort and serves as a significant risk factor for the advancement of CKD. Furosemide, a loop diuretic, is frequently used to patients experiencing fluid overload, which may indicate deteriorating renal function. Although certain experimental studies have suggested that calcium channel blockers may expose glomerular capillaries to elevated systemic pressures, findings from major clinical trials, including the African American Study of Kidney Disease and Hypertension (AASK), indicate that CCB-based therapy may provide less renal protection compared with renin–angiotensin system blockade, particularly in patients with hypertensive CKD. 26 Consequently, while these agents remain appropriate when clinically indicated, their use—especially as monotherapy—should be accompanied by careful monitoring of renal function, given their comparatively limited renoprotective effects. In contrast, our SHAP analysis indicated that chronic ischaemic heart disease and conditions affecting the pulp and periapical tissues seemed to confer protective benefits against CKD, a result that necessitates meticulous interpretation. The observed protective effect of chronic ischaemic heart disease may be attributed to healthcare utilisation bias. Patients with diagnosed cardiovascular disease generally experience more frequent clinician visits, enhanced medication adherence (including antihypertensive and antiplatelet medications), and more rigorous control of risk factors than patients without these diagnoses. Research indicates that a high adherence rate to antihypertensive drugs (≥80%) correlates with a 33% decrease in the risk of end-stage renal disease. 27 – 29 Likewise, the protective influence of pulp and periapical tissue illnesses may indicate superior health-seeking behaviour, as individuals who obtain regular dental care are likely more proactive in managing diabetes. 30 Conversely, non-surgical periodontal therapy has demonstrated the capacity to diminish systemic inflammation, perhaps decelerating the progression of CKD, although residual confounding remains a possibility. The CatBoost model exhibited strong internal validation performance, with a ROC-AUC of 0.847, which is advantageous compared to previously published prediction methods for CKD. A systematic study assessed CKD prediction models and found that most attained AUC values ranging from 0.70 to 0.85, 17 positioning our model within the higher spectrum of available methods. Furthermore, our utilisation of standard administrative claims data—rather than specialised laboratory assessments or imaging—augments the model’s scalability and practical relevance in low- and middle-income contexts such as Indonesia, where access to advanced diagnostic testing may be constrained. Nonetheless, particular aspects of model performance warrant examination. The CatBoost model’s precision (0.643) significantly exceeded its recall (0.525), signifying that while the model predicts CKD, it is accurate about 64% of the time, although it fails to identify nearly half of the actual CKD cases. The compromise between precision and recall is permissible in a screening environment, when the objective is to identify a group of high-risk patients for confirmatory tests rather than to establish definite diagnoses. 31 The web-based tool we created enables doctors to modify the classification threshold according to local resources and preferences; for example, a reduced threshold enhances recall (identifying more true cases) while compromising precision (resulting in more false positives necessitating follow-up testing). This study possesses numerous significant strengths. The utilisation of an extensive, real-world dataset from Indonesia’s national health insurance program (BPJS) ensures significant validity for the Indonesian population and presents a model that can be incorporated into current digital health frameworks. The incorporation of several machine learning methods, accompanied by systematic hyperparameter optimisation and internal validation, adheres to best-practice guidelines for the building of predictive models. Third, employing SHAP analysis improves model interpretability, countering a prevalent critique of “black box” machine learning models in clinical medicine. 21 The development of an intuitive web-based calculator enables prospective integration into clinical practice. However, some limitations must be recognised. The retrospective cohort design includes potential biases associated with secondary data analysis, such as indication bias (as noted with insulin and antihypertensive drugs) and detection bias (patients with more frequent visits are more likely to receive a diagnosis of CKD). Secondly, the dataset was constrained to variables typically gathered in claims data; we could not include significant clinical factors such as smoking status, alcohol intake, physical activity, dietary habits, family history of kidney disease, comprehensive blood pressure readings, haemoglobin A1c levels, or urine albumin-to-creatinine ratios. The lack of these recognised risk indicators may have constrained model performance, especially recall. Third, the utilisation of ICD-10 codes for outcome determination may have led to misclassification bias, given chronic kidney disease is recognised to be under-represented in administrative databases. However, our composite definition, which incorporates laboratory criteria, partially alleviates this problem. The dataset was derived from a singular health insurance program in Indonesia, perhaps constraining its generalisability to other populations with varying genetic backgrounds, healthcare systems, and practice patterns. External validation with separate datasets from other areas or nations is crucial prior to extensive implementation. Fifth, the complete-case analysis, which excluded patients with missing data, may have created selection bias if the missingness was not entirely random. Sixth, we did not conduct external validation utilising a temporally or geographically separate dataset, which is a crucial subsequent step to verify the model’s generalisability and resilience against overfitting. Future study must emphasise the external validation of the CatBoost model with independent datasets from various healthcare systems in Southeast Asia and beyond. Prospective validation studies would evaluate the model’s real-world efficacy and clinical applicability, encompassing its influence on clinician decision-making and patient outcomes. Subsequent model enhancement could integrate supplementary predictors, including longitudinal changes in eGFR, albuminuria, and haemoglobin A1c, thereby augmenting predictive precision. Ultimately, interventional studies are required to ascertain if machine learning-guided risk classification results in earlier nephrology referrals, enhanced blood pressure and glucose management, and ultimately a decreased incidence of end-stage renal disease in high-risk T2DM patients. Conclusions This study effectively constructed and internally validated a CatBoost-based machine learning model for predicting incident CKD in patients with T2DM, utilising routinely obtained claims data from Indonesia’s BPJS Prolanis program. The model exhibited strong discriminative capability (AUC 0.847) and recognised clinically significant risk factors, such as rapid-acting insulin use, amlodipine, furosemide, and increased BUN levels. The model’s limited recall suggests scope for enhancement, while its elevated precision and interpretability through SHAP analysis underscore its prospective value as a screening instrument for identifying high-risk individuals for focused preventative measures. A web-based calculator was created to enhance clinical application. Future external validation and prospective implementation studies are necessary prior to extensive clinical deployment. Data availability statement: All datasets supporting this article are accessible via the following link: https://doi.org/10.5281/zenodo.19634415 . 32 Data are available under the terms of the Creative Commons Attribution 4.0 International . Extended data Zenodo: Supplementary data: https://doi.org/10.5281/zenodo.19521819 . 33 This project contains the following extended data: • Tripod Checklist.docx. Data are available under the terms of the Creative Commons Attribution 4.0 International . Acknowledgements We thank BPJS Kesehatan for access to the Prolanis dataset and the Faculty of Public Health, Universitas Diponegoro, for administrative and technical support. References 1. Francis A, Harhay MN, Ong ACM, et al. : Chronic kidney disease and the global public health agenda: an international consensus. Nat. Rev. Nephrol. 2024; 20 (7): 473–485. PubMed Abstract | Publisher Full Text 2. Ke C, Liang J, Liu M, et al. : Burden of chronic kidney disease and its risk-attributable burden in 137 low-and middle-income countries, 1990–2019: results from the global burden of disease study 2019. BMC Nephrol. 2022; 23 (1): 17. PubMed Abstract | Publisher Full Text | Free Full Text 3. Bikbov B, Purcell CA, Levey AS, et al. : Global, regional, and national burden of chronic kidney disease, 1990–2017: a systematic analysis for the Global Burden of Disease Study 2017. Lancet. 2020; 395 (10225): 709–733. PubMed Abstract | Publisher Full Text | Free Full Text 4. Kovesdy CP: Epidemiology of chronic kidney disease: an update 2022. Kidney Int. Suppl. 2022; 12 (1): 7–11. PubMed Abstract | Publisher Full Text | Free Full Text 5. Hustrini NM, Susalit E, Harimurti K, et al. : Prevalence, incidence and risk factors of chronic kidney disease in people with diabetes and hypertension, and the prognosis and kidney function decline in Indonesia: a multicentre cross-sectional study in primary care centres. BMJ Open. 2025; 15 (10): e103779. PubMed Abstract | Publisher Full Text | Free Full Text 6. Duncan BB, Magliano DJ, Boyko EJ: IDF diabetes atlas 11th edition 2025: global prevalence and projections for 2050. Oxford University Press; 2025; vol. 41 . : 7–9. Publisher Full Text 7. Johnston-Webber C, Bencomo-Bermudez I, Wharton G, et al. : A conceptual framework to assess the health, socioeconomic and environmental burden of chronic kidney disease. Health Policy. 2025; 152 : 105244. PubMed Abstract | Publisher Full Text 8. Jha V, al-Ghamdi SMG, Li G, et al. : Global economic burden associated with chronic kidney disease: a pragmatic review of medical costs for the inside CKD research programme. Adv. Ther. 2023; 40 (10): 4405–4420. PubMed Abstract | Publisher Full Text | Free Full Text 9. Thomas MC, Brownlee M, Susztak K, et al. : Diabetic kidney disease. Nat. Rev. Dis. Prim. 2015; 1 (1): 15018. PubMed Abstract | Publisher Full Text | Free Full Text 10. Thomas B: The global burden of diabetic kidney disease: time trends and gender gaps. Curr. Diab. Rep. 2019; 19 (4): 18. PubMed Abstract | Publisher Full Text 11. Hoogeveen EK: The epidemiology of diabetic kidney disease. Kidney and Dialysis. 2022; 2 (3): 433–442. Publisher Full Text 12. Chen Y, Lee K, Ni Z, et al. : Diabetic kidney disease: challenges, advances, and opportunities. Kidney diseases. 2020; 6 (4): 215–225. PubMed Abstract | Publisher Full Text | Free Full Text 13. Alicic RZ, Rooney MT, Tuttle KR: Diabetic kidney disease: challenges, progress, and possibilities. Clin. J. Am. Soc. Nephrol. 2017; 12 (12): 2032–2045. PubMed Abstract | Publisher Full Text | Free Full Text 14. Hauwanga WN, Abdalhamed TY, Ezike LA, et al. : The pathophysiology and vascular complications of diabetes in chronic kidney disease: A comprehensive review. Cureus. 2024; 16 (12). Publisher Full Text 15. Wu T, Ding L, Andoh V, et al. : The mechanism of hyperglycemia-induced renal cell injury in diabetic nephropathy disease: an update. Life. 2023; 13 (2): 539. PubMed Abstract | Publisher Full Text | Free Full Text 16. Zhang F, Li W: Association between the fatty liver index, metabolic dysfunction-associated steatotic liver disease, and the risk of kidney stones. Kidney Blood Press. Res. 2025; 50 (1): 115–130. PubMed Abstract | Publisher Full Text | Free Full Text 17. Collins GS, Omar O, Shanyinde M, et al. : A systematic review finds prediction models for chronic kidney disease were poorly reported and often developed using inappropriate methods. J. Clin. Epidemiol. 2013; 66 (3): 268–277. PubMed Abstract | Publisher Full Text 18. Feng Y, Wang AY, Jun M, et al. : Characterization of risk prediction models for acute kidney injury: a systematic review and meta-analysis. JAMA Netw. Open. 2023; 6 (5): e2313359. PubMed Abstract | Publisher Full Text | Free Full Text 19. Ravizza S, Huschto T, Adamov A, et al. : Predicting the early risk of chronic kidney disease in patients with diabetes using real-world data. Nat. Med. 2019; 25 (1): 57–59. PubMed Abstract | Publisher Full Text 20. Song X, Waitman LR, Yu ASL, et al. : Longitudinal risk prediction of chronic kidney disease in diabetic patients using a temporal-enhanced gradient boosting machine: retrospective cohort study. JMIR Med. Inform. 2020; 8 (1): e15510. PubMed Abstract | Publisher Full Text | Free Full Text 21. Lundberg SM, Lee S-I: A unified approach to interpreting model predictions. Adv. Neural Inf. Proces. Syst. 2017; 30 . 22. Hasan F, Muhtar MS, Wu D, et al. : Web-based artificial intelligence to predict cognitive impairment following stroke: A multicenter study. J. Stroke Cerebrovasc. Dis. 2024; 33 (8): 107826. PubMed Abstract | Publisher Full Text 23. Makino M, Yoshimoto R, Ono M, et al. : Artificial intelligence predicts the progression of diabetic kidney disease using big data machine learning. Sci. Rep. 2019; 9 (1): 11862. PubMed Abstract | Publisher Full Text | Free Full Text 24. Group, U.P.D.S.: Intensive blood-glucose control with sulphonylureas or insulin compared with conventional treatment and risk of complications in patients with type 2 diabetes (UKPDS 33). Lancet. 1998; 352 (9131): 837–853. Publisher Full Text 25. Usman M: Multiple Risk Factor Control in Individuals with Type 2 Diabetes and Microalbuminuria. University of Leicester; 2020. 26. Clemmer JS, Pruett WA, Hester RL: Predicting chronic responses to calcium channel blockade with a virtual population of African Americans with hypertensive chronic kidney disease. Frontiers in Systems Biology. 2024; 4 : 1327357. PubMed Abstract | Publisher Full Text | Free Full Text 27. Roy L, White-Guay B, Dorais M, et al. : Adherence to antihypertensive agents improves risk reduction of end-stage renal disease. Kidney Int. 2013; 84 (3): 570–577. PubMed Abstract | Publisher Full Text 28. Ma B, Jia Y, Wang H, et al. : Systematic Review and Network Meta-Analysis of the Comparative Effectiveness of Adherence Enhancement Strategies in Chronic Kidney Disease. J. Evid. Based Med. 2025; 18 (3): e70078. PubMed Abstract | Publisher Full Text 29. Burnier M, Egan BM: Adherence in hypertension: a review of prevalence, risk factors, impact, and management. Circ. Res. 2019; 124 (7): 1124–1140. Publisher Full Text 30. Ghanem AS, Nagy AC: Oral health's role in diabetes risk: a cross-sectional study with sociodemographic and lifestyle insights. Front. Endocrinol. (Lausanne). 2024; 15 : 1342783. PubMed Abstract | Publisher Full Text | Free Full Text 31. Powers DM: Evaluation: from precision, recall and F-measure to ROC, informedness, markedness and correlation. arXiv preprint arXiv:2010.16061. 2020. 32. Hasan F: ML Dataset. [Data set]. Zenodo. 2026. Publisher Full Text 33. Hasan F: Tripod Checklist. Zenodo. 2026. Publisher Full Text Comments on this article Comments (0) Version 1 VERSION 1 PUBLISHED 09 May 2026 ADD YOUR COMMENT Comment Author details Author details 1 Doctoral Program of Public Health, Faculty of Public Health, Universitas Diponegoro, Semarang, Central Java, Indonesia 2 Department of Environmental Health, Diponegoro University School of Public Health, Semarang, Central Java, Indonesia 3 Department of Health Promotion and Behavioral Science, Faculty of Public Health, Universitas Diponegoro, Semarang, Central Java, Indonesia 4 Faculty of Nursing, Chulalongkorn University, Bangkok, Bangkok, Thailand Lily Kresnowati Roles: Conceptualization, Data Curation, Formal Analysis, Funding Acquisition, Investigation, Methodology, Project Administration, Resources, Software, Validation, Visualization, Writing – Original Draft Preparation, Writing – Review & Editing Suhartono Suhartono Roles: Supervision, Validation, Writing – Original Draft Preparation, Writing – Review & Editing Zahroh Shaluhiyah Roles: Supervision, Validation, Writing – Original Draft Preparation, Writing – Review & Editing Bagoes Widjanarko Roles: Supervision, Validation, Writing – Original Draft Preparation, Writing – Review & Editing Faizul Hasan Roles: Conceptualization, Data Curation, Formal Analysis, Funding Acquisition, Investigation, Methodology, Project Administration, Resources, Software, Supervision, Validation, Visualization, Writing – Original Draft Preparation, Writing – Review & Editing Competing interests No competing interests were disclosed. Grant information The author(s) declared that no grants were involved in supporting this work. Article Versions (1) version 1 Published: 09 May 2026, 15:690 https://doi.org/10.12688/f1000research.179913.1 Copyright © 2026 Kresnowati L et al . This is an open access article distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. Download Export To Sciwheel Bibtex EndNote ProCite Ref. Manager (RIS) Sente metrics Views Downloads F1000Research - - PubMed Central info_outline Data from PMC are received and updated monthly. - - Citations open_in_new 0 open_in_new 0 open_in_new SEE MORE DETAILS CITE how to cite this article Kresnowati L, Suhartono S, Shaluhiyah Z et al. Web-based Machine Learning Model for Predicting Chronic Kidney Disease in Patients with Type 2 Diabetes Mellitus: A Multicenter Study [version 1; peer review: awaiting peer review] . F1000Research 2026, 15 :690 ( https://doi.org/10.12688/f1000research.179913.1 ) NOTE: If applicable, it is important to ensure the information in square brackets after the title is included in all citations of this article. COPY CITATION DETAILS track receive updates on this article Track an article to receive email alerts on any updates to this article. TRACK THIS ARTICLE Share Open Peer Review Current Reviewer Status: AWAITING PEER REVIEW AWAITING PEER REVIEW ? Key to Reviewer Statuses VIEW HIDE Approved The paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved Fundamental flaws in the paper seriously undermine the findings and conclusions Comments on this article Comments (0) Version 1 VERSION 1 PUBLISHED 09 May 2026 ADD YOUR COMMENT Comment keyboard_arrow_left keyboard_arrow_right Open Peer Review Reviewer Status AWAITING PEER REVIEW Comments on this article All Comments (0) Add a comment Sign up for content alerts Sign Up You are now signed up to receive this alert Browse by related subjects Alongside their report, reviewers assign a status to the article: Approved - the paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations - A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved - fundamental flaws in the paper seriously undermine the findings and conclusions Adjust parameters to alter display View on desktop for interactive features Includes Interactive Elements View on desktop for interactive features Competing Interests Policy Provide sufficient details of any financial or non-financial competing interests to enable users to assess whether your comments might lead a reasonable person to question your impartiality. Consider the following examples, but note that this is not an exhaustive list: Examples of 'Non-Financial Competing Interests' Within the past 4 years, you have held joint grants, published or collaborated with any of the authors of the selected paper. You have a close personal relationship (e.g. parent, spouse, sibling, or domestic partner) with any of the authors. You are a close professional associate of any of the authors (e.g. scientific mentor, recent student). You work at the same institute as any of the authors. You hope/expect to benefit (e.g. favour or employment) as a result of your submission. You are an Editor for the journal in which the article is published. Examples of 'Financial Competing Interests' You expect to receive, or in the past 4 years have received, any of the following from any commercial organisation that may gain financially from your submission: a salary, fees, funding, reimbursements. You expect to receive, or in the past 4 years have received, shared grant support or other funding with any of the authors. You hold, or are currently applying for, any patents or significant stocks/shares relating to the subject matter of the paper you are commenting on. Stay Updated Sign up for content alerts and receive a weekly or monthly email with all newly published articles Register with F1000Research Already registered? Sign in Not now, thanks close PLEASE NOTE If you are an AUTHOR of this article, please check that you signed in with the account associated with this article otherwise we cannot automatically identify your role as an author and your comment will be labelled as a “User Comment”. If you are a REVIEWER of this article, please check that you have signed in with the account associated with this article and then go to your account to submit your report, please do not post your review here. If you do not have access to your original account, please contact us . All commenters must hold a formal affiliation as per our Policies . The information that you give us will be displayed next to your comment. User comments must be in English, comprehensible and relevant to the article under discussion. We reserve the right to remove any comments that we consider to be inappropriate, offensive or otherwise in breach of the User Comment Terms and Conditions . Commenters must not use a comment for personal attacks. When criticisms of the article are based on unpublished data, the data should be made available. I accept the User Comment Terms and Conditions Please confirm that you accept the User Comment Terms and Conditions. Affiliation ✕ refresh Please enter your institution. Note: To add your institution or organisation, start typing the name and then select the correct name from the list. Where applicable, the name will appear in both the original language and in English. Do not paste in the name. If the name does not appear in the drop-down list, we will display the information you have entered. ✕ refresh Country/Region * USA UK Canada China France Germany Afghanistan Aland Islands Albania Algeria American Samoa Andorra Angola Anguilla Antarctica Antigua and Barbuda Argentina Armenia Aruba Australia Austria Azerbaijan Bahamas Bahrain Bangladesh Barbados Belarus Belgium Belize Benin Bermuda Bhutan Bolivia Bosnia and Herzegovina Botswana Bouvet Island Brazil British Indian Ocean Territory British Virgin Islands Brunei Bulgaria Burkina Faso Burundi Cambodia Cameroon Canada Cape Verde Cayman Islands Central African Republic Chad Chile China Christmas Island Cocos (Keeling) Islands Colombia Comoros Congo Cook Islands Costa Rica Cote d'Ivoire Croatia Cuba Cyprus Czech Republic Democratic Republic of the Congo Denmark Djibouti Dominica Dominican Republic Ecuador Egypt El Salvador Equatorial Guinea Eritrea Estonia Ethiopia Falkland Islands Faroe Islands Federated States of Micronesia Fiji Finland France French Guiana French Polynesia French Southern Territories Gabon Georgia Germany Ghana Gibraltar Greece Greenland Grenada Guadeloupe Guam Guatemala Guernsey Guinea Guinea-Bissau Guyana Haiti Heard Island and Mcdonald Islands Holy See (Vatican City State) Honduras Hong Kong Hungary Iceland India Indonesia Iran Iraq Ireland Israel Italy Jamaica Japan Jersey Jordan Kazakhstan Kenya Kiribati Kosovo (Serbia and Montenegro) Kuwait Kyrgyzstan Lao People's Democratic Republic Latvia Lebanon Lesotho Liberia Libya Liechtenstein Lithuania Luxembourg Macao Madagascar Malawi Malaysia Maldives Mali Malta Marshall Islands Martinique Mauritania Mauritius Mayotte Mexico Minor Outlying Islands of the United States Moldova Monaco Mongolia Montenegro Montserrat Morocco Mozambique Myanmar Namibia Nauru Nepal Netherlands Antilles New Caledonia New Zealand Nicaragua Niger Nigeria Niue Norfolk Island North Korea North Macedonia Northern Mariana Islands Norway Oman Pakistan Palau Palestinian Territory Panama Papua New Guinea Paraguay Peru Philippines Pitcairn Poland Portugal Puerto Rico Qatar Reunion Romania Russian Federation Rwanda Saint Helena Saint Kitts and Nevis Saint Lucia Saint Pierre and Miquelon Saint Vincent and the Grenadines Samoa San Marino Sao Tome and Principe Saudi Arabia Senegal Serbia Seychelles Sierra Leone Singapore Slovakia Slovenia Solomon Islands Somalia South Africa South Georgia and the South Sandwich Is South Korea South Sudan Spain Sri Lanka Sudan Suriname Svalbard and Jan Mayen Swaziland Sweden Switzerland Syria Taiwan Tajikistan Tanzania Thailand The Gambia The Netherlands Timor-Leste Togo Tokelau Tonga Trinidad and Tobago Tunisia Turkey Turkmenistan Turks and Caicos Islands Tuvalu UK USA Uganda Ukraine United Arab Emirates United States Virgin Islands Uruguay Uzbekistan Vanuatu Venezuela Vietnam Wallis and Futuna West Bank and Gaza Strip Western Sahara Yemen Zambia Zimbabwe Please select your country/region. You must enter a comment. Competing Interests Please disclose any competing interests that might be construed to influence your judgment of the article's or peer review report's validity or importance. Competing Interests Policy Provide sufficient details of any financial or non-financial competing interests to enable users to assess whether your comments might lead a reasonable person to question your impartiality. Consider the following examples, but note that this is not an exhaustive list: Examples of 'Non-Financial Competing Interests' Within the past 4 years, you have held joint grants, published or collaborated with any of the authors of the selected paper. You have a close personal relationship (e.g. parent, spouse, sibling, or domestic partner) with any of the authors. You are a close professional associate of any of the authors (e.g. scientific mentor, recent student). You work at the same institute as any of the authors. You hope/expect to benefit (e.g. favour or employment) as a result of your submission. You are an Editor for the journal in which the article is published. Examples of 'Financial Competing Interests' You expect to receive, or in the past 4 years have received, any of the following from any commercial organisation that may gain financially from your submission: a salary, fees, funding, reimbursements. You expect to receive, or in the past 4 years have received, shared grant support or other funding with any of the authors. You hold, or are currently applying for, any patents or significant stocks/shares relating to the subject matter of the paper you are commenting on. Please state your competing interests The comment has been saved. An error has occurred. Please try again. Cancel Post var lTitle = "Web-based Machine Learning Model for Predicting...".replace("'", ''); var linkedInUrl = "http://www.linkedin.com/shareArticle?url=https://f1000research.com/articles/15-690/v1" + "&title=" + encodeURIComponent(lTitle) + "&summary=" + encodeURIComponent('Read the article by '); var deliciousUrl = "https://del.icio.us/post?url=https://f1000research.com/articles/15-690/v1&title=" + encodeURIComponent(lTitle); var redditUrl = "http://reddit.com/submit?url=https://f1000research.com/articles/15-690/v1" + "&title=" + encodeURIComponent(lTitle); linkedInUrl += encodeURIComponent('Kresnowati L et al.'); var offsetTop = /chrome/i.test( navigator.userAgent ) ? 4 : -10; var addthis_config = { ui_offset_top: offsetTop, services_compact : "facebook,twitter,www.linkedin.com,www.mendeley.com,reddit.com", services_expanded : "facebook,twitter,www.linkedin.com,www.mendeley.com,reddit.com", services_custom : [ { name: "LinkedIn", url: linkedInUrl, icon:"/img/icon/at_linkedin.svg" }, { name: "Mendeley", url: "http://www.mendeley.com/import/?url=https://f1000research.com/articles/15-690/v1/mendeley", icon:"/img/icon/at_mendeley.svg" }, { name: "Reddit", url: redditUrl, icon:"/img/icon/at_reddit.svg" }, ] }; var addthis_share = { url: "https://f1000research.com/articles/15-690", templates : { twitter : "Web-based Machine Learning Model for Predicting Chronic Kidney.... Kresnowati L et al., published by " + "@F1000Research" + ", https://f1000research.com/articles/15-690/v1" } }; if (typeof(addthis) != "undefined"){ addthis.addEventListener('addthis.ready', checkCount); addthis.addEventListener('addthis.menu.share', checkCount); } $(".f1r-shares-twitter").attr("href", "https://twitter.com/intent/tweet?text=" + addthis_share.templates.twitter); $(".f1r-shares-facebook").attr("href", "https://www.facebook.com/sharer/sharer.php?u=" + addthis_share.url); $(".f1r-shares-linkedin").attr("href", addthis_config.services_custom[0].url); $(".f1r-shares-reddit").attr("href", addthis_config.services_custom[2].url); $(".f1r-shares-mendelay").attr("href", addthis_config.services_custom[1].url); function checkCount(){ setTimeout(function(){ $(".addthis_button_expanded").each(function(){ var count = $(this).text(); if (count !== "" && count != "0") $(this).removeClass("is-hidden"); else $(this).addClass("is-hidden"); }); }, 1000); } close How to cite this report {{reportCitation}} Cancel Copy Citation Details $(function(){R.ui.buttonDropdowns('.dropdown-for-downloads');}); $(function(){R.ui.toolbarDropdowns('.toolbar-dropdown-for-downloads');}); $.get("/articles/acj/179913/198473") new F1000.Clipboard(); new F1000.ThesaurusTermsDisplay("articles", "article", "198473"); $(document).ready(function() { $( "#frame1" ).on('load', function() { var mydiv = $(this).contents().find("div"); var h = mydiv.height(); console.log(h) }); var tooltipLivingFigure = jQuery(".interactive-living-figure-label .icon-more-info"), titleLivingFigure = tooltipLivingFigure.attr("title"); tooltipLivingFigure.simpletip({ fixed: true, position: ["-115", "30"], baseClass: 'small-tooltip', content:titleLivingFigure + " " }); tooltipLivingFigure.removeAttr("title"); $("body").on("click", ".cite-living-figure", function(e) { e.preventDefault(); var ref = $(this).attr("data-ref"); $(this).closest(".living-figure-list-container").find("#" + ref).fadeIn(200); }); $("body").on("click", ".close-cite-living-figure", function(e) { e.preventDefault(); $(this).closest(".popup-window-wrapper").fadeOut(200); }); $(document).on("mouseup", function(e) { var metricsContainer = $(".article-metrics-popover-wrapper"); if (!metricsContainer.is(e.target) && metricsContainer.has(e.target).length === 0) { $(".article-metrics-close-button").click(); } }); var articleId = $('#articleId').val(); if($("#main-article-count-box").attachArticleMetrics) { $("#main-article-count-box").attachArticleMetrics(articleId, { articleMetricsView: true }); } }); var figshareWidget = $(".new_figshare_widget"); if (figshareWidget.length > 0) { window.figshare.load("f1000", function(Widget) { // Select a tag/tags defined in your page. In this tag we will place the widget. _.map(figshareWidget, function(el){ var widget = new Widget({ articleId: $(el).attr("figshare_articleId") //height:300 // this is the height of the viewer part. [Default: 550] }); widget.initialize(); // initialize the widget widget.mount(el); // mount it in a tag that's on your page // this will save the widget on the global scope for later use from // your JS scripts. This line is optional. //window.widget = widget; }); }); } close Error Close Add Reset F1000.MICROSERVICES.AFFILIATION = ''; $(document).ready(function () { $('.js-affiliations-form').each((index, form) => { new AffiliationForm({ formId: form.id, institutionErrorSelector: '.comment-enter-institution', departmentErrorSelector: '.comment-enter-department', placeSelector: '.js-add-comment-place', stateSelector: '.js-add-comment-state', zipCodeSelector: '.js-add-comment-zipcode', countrySelector: '.js-add-comment-country', countryErrorSelector: '.comment-enter-country', }); }); }); $(document).ready(function () { var reportIds = { "483735": 0, "483734": 0, "483733": 0, "483732": 0, "483731": 0, "483730": 0, "483729": 0, "483728": 0, "483727": 0, "483726": 0, }; $(".referee-response-container,.js-referee-report").each(function(index, el) { var reportId = $(el).attr("data-reportid"), reportCount = reportIds[reportId] || 0; $(el).find(".comments-count-container,.js-referee-report-views").html(reportCount); }); var uuidInput = $("#article_uuid"), oldUUId = uuidInput.val(), newUUId = "2ed3d4ec-4649-4469-8f30-22a97fa34bcc"; uuidInput.val(newUUId); $("a[href*='article_uuid=']").each(function(index, el) { var newHref = $(el).attr("href").replace(oldUUId, newUUId); $(el).attr("href", newHref); }); }); An innovative open access publishing platform offering rapid publication and open peer review, whilst supporting data deposition and sharing. Browse Gateways Collections How it Works Contact For Developers Cookie Notice Privacy Notice RSS Submit Your Research Follow us © 2012-2026 F1000 Research Ltd. ISSN 2046-1402 | Legal | Partner of Research4Life • CrossRef • ORCID • FAIRSharing R.templateTests.simpleTemplate = R.template(' $text $text $text $text $text '); R.templateTests.runTests(); var F1000platform = new F1000.Platform({ name: "f1000research", displayName: "F1000Research", hostName: "f1000research.com", id: "1", editorialEmail: "
[email protected]", infoEmail: "
[email protected]", usePmcStats: true }); $(function(){R.ui.dropdowns('.dropdown-for-authors, .dropdown-for-about, .dropdown-for-myresearch');}); // $(function(){R.ui.dropdowns('.dropdown-for-referees');}); $(document).ready(function () { if ($(".cookie-warning").is(":visible")) { $(".sticky").css("margin-bottom", "35px"); $(".devices").addClass("devices-and-cookie-warning"); } $(".cookie-warning .close-button").click(function (e) { $(".devices").removeClass("devices-and-cookie-warning"); $(".sticky").css("margin-bottom", "0"); }); $("#tweeter-feed .tweet-message").each(function (i, message) { var self = $(message); self.html(linkify(self.html())); }); $(".partner").on("mouseenter mouseleave", function() { $(this).find(".gray-scale, .colour").toggleClass("is-hidden"); }); }); Sign In Remember me Forgotten your password? Sign In Cancel Email or password not correct. Please try again Please wait... $(function(){ // Note: All the setup needs to run against a name attribute and *not* the id due the clonish // nature of facebox... $("a[id=googleSignInButton]").click(function(event){ event.preventDefault(); $("input[id=oAuthSystem]").val("GOOGLE"); $("form[id=oAuthForm]").submit(); }); $("a[id=facebookSignInButton]").click(function(event){ event.preventDefault(); $("input[id=oAuthSystem]").val("FACEBOOK"); $("form[id=oAuthForm]").submit(); }); $("a[id=orcidSignInButton]").click(function(event){ event.preventDefault(); $("input[id=oAuthSystem]").val("ORCID"); $("form[id=oAuthForm]").submit(); }); }); If you've forgotten your password, please enter your email address below and we'll send you instructions on how to reset your password. The email address should be the one you originally registered with F1000. Email address not valid, please try again You registered with F1000 via Google, so we cannot reset your password. To sign in, please click here . If you still need help with your Google account password, please click here . You registered with F1000 via Facebook, so we cannot reset your password. To sign in, please click here . If you still need help with your Facebook account password, please click here . Code not correct, please try again Reset password Cancel Email us for further assistance. Server error, please try again. If your email address is registered with us, we will email you instructions to reset your password. If you think you should have received this email but it has not arrived, please check your spam filters and/or contact for further assistance. Please wait... Register $(document).ready(function () { signIn.createSignInAsRow($("#sign-in-form-gfb-popup")); $(".target-field").each(function () { var uris = $(this).val().split("/"); if (uris.pop() === "login") { $(this).val(uris.toString().replace(",","/")); } }); });
Text is read by the "Ask this paper" AI Q&A widget below.
Extraction quality varies by source — PMC NXML preserves structure
cleanly, OA-HTML may include some navigation residue, and OA-PDF can
have broken hyphenation. The publisher copy
(via DOI)
is the canonical version.