A Retrospective Cohort Study Comparing the Incidence of Coded Cancer in Irish GP Records against National Cancer Registry Data

preprint OA: closed
Full text JSON View at publisher
Full text 111,654 characters · extracted from preprint-html · click to expand
A Retrospective Cohort Study Comparing the... | HRB Open Research 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})(); const cookieDomain = window.location.hostname; const tld = buildTLD(); function buildTLD() { const domainParts = cookieDomain.split('.'); while (domainParts.length > 2) { domainParts.shift(); } return domainParts.join('.'); } function deleteCookie(cookieName) { if (!cookieName) { return; } const cookiePath = (cookieName.startsWith('retraction_warning_') || cookieName.startsWith('version_warning_')) ? '/articles/' + cookieName : '/'; // Yes, these three slightly different ways to try and remove cookies are necessary document.cookie = cookieName + '=; path=' + cookiePath + '; domain=' + cookieDomain + '; expires=Thu, 01 Jan 1970 00:00:01 GMT;'; document.cookie = cookieName + '=; path=' + cookiePath + '; domain=.' + tld + '; expires=Thu, 01 Jan 1970 00:00:01 GMT;'; document.cookie = cookieName + '=; path=' + cookiePath + '; expires=Thu, 01 Jan 1970 00:00:01 GMT;'; } function deleteGroupCookies(group) { if (!group) { return; } const domainData = OneTrust.GetDomainData(), cookies = domainData.Groups.filter(cookieGroup => cookieGroup.OptanonGroupId === group)[0].Cookies; cookies.forEach(cookie => deleteCookie(cookie.Name)); } function OptanonWrapper() { const cookieConsentGroups = []; for (group of OneTrust.GetDomainData().Groups) { cookieConsentGroups.push(group.OptanonGroupId); } OneTrust.OnConsentChanged(function(e) { const cookieConsentActiveGroups = OnetrustActiveGroups.split(',').filter(activeGroup => activeGroup); cookieConsentGroups.forEach(group => { if (!cookieConsentActiveGroups.includes(group)) { deleteGroupCookies(group); }; }); }); } window.jQuery || document.write(' ') CKEDITOR_BASEPATH='https://hrbopenresearch.org/js/vendor/ckeditor/' window.reactTheme = 'HRB'; 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", {}); Skip to content HRB Open Research file_upload Submit your research search clear search menu close clear Search Browse Gateways & Collections How to Publish Submit your Research My Submissions Article Guidelines Article Guidelines (New Versions) Data Guidelines Prepublication Checks Production Process Article Processing Charges Finding Article Reviewers About How it Works For Reviewers National Steering Group Policies Glossary FAQs Contact Blog My Account 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://hrbopenresearch.org/articles/9-41" }, "headline": "A Retrospective Cohort Study Comparing the Incidence of Coded Cancer in Irish GP Records...", "datePublished": "2026-04-24T12:40:34", "dateModified": "2026-04-24T12:40:34", "author": [ { "@type": "Person", "name": "Alexander Carroll" }, { "@type": "Person", "name": "Benjamin M. Jacob" }, { "@type": "Person", "name": "Aisling Kenny" }, { "@type": "Person", "name": "Linda Henry" }, { "@type": "Person", "name": "Brittney Adams" }, { "@type": "Person", "name": "Patrick Redmond" } ], "publisher": { "@type": "Organization", "name": "HRB Open Research", "logo": { "@type": "ImageObject", "url": "https://hrbopenresearch.org/img/AMP/HRB_image.png", "height": 566, "width": 60 } }, "image": { "@type": "ImageObject", "url": "https://hrbopenresearch.org/img/AMP/HRB_image.png", "height": 1200, "width": 127 }, "description": " Background Primary care datasets offer valuable longitudinal data for research and policy-making. However, Ireland’s primary care data infrastructure is limited, with inconsistent diagnostic coding raising concerns about research utility. While gaps in coding chronic conditions are well-documented, cancer diagnosis validation remains unaddressed. This study assesses the utility of Irish GP data by comparing cancer incidence rates from primary care records with the National Cancer Registry Ireland (NCRI). Methodology A retrospective cohort study used anonymised data from 43 GP practices in Ireland, covering the period from 1 January 2011 to 5 April 2018. Cancer cases were identified using ICPC-2 and ICD-10 diagnostic codes for the 20 most common reported cancers by NCRI. Age- and sex-adjusted cancer incidence was derived from NCRI data and compared with observed GP-recorded cases using standardised incidence ratios (SIRs). Chi-squared tests compared observed and expected frequencies. Inter-practice variation was assessed by comparing expected and observed case counts. Results The cohort comprised 41,782 patients aged ≥60 years, with mean follow-up of 5.3 years. Across 20 cancers examined, 15 were significantly under-recorded in GP data relative to NCRI estimates. No significant differences were observed for colorectal, leukaemia, thyroid, cervical cancers, or Hodgkin’s lymphoma. In contrast, marked under-recording was observed for melanoma, liver, pancreatic, brain, and ovarian cancers. Prostate (SIR 1.20), breast (SIR 1.53) and bladder cancer (SIR 2.14) were significantly over-recorded. Cancers lacking granular ICPC-2 diagnostic codes and relying on ICD-10 demonstrated the greatest under-ascertainment. Inter-practice variation was substantial with marked heterogeneity in coding and wide dispersion in practice-level SIRs. Conclusion Irish GP datasets substantially under-record cancer incidence versus NCRI estimates, primarily due to heterogeneity in coding practices and limitations of ICPC-2 diagnostic system. Standardisation of diagnostic coding, improved data linkage, and routine data validation are essential to enhance primary care data reliability for cancer surveillance, research and policy. " } { "@context": "http://schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": "1", "item": { "@id": "https://hrbopenresearch.org/", "name": "Home" } }, { "@type": "ListItem", "position": "2", "item": { "@id": "https://hrbopenresearch.org/browse/articles", "name": "Browse" } }, { "@type": "ListItem", "position": "3", "item": { "@id": "https://hrbopenresearch.org/articles/9-41/v1", "name": "A Retrospective Cohort Study Comparingthe Incidence of Coded Cancer..." } } ] } Home Browse A Retrospective Cohort Study Comparingthe Incidence of Coded Cancer... ALL Metrics - Views Downloads Get PDF Get XML Cite How to cite this article Carroll A, Jacob BM, Kenny A et al. A Retrospective Cohort Study Comparing the Incidence of Coded Cancer in Irish GP Records against National Cancer Registry Data [version 1; peer review: awaiting peer review] . HRB Open Res 2026, 9 :41 ( https://doi.org/10.12688/hrbopenres.14407.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 A Retrospective Cohort Study Comparing the Incidence of Coded Cancer in Irish GP Records against National Cancer Registry Data [version 1; peer review: awaiting peer review] Alexander Carroll 1 , Benjamin M. Jacob https://orcid.org/0000-0003-1119-064X 1 , Aisling Kenny 1 , Linda Henry 1 , Brittney Adams https://orcid.org/0009-0009-1832-4963 1 , Patrick Redmond https://orcid.org/0000-0002-3929-2018 1 Alexander Carroll 1 , Benjamin M. Jacob https://orcid.org/0000-0003-1119-064X 1 , [...] Aisling Kenny 1 , Linda Henry 1 , Brittney Adams https://orcid.org/0009-0009-1832-4963 1 , Patrick Redmond https://orcid.org/0000-0002-3929-2018 1 PUBLISHED 24 Apr 2026 Author details Author details 1 Dept. of General Practice, Royal College of Surgeons in Ireland, Dublin 2, Ireland Alexander Carroll Roles: Conceptualization, Data Curation, Formal Analysis, Investigation, Methodology, Project Administration, Validation, Visualization, Writing – Original Draft Preparation, Writing – Review & Editing Benjamin M. Jacob Roles: Conceptualization, Data Curation, Formal Analysis, Funding Acquisition, Investigation, Methodology, Project Administration, Resources, Supervision, Validation, Visualization, Writing – Original Draft Preparation, Writing – Review & Editing Aisling Kenny Roles: Data Curation, Investigation, Writing – Review & Editing Linda Henry Roles: Writing – Original Draft Preparation Brittney Adams Roles: Project Administration, Supervision, Writing – Review & Editing Patrick Redmond Roles: Funding Acquisition, Project Administration, Resources, Software, Supervision, Writing – Review & Editing OPEN PEER REVIEW REVIEWER STATUS AWAITING PEER REVIEW Abstract Background Primary care datasets offer valuable longitudinal data for research and policy-making. However, Ireland’s primary care data infrastructure is limited, with inconsistent diagnostic coding raising concerns about research utility. While gaps in coding chronic conditions are well-documented, cancer diagnosis validation remains unaddressed. This study assesses the utility of Irish GP data by comparing cancer incidence rates from primary care records with the National Cancer Registry Ireland (NCRI). Methodology A retrospective cohort study used anonymised data from 43 GP practices in Ireland, covering the period from 1 January 2011 to 5 April 2018. Cancer cases were identified using ICPC-2 and ICD-10 diagnostic codes for the 20 most common reported cancers by NCRI. Age- and sex-adjusted cancer incidence was derived from NCRI data and compared with observed GP-recorded cases using standardised incidence ratios (SIRs). Chi-squared tests compared observed and expected frequencies. Inter-practice variation was assessed by comparing expected and observed case counts. Results The cohort comprised 41,782 patients aged ≥60 years, with mean follow-up of 5.3 years. Across 20 cancers examined, 15 were significantly under-recorded in GP data relative to NCRI estimates. No significant differences were observed for colorectal, leukaemia, thyroid, cervical cancers, or Hodgkin’s lymphoma. In contrast, marked under-recording was observed for melanoma, liver, pancreatic, brain, and ovarian cancers. Prostate (SIR 1.20), breast (SIR 1.53) and bladder cancer (SIR 2.14) were significantly over-recorded. Cancers lacking granular ICPC-2 diagnostic codes and relying on ICD-10 demonstrated the greatest under-ascertainment. Inter-practice variation was substantial with marked heterogeneity in coding and wide dispersion in practice-level SIRs. Conclusion Irish GP datasets substantially under-record cancer incidence versus NCRI estimates, primarily due to heterogeneity in coding practices and limitations of ICPC-2 diagnostic system. Standardisation of diagnostic coding, improved data linkage, and routine data validation are essential to enhance primary care data reliability for cancer surveillance, research and policy. READ ALL READ LESS Keywords Cancer Incidence, Primary Health Care, Retrospective Studies, General Practice, Data Validation Corresponding Author(s) Brittney Adams ( [email protected] ) Close Corresponding author: Brittney Adams Competing interests: No competing interests were disclosed. Grant information: This research was be supported by the RCSI Research Summer School Copyright: © 2026 Carroll A 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: Carroll A, Jacob BM, Kenny A et al. A Retrospective Cohort Study Comparing the Incidence of Coded Cancer in Irish GP Records against National Cancer Registry Data [version 1; peer review: awaiting peer review] . HRB Open Res 2026, 9 :41 ( https://doi.org/10.12688/hrbopenres.14407.1 ) First published: 24 Apr 2026, 9 :41 ( https://doi.org/10.12688/hrbopenres.14407.1 ) Latest published: 24 Apr 2026, 9 :41 ( https://doi.org/10.12688/hrbopenres.14407.1 ) Introduction Primary care datasets Primary care datasets are increasingly recognised as valuable resources for clinical research, epidemiological studies and health policy development. These datasets offer unique advantages: they encompass large, representative population samples and contain longitudinal data that track patient outcomes over time. 1 , 2 Countries such as the UK, Australia and the Netherlands have capitalised on this potential by developing robust primary care research networks. 2 The UK’s Clinical Practice Research Datalink (CPRD), established in 2012, has enabled over 3,500 peer-reviewed studies, demonstrating the utility of well-curated general practice (GP) datasets in generating high-quality research evidence. Similarly, the MedicineInsight database in Australia and the Integrated Primary Care Information (IPCI) database in the Netherlands have been validated and extensively used in chronic disease and cancer research. 3 – 6 The irish landscape In contrast, Ireland has lagged behind international efforts in the development and utilisation of primary care data 7 . The Irish Primary Care Research Network (iPCRN), established in 2012, represents an important step towards harnessing GP data for research purposes. 8 Despite its potential, the iPCRN remains underdeveloped and underutilised. Inadequate coding practices, variability across practices and a lack of validation studies have hindered its ability to contribute meaningfully to clinical research and health system improvements. 9 One of the principal barriers to the effective use of GP data in Ireland is the inconsistency in diagnostic coding. Diagnostic coding is crucial for reliable health data. Inaccurate or incomplete coding can lead to significant discrepancies in disease incidence estimates, undermining the potential of primary care datasets to serve as reliable research resources. 10 – 12 Irish GP practices predominantly use two coding systems: the International Classification of Primary Care (ICPC) and the International Classification of Diseases (ICD). 13 ICPC provides broader diagnostic categories, while ICD offers greater granularity. Technical limitations and a lack of incentive for GP practices to code, have raised concerns about data completeness and accuracy. 10 Verifying the accuracy of cancer recording Confirming the accuracy of cancer records in primary care—specifically the presence of a diagnosis, the cancer type, and the date of onset—against national registry data is essential for reliable research. The precise identification of cases is the foundation of any epidemiological study; if patients are not accurately identified or classified at the outset, subsequent analyses of trends and outcomes are fundamentally compromised. International studies have demonstrated the feasibility of this verification; for instance, the UK’s CPRD uses bespoke algorithms to search diagnostic codes and free-text notes to confirm cases against the National Cancer Data Repository. 14 , 15 , 18 Similarly, the MedicineInsight database in Australia uses automated checks of diagnostic codes and test results, 5 , 17 while in Northern Ireland, validation involved direct feedback from GPs to confirm registry-based cases. 16 These efforts highlight the necessity of rigorous validation to align primary care records with “gold-standard” registries. Rationale While the utility of primary care datasets for high-quality research is well-established, the reliability of the Irish data environment remains a critical unknown. The transition from potential utility to actionable evidence is currently blocked by a lack of systematic validation. Without a formal comparison between general practice records and a gold-standard reference—the National Cancer Registry Ireland (NCRI)—the extent of cancer case ascertainment remains speculative. Examining these patterns within the iPCRN is therefore a necessary diagnostic step; it provides the evidence base required to address systemic coding issues and move Irish primary care data from an underutilised resource to a viable tool for cancer research. Objectives The primary objective of this study is to validate the accuracy of cancer recording by estimating incidence rates among a high-risk cohort aged 60 years and older and comparing these findings against age- and sex-adjusted data from the NCRI. This direct comparison is essential to determine the reliability of GP-recorded diagnostic codes as a proxy for registry-confirmed cases. Beyond this baseline validation, the study aims to quantify inter-practice variability and identify specific inconsistencies in coding practices. Analysing these discrepancies is necessary to understand the factors that undermine data quality and to provide the evidence required to inform future recommendations for national data standardisation. Methods Study population and design This was a retrospective cohort study that included general practice patients between 2011 and 2018. The study cohort comprised patients aged 60 years or older as of 1 January 2011. Eligible patients were required to have at least two recorded clinical encounters during the study period, separated by a minimum of 90 days, to ensure sustained engagement in primary care. Patients with incomplete records or missing key demographic variables, including age or sex, across data extraction waves were excluded. The study utilised anonymised routinely collected primary care patient data extracted as part of a national medication reconciliation initiative established in 2014 and hosted on the secure server of the iPCRN. 19 This study did not rely on participant informed consent, as it was based on an anonymised data extraction undertaken with research ethics committee approval before the introduction of contemporary data governance legislation, namely the General Data Protection Regulation (GDPR) and the Irish Health Research Regulations. The study was conducted and reported in accordance with the “REporting of studies Conducted using Observational Routinely-collected health Data” (RECORD) checklist. 20 The irreversibly anonymised dataset comprised routinely collected primary care data, including patient demographics, diagnostic codes, clinical encounters and consultation records. Data were obtained from 44 general practices in Ireland, of which 43 were included in the present analysis. All included practices used a single electronic health record (EHR) system (Socrates), which is widely implemented in Irish general practice. Data were extracted using a standardised tool in two waves. The first wave captured records from January 2011 to practice-specific extraction dates and the second wave extended follow-up for participating practices. Of the 43 practices included, 37 contributed data to both extraction waves, while six contributed data to the initial wave only. Variables and outcomes of interest The primary outcome was cancer incidence, defined as the first recorded diagnostic code for a malignant neoplasm in the primary care electronic health record during the study period. Twenty cancer types were included, selected to reflect the most commonly reported malignancies in Ireland based on NCRI statistics. Explanatory variables included patient age, sex, patient eligibility type and general practice identifier. Age was categorised into five-year age bands for stratified analyses. Patient eligibility type was classified as General Medical Services (GMS), Doctor Visit Card (DVC) Private or Other. General Medical Services (GMS) eligibility provides access to free GP care and subsidised medications. The Doctor Visit Card (DVC) entitles patients to free GP visits but not free medications. The “Other” category included patients with alternative or non-Irish eligibility arrangements, including National Health Service (NHS) coverage. Clinical information originated from general practice consultations recorded using a single electronic health record system. Cancer diagnoses were identified using diagnostic codes recorded in consultation records. Both the International Classification of Diseases, Tenth Revision (ICD-10) and the International Classification of Primary Care, Second Edition (ICPC-2), were used. ICD-10 codes were truncated to three characters to standardise cancer classification. Where ICPC-2 codes lacked sufficient specificity to identify individual cancer types, case identification relied exclusively on ICD-10 codes. Cancer types and corresponding diagnostic codes used for case identification are presented in Table 1 . Age- and sex-specific cancer incidence rates from the NCRI were extracted for five-year age bands from 60–64 years to 85+ years for each included cancer type and used for comparative analyses. Table 1. ICD-10 and ICPC-2 Codes. Certain ICPC-2 codes refer to clusters of similar cancers and are thus unsuitable for analyses of specific cancer types. Cancer Type ICD-10 ICPC-2 Lung C33, C34 R84 Breast C50 X76 Prostate C61 Y77 Colorectal C18 – C21 D75 Melanoma C43 . Non-Hodgkin Lymphoma C82 - C85 . Kidney C64 -C65 U75 Pancreas C25 D76 Stomach C16 D74 Mouth & Pharynx C01 – C14 . Leukaemia C91 – C95 B73 Bladder C67 U76 Oesophagus C15 . Brain C71 . Multiple Myeloma C90 . Ovary C56 . Liver C22 . Thyroid C73 T71 Cervix C53 X75 Hodgkin C81 . Follow-Up and person-years at risk Patient status (death, inactivity, or archiving) was only available at discrete data extraction points, limiting the ability to determine exact dropout dates. To address this, an estimated dropout date was derived for each patient by adding their historical average interval between consultations to the date of their last recorded encounter. Follow-up commenced on 1 January 2011 and ended at the earlier of the practice-specific extraction date or the estimated dropout date. Person-years at risk (PYAR) were calculated from the first recorded encounter to the end of follow-up, with fractional contributions included for partial years. Bias Patient status (death, inactivity or archived) was not fully captured, which may have resulted in overestimation of person-time at risk and underestimation of cancer incidence. To mitigate this, an estimated dropout date was derived for each patient using their historical average interval between consultations. Analyses were additionally restricted to patients with evidence of sustained engagement in primary care. Statistical analysis Incidence rate estimation and standardisation Crude cancer incidence rates were expressed per 100,000 person-years at risk (PYAR) and stratified by cancer type, age group and sex. For sex-specific cancers, rates were calculated within the relevant sex only. To facilitate comparison with NCRI data, age- and sex-adjusted expected incidence rates were derived. NCRI crude incidence rates were stratified by five-year age bands (60–64 to 85+ years) and by sex, then weighted according to the age and sex distribution of the study cohort. For cancers affecting both sexes, sex-specific NCRI rates were combined using cohort-derived weights. For sex-specific cancers, weighting was applied within the relevant sex group only. Comparative analyses Observed cancer case counts recorded in general practice were compared with expected counts derived from age-matched NCRI incidence rates. Expected case counts were calculated by applying NCRI crude incidence rates to the corresponding general practice person-years at risk. SIRs were calculated as the ratio of observed to expected cases for each cancer type. Exact 95% confidence intervals (CIs) for SIRs were estimated assuming a Poisson distribution for observed counts. Two-sided exact Poisson tests were used to assess statistical evidence for departures from expected incidence. Chi-square goodness-of-fit tests comparing observed and expected counts were also performed as a secondary approach. Practice-level analyses examined variation in observed-to-expected cancer incidence across general practices. For each practice, observed and expected case counts were aggregated across all cancer types and practice-specific SIRs with 95% Poisson confidence intervals were estimated. Statistical significance was assessed using two-sided exact Poisson tests. Cancer coding patterns were examined by classifying recorded cancer cases according to identification using ICD-10 codes, ICPC-2 codes or both. The relative contribution of each coding system was summarised by cancer type and across practices to assess heterogeneity in coding behaviour. All analyses were conducted using Python (version 3.11) and statistical significance was assessed at the 5% level. Data cleaning and missing data Records with missing consultation dates were excluded. Consultation records falling outside the cohort boundaries (before 1 January 2011 or after 5 April 2018) were also removed. Discrepancies in patient status across data waves were resolved by reconciling encounters before and after practice-specific export dates, ensuring consistent follow-up information across the longitudinal dataset. Ethics and data governance This study was conducted in accordance with RCSI guidelines for data protection and ethical research involving anonymised patient data. Ethical approval for analysis was granted by the Irish College of GPs Research Ethics Committee on 18 th June 2014. All data were handled in compliance with GDPR regulations. Results Participants The final study cohort comprised 41,782 patients aged 60 years or older across 43 general practices, contributing a mean follow-up of 5.29 years ( Figure 1 ). Figure 1. Cohort Population Flow Diagram. Follow-up ended at the earlier of the practice-specific export date or estimated patient dropout. Six practices (6,126 patients) did not contribute data beyond the first extraction wave and ceased follow-up in late 2015, while remaining practices contributed data until export dates between June 2017 and April 2018. Total person-years at risk declined after 2015, reflecting staggered practice-level data export dates rather than changes in patient retention ( Figure 2 ). Figure 2. Sex-Specific Person-Years at Risk. Cohort characteristics The median number of patients per practice was 834. The median age at cohort entry was 70.9 years (IQR 65–78) and 56.1% of patients were female. Most patients were eligible for General Medical Services (GMS) coverage (55%), followed by private patients (28%) and Doctor Visit Card holders (9%); other eligibility categories were uncommon. Overall levels of missing data were low (<1% for all variables) and were unlikely to materially affect analyses. Primary analysis: cancer incidence compared with NCRI A total of 3,342 incident cancers were recorded in the general practice dataset during follow-up. Cancer incidence recorded in general practice differed from age-matched expected incidence derived from NCRI data for most cancer types ( Table 2 , Figure 3 ). GP-recorded incidence was lower than expected for the majority of cancers, with statistically significant reductions observed for melanoma (SIR 0.43, 95% CI 0.34–0.55), non-Hodgkin lymphoma (0.44, 0.34–0.57), liver cancer (0.33, 0.19–0.54), brain cancer (0.32, 0.18–0.53) and ovarian cancer (0.28, 0.17–0.44). Higher-than-expected incidence was observed for bladder cancer (2.14, 1.86–2.44), breast cancer (1.53, 1.42–1.66) and prostate cancer (1.20, 1.11–1.28). Table 2. Main Results Table. Cancer Population Obs. Exp. SIR (95% CI) Poisson exact p-value Chi-square p-value Coding system Prostate Males 797 666.77 1.20 (1.11–1.28) p < 0.01 p < 0.01 Dual-coded Breast Females 628 409.43 1.53 (1.42–1.66) p < 0.01 p < 0.01 Dual-coded Colorectal Both sexes 551 554.27 0.99 (0.91–1.08) 0.912 0.890 Dual-coded Lung Both sexes 475 561.24 0.85 (0.77–0.93) p < 0.01 p < 0.01 Dual-coded Bladder Both sexes 213 99.68 2.14 (1.86–2.44) p < 0.01 p < 0.01 Dual-coded Leukaemia Both sexes 108 99.71 1.08 (0.89–1.31) 0.431 0.406 Dual-coded Kidney Both sexes 81 108.45 0.75 (0.59–0.93) p < 0.01 p < 0.01 Dual-coded Pancreas Both sexes 76 125.41 0.61 (0.48–0.76) p < 0.01 p < 0.01 Dual-coded Melanoma Both sexes 69 158.9 0.43 (0.34–0.55) p < 0.01 p < 0.01 ICD-10 only Stomach Both sexes 67 124.44 0.54 (0.42–0.68) p < 0.01 p < 0.01 Dual-coded NH Lymphoma Both sexes 64 144.36 0.44 (0.34–0.57) p < 0.01 p < 0.01 ICD-10 only Oesophagus Both sexes 44 88.1 0.50 (0.36–0.67) p < 0.01 p < 0.01 ICD-10 only Multiple Myeloma Both sexes 29 54.58 0.53 (0.36–0.76) p < 0.01 p < 0.01 ICD-10 only Thyroid Both sexes 26 22.21 1.17 (0.76–1.72) 0.474 0.421 Dual-coded Mouth Pharynx Both sexes 26 65.83 0.39 (0.26–0.58) p < 0.01 p < 0.01 ICD-10 only Cervix Females 20 16.46 1.21 (0.74–1.88) 0.442 0.383 Dual-coded Ovary Females 18 64.24 0.28 (0.17–0.44) p < 0.01 p < 0.01 ICD-10 only Liver Both sexes 16 48.03 0.33 (0.19–0.54) p < 0.01 p < 0.01 ICD-10 only Brain Both sexes 15 47.05 0.32 (0.18–0.53) p < 0.01 p < 0.01 ICD-10 only Hodgkin Lymphoma Both sexes 6 5.38 1.12 (0.41–2.43) 0.901 0.789 ICD-10 only Figure 3. SIR by Cancer Type. In contrast, close agreement between GP and NCRI incidence estimates was observed for colorectal cancer (0.99, 0.91–1.08) and leukaemia (1.08, 0.89–1.31). Cervical cancer (1.21, 0.74–1.88), thyroid cancer (1.17, 0.76–1.72) and Hodgkin lymphoma (1.12, 0.41–2.43) were also found to have no statistically significant differences detected on Poisson exact testing (≥ 0.01), although confidence intervals were wide. Exact Poisson tests and chi-square tests yielded consistent inferences, with statistically significant departures from expected incidence for most cancers. As shown in Supplemental Figure 10, there was no general improvement or disimprovement in agreement over time. Impact of coding classification on cancer case identification Substantial differences were observed according to the clinical coding system used ( Figure 4 ). Cancer types with dedicated ICPC-2 diagnostic codes (including lung, breast, colorectal, prostate, bladder, leukaemia and thyroid cancers) were predominantly recorded using dual ICPC-2 and ICD-10 coding and showed higher case counts and closer alignment with NCRI incidence estimates. Figure 4. Cancer Rankings by Incidence. In contrast, cancers without a specific ICPC-2 code, such as melanoma, oesophageal, brain, multiple myeloma, ovarian, liver and mouth and pharyngeal cancers, were exclusively identified using ICD-10 codes and demonstrated substantially lower recorded incidence in general practice. These cancers are predominantly lower-incidence malignancies; however, melanoma represents a notable exception, ranking fifth in NCRI incidence but falling to ninth in the GP dataset (). This pattern suggests that the absence of specific ICPC-2 diagnostic codes may contribute to systematic under-recording of certain cancer types in primary care datasets. Inter-practice variation in coded cancer incidence Substantial heterogeneity in cancer incidence recording was observed at practice level when comparing observed case counts with expected counts derived from NCRI incidence rates ( Figure 5 , Supplemental File S8). Across the 43 participating practices, SIRs varied widely, ranging from 0.03 (0.00–0.10) to 1.64 (1.42–1.88). Figure 5. Practice Specific Analysis by SIR. Of the 43 participating practices, one recorded no cancer cases during the study period and could not be formally evaluated. Among the remaining 42 practices, 29 (69%) demonstrated statistically significant differences between observed and expected cancer incidence based on exact Poisson testing, while 13 (31%) showed no evidence of deviation from expected incidence. Several practices demonstrated statistically significant higher-than-expected cancer incidence, including Practice 11 (SIR 1.64, 1.42–1.88), Practice 20 (1.42, 1.31–1.55), Practice 17 (1.37, 1.05–1.76) and Practice 1 (1.25, 1.01–1.52). In contrast, a larger number of practices exhibited substantially lower-than-expected incidence, with marked under-recording observed in practices such as Practice 3 (SIR 0.03, 0.00–0.10), Practice 5 (0.11, 0.06–0.19), Practice 8 (0.10, 0.04–0.20), Practice 10 (0.20, 0.12–0.31) and Practice 32 (0.32, 0.23–0.45). The majority of practices fell below the expected incidence line, consistent with systematic under-recording rather than random fluctuation, with pronounced inter-practice variation. Inter-practice variation in coding system utilised Use of the two coding systems varied across practices, with some practices relying primarily on a single coding system and others using both, suggesting heterogeneity in coding behaviour at practice level ( Figure 6 ). This pattern is consistent with limited routine use of ICD-10 coding in Irish general practice and indicates that the absence of ICPC-2 diagnostic codes, together with variability in coding practices, may contribute to systematic under-recording of certain cancer types in primary care datasets. Figure 6. Inter-Practice Coding Utilisation Trends. Discussion Principal findings This study addresses a foundational question for Irish primary care cancer research: can GP EHR diagnostic coding be used to identify cancer cases reliably enough for longitudinal epidemiological studies? Answering this question is important because GP datasets are increasingly used for research and service planning, and, to our knowledge, this is the first study to examine the reliability of cancer coding in Irish GP EHR data by benchmarking GP-recorded incidence against age- and sex-adjusted NCRI expectations. The main finding is that, in this historical cohort, structured GP diagnostic coding did not reliably approximate registry-based cancer incidence. In 41,782 adults aged ≥60 years across 43 practices, followed for a mean of 5.29 years, 3,342 incident cancers were recorded. Across 20 cancer types, the dominant pattern was under-recording relative to NCRI expectations, indicating that structured codes alone are likely to produce substantial case missingness and misclassification in longitudinal cancer research. The discrepancy was widespread and clinically meaningful. Several cancers were recorded at approximately one-third to one-half of expected incidence, including ovarian cancer (SIR 0.28), brain cancer (0.32), liver cancer (0.33), melanoma (0.43), and non-Hodgkin lymphoma (0.44). By contrast, colorectal cancer (0.99) and leukaemia (1.08) showed close agreement with NCRI estimates, while bladder (2.14), breast (1.53), and prostate (1.20) were over-recorded. This pattern indicates that the issue is not simply low coding volume, but inconsistency in how cancer diagnoses are represented in routine primary care records. Interpretation of findings These findings are best understood as a case ascertainment problem rather than a generic limitation of routine data. The key issue is not whether GP records contain some cancer information, but whether structured diagnostic codes can identify cancer cases accurately enough for epidemiological research: if case ascertainment is incomplete, the case group is under-ascertained (reducing power) and the control group is contaminated by missed cases (biasing estimates). In this cohort, they did not do so consistently. A central explanation is coding-system granularity. Of the 20 cancers examined, 11 had dedicated ICPC-2 codes and were typically identifiable using both ICPC-2 and ICD-10, whereas 9 lacked sufficiently specific ICPC-2 codes and relied on ICD-10 for case identification. The dual-coded cancers generally aligned more closely with NCRI incidence, while 8 of the 9 ICD-10-only cancers were among the most under-recorded. This strongly suggests that coding specificity materially affects whether cancers are recoverable from GP records. Melanoma provides an emblematic example. It ranked fifth in expected NCRI incidence but only ninth in the GP dataset, with an SIR of 0.43. This is consistent with the limited subtype specificity available in ICPC-2 and illustrates how coding architecture can distort both incidence estimates and the apparent cancer profile of a primary care cohort. Practice-level findings reinforce this structural interpretation. Practice-specific SIRs ranged from 0.03 to 1.64, and 29 of 42 evaluable practices (69%) differed significantly from expected incidence. The distribution was predominantly below the expected incidence line, indicating systematic under-recording rather than random fluctuation. Variation in coding system use across practices (ICPC-2 dominant, ICD-10 dominant, or mixed) offers a plausible explanation. Because all practices used the same EHR platform, this heterogeneity is less likely to reflect software differences and more likely to reflect local coding behaviour and workflow. The over-recording observed for bladder, breast, and prostate cancer adds an important nuance. It suggests that some cancer codes may have been used to document suspicion, abnormal investigations, or diagnostic pathways rather than confirmed malignancy. This is consistent with the outcome definition used here (first GP-recorded malignant diagnostic code during follow-up) and indicates that code presence varies not only in completeness but also in clinical meaning. Strengths and limitations This study has several strengths. It uses a large, real-world primary care cohort (41,782 patients) across 43 practices, with substantial longitudinal follow-up (mean 5.29 years) and broad cancer coverage (20 cancer types). Baseline missingness was low (<1% across variables), and cohort inclusion required at least two clinical encounters separated by ≥90 days, improving confidence that the analysis reflects patients engaged with primary care rather than sporadic attenders. All practices also used the same EHR system, which strengthens interpretation of inter-practice variation by reducing software-platform confounding. The limitations are also important. As a retrospective analysis of routinely collected data, the study is inherently dependent on historical coding practices and on data captured for clinical rather than research purposes. In addition, the cohort is non-representative in several respects: it is restricted to an earlier time period (2011–2018), includes only adults aged ≥60 years, is drawn entirely from practices using a single EHR system (Socrates), and comprises practices participating in the iPCRN initiative, which may differ systematically from practices that do not engage in academic or data-sharing initiatives. A further limitation is incomplete follow-up infrastructure. Exact dates of death, inactivity, or archiving were not continuously available, so dropout had to be estimated using each patient’s historical average consultation interval. This introduces uncertainty in person-time estimation and may bias incidence downward if person-time was overestimated. The key implication is not cancer-specific denominator instability, but that incidence estimates across the cohort are conditioned by an estimated rather than observed follow-up end date. Comparison with the international literature These findings are consistent with international evidence that cancer ascertainment varies across primary care, hospital, and registry datasets, and that differences in coding practice can materially affect incidence estimates and case identification. 14 International experience also supports the central importance of coding standards: the SNOMED CT literature and the POLAR project both show that improving the structure and usability of GP coding systems is critical for making primary care data fit for surveillance and research, whereas relying on clinician behaviour change alone is unlikely to be sufficient without better system design and integration. 21 , 22 More broadly, the EHR methods literature emphasises that research use requires explicit, ongoing validation of data quality rather than assuming routine clinical data are fit for purpose. 23 , 24 Linkage to national registries and mortality data is an essential part of the solution and is well established in platforms such as CPRD, 25 however linkage alone will not account every case and cannot do so in near-real-time. Hence, the most robust approach may be a hybrid model combining registry linkage with improved extraction from unstructured hospital correspondence. Conclusion This study shows that, in a historical Irish GP EHR cohort, structured diagnostic coding did not reliably approximate registry-based cancer incidence, with under-recording as the dominant pattern. The immediate implication is methodological: in a retrospective primary care cohort without continuously observed dropout and mortality dates, structured codes alone should not be treated as a high-fidelity stand-alone method for cancer case ascertainment. The next phase of GP EHR cancer research should build directly on these findings by examining more contemporary cohorts, quantifying and accounting for inter-practice coding heterogeneity (including sensitivity analyses that exclude minimally coding practices), and evaluating enhanced case ascertainment approaches that combine structured coding with free-text methods. Over time, the most important improvements are likely to come from data infrastructure: routine linkage of GP EHR data to NCRI and mortality records, greater standardisation of coding practices across sites, and recurring validation against registry benchmarks. Finally, although this study is methodological, it addresses a practical prerequisite for patient benefit: without reliable case ascertainment in primary care data, the epidemiology used to guide cancer control and service planning will remain weaker. Improving data fidelity is therefore a necessary step toward better early detection policy and practice in primary care. Ethical approval Ethical approval for analysis was granted by the Irish College of GPs Research Ethics Committee on 18 th June 2014, REC number: ICGPREC_FEB14_044. Consent Patient informed consent was not necessary during the time of the study as patient records were anonymised for data extraction which was within remit of ethics approval prior to the introduction of GDPR [implemented 2018] and Irish Health Research Regulations legislation [2018, amended 2021]. Data availability The data underlying this study consist of anonymised patient records derived from routine primary care electronic health records. Due to the sensitive nature of patient privacy and ethical regulations, the underlying original microdata cannot be shared publicly. Access to the data is restricted under data protection regulations and data sharing agreements with the data controller and is not permitted for open redistribution. However, the data may be made available upon reasonable request, subject to appropriate approvals and compliance with ethical and data protection requirements. Any collaborator who should wish to utilise this dataset may do see in conjunction with the Dept. of GP in RCSI (via the corresponding author- [email protected] ), who will conduct the analysis in line with the original 2014 agreements with REC and participating GP practices. Extended data The extended data for this study is available under the Creative Commons Attribution 4.0 International licence (CC-BY 4.0) and include the ERUDITE-MedRec project hosted on the Open Science Framework ( https://osf.io/fkndx ), with registration DOI 10.17605/OSF.IO/7AXUD , 26 CC-By Attribution 4.0 International, as well as supplemental files for the “ERUDITE-MedRec” manuscript. Reporting guidelines RECORD statement. Acknowledgements None. References 1. de Lusignan S , van Weel C : The use of routinely collected computer data for research in primary care: opportunities and challenges. Fam. Pract. 2006; 23 (2): 253–263. Publisher Full Text 2. Herrett E, Gallagher AM, Bhaskaran K, et al. : Data Resource Profile: Clinical Practice Research Datalink (CPRD). Int. J. Epidemiol. 2015; 44 (3): 827–836. PubMed Abstract | Publisher Full Text | Free Full Text 3. Agency MHPR: CPRD bibliography.2024. 4. Herrett E, Thomas SL, Schoonen WM, et al. : Validation and validity of diagnoses in the General Practice Research Database: a systematic review. Br. J. Clin. Pharmacol. 2010; 69 (1): 4–14. PubMed Abstract | Publisher Full Text | Free Full Text 5. Busingye D, Gianacas C, Pollack A, et al. : Data Resource Profile: MedicineInsight, an Australian national primary health care database. Int. J. Epidemiol. 2019; 48 (6): 1741-h. Publisher Full Text 6. de Ridder MAJ , de Wilde M , de Ben C , et al. : Data Resource Profile: The Integrated Primary Care Information (IPCI) database, The Netherlands. Int. J. Epidemiol. 2022; 51 (6): e314-e23. Publisher Full Text 7. Pericin I, Larkin J, Collins C: Diagnostic coding of chronic physical conditions in Irish general practice. Ir. J. Med. Sci. 2022; 191 (4): 1693–1699. PubMed Abstract | Publisher Full Text | Free Full Text 8. Swan D, Hannigan A, Higgins S, et al. : Development and implementation of a 'Mental Health Finder' software tool within an electronic medical record system. Ir. J. Med. Sci. 2017; 186 (1): 191–200. PubMed Abstract | Publisher Full Text 9. Murphy MOB, Delargy I, O’Brien J: ICGP submission to the Joint Committee on Health on prescribing pattern monitoring and the audit of usage and effectiveness trends for prescribed medications. Dublin: Irish College of General Practitioners; 2018 Mar. Reference Source 10. O'Connor RMP, O'Callaghan ME, et al. : Development of a primary care research network focused on chronic disease: a feasibility study for both practices and research networks. HRB Open Ressearch. 2021. Publisher Full Text 11. Collins C, Janssens K: Creating a General (Family) Practice Epidemiological Database in Ireland - Data Quality Issue Management. J Data and Information Quality. 2012; 4 (1): Article 2. 12. Kennedy C, O'Brien C, Collins C: Experience of Diagnostic Coding In Irish General Practice: The Practice Perspective. JMED Research. 2014; 2014 . 13. WHO: International Classification of Diseases, Eleventh Revision (ICD-11). WHO; 2019/2021. Reference Source 14. Whitfield E, White B, Barclay ME, et al. : Differences in recording of cancer diagnosis between datasets in England: A population-based study of linked cancer registration, hospital and primary care data. Cancer Epidemiol. 2025; 94 : 102703. PubMed Abstract | Publisher Full Text 15. Arhi CS, Bottle A, Burns EM, et al. : Comparison of cancer diagnosis recording between the Clinical Practice Research Datalink, Cancer Registry and Hospital Episodes Statistics. Cancer Epidemiol. 2018; 57 : 148–157. Publisher Full Text 16. Kearney TM, Donnelly C, Kelly JM, et al. : Validation of the completeness and accuracy of the Northern Ireland Cancer Registry. Cancer Epidemiol. 2015; 39 (3): 401–404. Publisher Full Text 17. Havard A, Manski-Nankervis JA, Thistlethwaite J, et al. : Validity of algorithms for identifying five chronic conditions in MedicineInsight, an Australian national general practice database. BMC Health Serv. Res. 2021; 21 (1): 551. PubMed Abstract | Publisher Full Text | Free Full Text 18. Margulis AV, Fortuny J, Kaye JA, et al. : Validation of Cancer Cases Using Primary Care, Cancer Registry and Hospitalization Data in the United Kingdom. Epidemiology. 2018; 29 (2): 308–313. PubMed Abstract | Publisher Full Text | Free Full Text 19. Redmond P: Medication Reconciliation: the primary secondary care interface. Royal College of Surgeons in Ireland; 2017. Thesis. Publisher Full Text 20. Benchimol EI, Smeeth L, Guttmann A, et al. : The REporting of studies Conducted using Observational Routinely-collected health Data (RECORD) Statement. PLoS Med. 2015; 12 (10): e1001885. Publisher Full Text 21. Chang E, Mostafa J: The use of SNOMED CT, 2013-2020: a literature review. J. Am. Med. Inform. Assoc. 2021; 28 (9): 2017–2026. PubMed Abstract | Publisher Full Text | Free Full Text 22. Pearce C, McLeod A, Patrick J, et al. : Coding and classifying GP data: the POLAR project. BMJ Health Care Inform. 2019; 26 (1). Publisher Full Text 23. Weiskopf NG, Weng C: Methods and dimensions of electronic health record data quality assessment: enabling reuse for clinical research. J. Am. Med. Inform. Assoc. 2013; 20 (1): 144–151. PubMed Abstract | Publisher Full Text | Free Full Text 24. Ozonze O, Scott PJ, Hopgood AA: Automating Electronic Health Record Data Quality Assessment. J. Med. Syst. 2023; 47 (1): 23. PubMed Abstract | Publisher Full Text | Free Full Text 25. Padmanabhan S, Carty L, Cameron E, et al. : Approach to record linkage of primary care data from Clinical Practice Research Datalink to other health-related patient data: overview and implications. Eur. J. Epidemiol. 2019; 34 (1): 91–99. PubMed Abstract | Publisher Full Text | Free Full Text 26. Jacob BM, Adams B: ERUDITE-MedRec.2026, March 6. Publisher Full Text Comments on this article Comments (0) Version 1 VERSION 1 PUBLISHED 24 Apr 2026 ADD YOUR COMMENT Comment Author details Author details 1 Dept. of General Practice, Royal College of Surgeons in Ireland, Dublin 2, Ireland Alexander Carroll Roles: Conceptualization, Data Curation, Formal Analysis, Investigation, Methodology, Project Administration, Validation, Visualization, Writing – Original Draft Preparation, Writing – Review & Editing Benjamin M. Jacob Roles: Conceptualization, Data Curation, Formal Analysis, Funding Acquisition, Investigation, Methodology, Project Administration, Resources, Supervision, Validation, Visualization, Writing – Original Draft Preparation, Writing – Review & Editing Aisling Kenny Roles: Data Curation, Investigation, Writing – Review & Editing Linda Henry Roles: Writing – Original Draft Preparation Brittney Adams Roles: Project Administration, Supervision, Writing – Review & Editing Patrick Redmond Roles: Funding Acquisition, Project Administration, Resources, Software, Supervision, Writing – Review & Editing Competing interests No competing interests were disclosed. Grant information This research was be supported by the RCSI Research Summer School Article Versions (1) version 1 Published: 24 Apr 2026, 9:41 https://doi.org/10.12688/hrbopenres.14407.1 Copyright © 2026 Carroll A 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 $counts.viewCount downloads Citations open_in_new 0 open_in_new 0 open_in_new SEE MORE DETAILS CITE how to cite this article Carroll A, Jacob BM, Kenny A et al. A Retrospective Cohort Study Comparing the Incidence of Coded Cancer in Irish GP Records against National Cancer Registry Data [version 1; peer review: awaiting peer review] . HRB Open Res 2026, 9 :41 ( https://doi.org/10.12688/hrbopenres.14407.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 24 Apr 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 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 HRB Open Research 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 = "A Retrospective Cohort Study Comparing\u00A0the...".replace("'", ''); var linkedInUrl = "http://www.linkedin.com/shareArticle?url=https://hrbopenresearch.org/articles/9-41/v1" + "&title=" + encodeURIComponent(lTitle) + "&summary=" + encodeURIComponent('Read the article by '); var deliciousUrl = "https://del.icio.us/post?url=https://hrbopenresearch.org/articles/9-41/v1&title=" + encodeURIComponent(lTitle); var redditUrl = "http://reddit.com/submit?url=https://hrbopenresearch.org/articles/9-41/v1" + "&title=" + encodeURIComponent(lTitle); linkedInUrl += encodeURIComponent('Carroll A 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://hrbopenresearch.org/articles/9-41/v1/mendeley", icon:"/img/icon/at_mendeley.svg" }, { name: "Reddit", url: redditUrl, icon:"/img/icon/at_reddit.svg" }, ] }; var addthis_share = { url: "https://hrbopenresearch.org/articles/9-41", templates : { twitter : "A Retrospective Cohort Study Comparing\u00A0the Incidence of.... Carroll A et al., published by " + "@HRBOpenRes" + ", https://hrbopenresearch.org/articles/9-41/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/14407/15870") new F1000.Clipboard(); new F1000.ThesaurusTermsDisplay("articles", "article", "15870"); $(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 = { "55296": 0, "55105": 0, "55297": 0, "55106": 0, "55298": 0, "55107": 0, "55299": 0, "55108": 0, "55300": 0, "55109": 0, "55301": 0, "55110": 0, "55302": 0, "55111": 0, "55303": 0, "54920": 0, "55112": 0, "55304": 0, "54921": 0, "55113": 0, "54922": 0, "55114": 0, "54923": 0, "54924": 0, "54925": 0, "54926": 0, "54927": 0, "54928": 0, "54929": 0, "55295": 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 = "8a10e0b4-8e20-4270-9c3e-d2a7a3c326d5"; uuidInput.val(newUUId); $("a[href*='article_uuid=']").each(function(index, el) { var newHref = $(el).attr("href").replace(oldUUId, newUUId); $(el).attr("href", newHref); }); }); Are you a HRB-funded researcher? Submission to HRB Open Research is open to all HRB grantholders or people working on a HRB-funded/co-funded grant on or since 1 January 2017. Sign up for information about developments, publishing and publications from HRB Open Research. First Name * You must provide your first name Last Name * You must provide your last name Email * You must provide a valid email address Institution You must provide an institution. Submit Thank you! We'll keep you updated on any major new updates to HRB Open Research HRB Open Research Browse How to Publish About Contact RSS Cookie Notice Privacy Notice Legal Submit Your Research © F1000 Research Limited and its licensors ISSN 2515-4826 | Legal background var F1000platform = new F1000.Platform({ name: "hrb", displayName: "HRB Open Research", hostName: "hrbopenresearch.org", id: "5", editorialEmail: "[email protected]", infoEmail: "[email protected]" }); 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(",","/")); } }); }); (function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'9fdfd637ca2906cf',t:'MTc3OTE1OTQ3Mw=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();

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.

My notes (saved in your browser only)

Ask this paper AI returns verbatim quotes from the full text · source: preprint-html

Answers must be backed by verbatim quotes from this paper's full text. Hallucinated quotes are dropped automatically; if no verbatim passage answers the question, we say so. How this works

Citation neighborhood (no data yet)

We don't have any in-corpus citations linked to this paper yet. This is a recent paper (2026) — citers typically take a year or two to land, and the OpenAlex reference graph may still be filling in.

Source provenance

europepmc
last seen: 2026-05-20T01:45:00.602351+00:00