diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb..5d11f657b 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + added: + - Update PIP documentation diff --git a/docs/book/_toc.yml b/docs/book/_toc.yml index 2f2c2e765..7c9c2f4b1 100644 --- a/docs/book/_toc.yml +++ b/docs/book/_toc.yml @@ -10,6 +10,7 @@ parts: chapters: - file: programs/gov/hmrc/child-benefit - file: programs/gov/dwp/universal-credit + - file: programs/gov/dwp/PIP - file: programs/gov/dwp/pension-credit - file: programs/gov/hmrc/national-insurance - file: programs/gov/hmrc/income-tax @@ -23,6 +24,3 @@ parts: - caption: Using the model chapters: - file: usage/getting-started - - caption: Examples - chapters: - - file: examples/income-sources diff --git a/docs/book/programs/gov/dwp/PIP.ipynb b/docs/book/programs/gov/dwp/PIP.ipynb new file mode 100644 index 000000000..842d1134e --- /dev/null +++ b/docs/book/programs/gov/dwp/PIP.ipynb @@ -0,0 +1,2459 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "730262ba", + "metadata": {}, + "source": [ + "# Personal Independence Payment (PIP)\n", + "\n", + "Personal Independence Payment (PIP) is a benefit payment administered by the Department for Work and Pensions (DWP) in the United Kingdom. It is designed to provide financial support to individuals with long-term health conditions or disabilities. PIP helps recipients with the extra costs associated with their condition and is not means-tested.\n", + "PIP is divided into two main components:\n", + "\n", + "* Daily Living Component: This component provides support to individuals who need help with daily living activities \n", + " due to their health condition or disability. The level of support is based on an assessment of the individual's \n", + " needs and can include assistance with tasks like cooking, dressing, and personal hygiene.\n", + "\n", + "\n", + "* Mobility Component: The mobility component is aimed at individuals who face mobility challenges due to their \n", + " condition. It can cover costs related to mobility aids, transportation, and other expenses associated with getting \n", + " around.\n", + "\n", + "More information could be found on the [GOV.UK (Personal Independence Payment)](https://www.gov.uk/pip) website.\n", + "\n", + "PIP components are awarded at different rates, depending on the extent of the individual's needs and the impact of their health condition or disability.\n", + "\n", + "Pension Credit parameters can be found in `policyengine_uk/parameters/gov/dwp/pip` and logic in `policyengine_uk/variables/dwp/pip.py`.\n", + "\n", + "## Legislation\n", + "\n", + "The legal framework for Personal Independence Payment is primarily defined in the legislation provided on the [The Social Security (Personal Independence Payment) Regulations 2013](https://www.legislation.gov.uk/uksi/2013/376/regulation/2) legislation website.\n", + "\n", + "## PIP Rate Changes\n", + "\n", + "The Daily Living component of Personal Independence Payment (PIP) can be further divided into two rates: the Enhanced Rate and the Standard Rate. These rates are determined based on the level of assistance an individual requires with daily living activities due to their health condition or disability.\n", + "\n", + "\n", + "* Enhanced Rate for Daily Living: This is the higher rate of the Daily Living component. Individuals who receive the \n", + " Enhanced Rate need more substantial help and support to perform daily living activities. They may have more severe \n", + " health conditions or disabilities that significantly affect their ability to independently carry out tasks such as \n", + " cooking, dressing, bathing, managing medications, and handling finances. The Enhanced Rate provides a higher level \n", + " of financial support to help cover the additional costs associated with these substantial care needs.\n", + "\n", + "\n", + "* Standard Rate for Daily Living: The Standard Rate is the lower rate of the Daily Living component. Individuals who \n", + " receive the Standard Rate still require assistance with daily living activities, but their needs are not as \n", + " extensive or severe as those who qualify for the Enhanced Rate. This rate is for individuals with moderate care \n", + " needs who may need some help with daily tasks but can manage many activities independently. The Standard Rate \n", + " provides a lower level of financial support compared to the Enhanced Rate.\n", + " \n", + "\n", + "The table below shows the rates changes covered by PolicyEngine-UK. " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "a10a7598", + "metadata": { + "tags": [ + "hide-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
element | \n", + "enhanced | \n", + "standard | \n", + "
---|---|---|
date | \n", + "\n", + " | \n", + " |
2016-01-01 | \n", + "82.30 | \n", + "55.10 | \n", + "
2017-01-01 | \n", + "82.30 | \n", + "55.10 | \n", + "
2018-01-01 | \n", + "83.10 | \n", + "55.65 | \n", + "
2019-01-01 | \n", + "85.60 | \n", + "57.30 | \n", + "
2020-01-01 | \n", + "87.65 | \n", + "58.70 | \n", + "
2021-01-01 | \n", + "89.15 | \n", + "59.70 | \n", + "
2022-01-01 | \n", + "89.60 | \n", + "60.00 | \n", + "
2023-01-01 | \n", + "92.40 | \n", + "61.85 | \n", + "
element | \n", + "enhanced | \n", + "standard | \n", + "
---|---|---|
date | \n", + "\n", + " | \n", + " |
2016-01-01 | \n", + "55.10 | \n", + "21.80 | \n", + "
2017-01-01 | \n", + "55.10 | \n", + "21.80 | \n", + "
2018-01-01 | \n", + "55.65 | \n", + "22.00 | \n", + "
2019-01-01 | \n", + "57.30 | \n", + "22.65 | \n", + "
2020-01-01 | \n", + "58.70 | \n", + "23.20 | \n", + "
2021-01-01 | \n", + "59.70 | \n", + "23.60 | \n", + "
2022-01-01 | \n", + "60.00 | \n", + "23.70 | \n", + "
2023-01-01 | \n", + "61.85 | \n", + "24.45 | \n", + "
0?[0]:[]);if(o.enter().append(\"g\").classed(f.containerClassName,!0).style(\"cursor\",\"pointer\"),o.exit().each((function(){n.select(this).selectAll(\"g.\"+f.headerGroupClassName).each(a)})).remove(),0!==r.length){var l=o.selectAll(\"g.\"+f.headerGroupClassName).data(r,p);l.enter().append(\"g\").classed(f.headerGroupClassName,!0);for(var u=s.ensureSingle(o,\"g\",f.dropdownButtonGroupClassName,(function(t){t.style(\"pointer-events\",\"all\")})),c=0;c 90&&i.log(\"Long binary search...\"),h-1},e.sorterAsc=function(t,e){return t-e},e.sorterDes=function(t,e){return e-t},e.distinctVals=function(t){var r,n=t.slice();for(n.sort(e.sorterAsc),r=n.length-1;r>-1&&n[r]===o;r--);for(var i,a=n[r]-n[0]||1,s=a/(r||1)/1e4,l=[],u=0;u<=r;u++){var c=n[u],f=c-i;void 0===i?(l.push(c),i=c):f>s&&(a=Math.min(a,f),l.push(c),i=c)}return{vals:l,minDiff:a}},e.roundUp=function(t,e,r){for(var n,i=0,a=e.length-1,o=0,s=r?0:1,l=r?1:0,u=r?Math.ceil:Math.floor;i0&&(n=1),r&&n)return t.sort(e)}return n?t:t.reverse()},e.findIndexOfMin=function(t,e){e=e||a;for(var r,n=1/0,i=0;il?r.y-l:0;return Math.sqrt(u*u+f*f)}for(var p=h(u);p;){if((u+=p+r)>f)return;p=h(u)}for(p=h(f);p;){if(u>(f-=p+r))return;p=h(f)}return{min:u,max:f,len:f-u,total:c,isClosed:0===u&&f===c&&Math.abs(n.x-i.x)<.1&&Math.abs(n.y-i.y)<.1}},e.findPointOnPath=function(t,e,r,n){for(var i,a,o,s=(n=n||{}).pathLength||t.getTotalLength(),l=n.tolerance||.001,u=n.iterationLimit||30,c=t.getPointAtLength(0)[r]>t.getPointAtLength(s)[r]?-1:1,f=0,h=0,p=s;f0?p=i:h=i,f++}return a}},81697:function(t,e,r){\"use strict\";var n=r(92770),i=r(84267),a=r(25075),o=r(21081),s=r(22399).defaultLine,l=r(73627).isArrayOrTypedArray,u=a(s);function c(t,e){var r=t;return r[3]*=e,r}function f(t){if(n(t))return u;var e=a(t);return e.length?e:u}function h(t){return n(t)?t:1}t.exports={formatColor:function(t,e,r){var n,i,s,p,d,v=t.color,g=l(v),y=l(e),m=o.extractOpts(t),x=[];if(n=void 0!==m.colorscale?o.makeColorScaleFuncFromTrace(t):f,i=g?function(t,e){return void 0===t[e]?u:a(n(t[e]))}:f,s=y?function(t,e){return void 0===t[e]?1:h(t[e])}:h,g||y)for(var b=0;b
/i;e.BR_TAG_ALL=/
/gi;var _=/(^|[\\s\"'])style\\s*=\\s*(\"([^\"]*);?\"|'([^']*);?')/i,w=/(^|[\\s\"'])href\\s*=\\s*(\"([^\"]*)\"|'([^']*)')/i,T=/(^|[\\s\"'])target\\s*=\\s*(\"([^\"\\s]*)\"|'([^'\\s]*)')/i,k=/(^|[\\s\"'])popup\\s*=\\s*(\"([\\w=,]*)\"|'([\\w=,]*)')/i;function A(t,e){if(!t)return null;var r=t.match(e),n=r&&(r[3]||r[4]);return n&&L(n)}var M=/(^|;)\\s*color:/;e.plainText=function(t,e){for(var r=void 0!==(e=e||{}).len&&-1!==e.len?e.len:1/0,n=void 0!==e.allowedTags?e.allowedTags:[\"br\"],i=t.split(m),a=[],o=\"\",s=0,l=0;l
\"+l;e.text=u}(t,o,r,u):\"log\"===c?function(t,e,r,n,a){var o=t.dtick,l=e.x,u=t.tickformat,c=\"string\"==typeof o&&o.charAt(0);if(\"never\"===a&&(a=\"\"),n&&\"L\"!==c&&(o=\"L3\",c=\"L\"),u||\"L\"===c)e.text=bt(Math.pow(10,l),t,a,n);else if(i(o)||\"D\"===c&&s.mod(l+.01,1)<.1){var f=Math.round(l),h=Math.abs(f),p=t.exponentformat;\"power\"===p||mt(p)&&xt(f)?(e.text=0===f?1:1===f?\"10\":\"10\"+(f>1?\"\":P)+h+\"\",e.fontSize*=1.25):(\"e\"===p||\"E\"===p)&&h>2?e.text=\"1\"+p+(f>0?\"+\":P)+h:(e.text=bt(Math.pow(10,l),t,\"\",\"fakehover\"),\"D1\"===o&&\"y\"===t._id.charAt(0)&&(e.dy-=e.fontSize/6))}else{if(\"D\"!==c)throw\"unrecognized dtick \"+String(o);e.text=String(Math.round(Math.pow(10,s.mod(l,1)))),e.fontSize*=.75}if(\"D1\"===t.dtick){var d=String(e.text).charAt(0);\"0\"!==d&&\"1\"!==d||(\"y\"===t._id.charAt(0)?e.dx-=e.fontSize/4:(e.dy+=e.fontSize/2,e.dx+=(t.range[1]>t.range[0]?1:-1)*e.fontSize*(l<0?.5:.25)))}}(t,o,0,u,v):\"category\"===c?function(t,e){var r=t._categories[Math.round(e.x)];void 0===r&&(r=\"\"),e.text=String(r)}(t,o):\"multicategory\"===c?function(t,e,r){var n=Math.round(e.x),i=t._categories[n]||[],a=void 0===i[1]?\"\":String(i[1]),o=void 0===i[0]?\"\":String(i[0]);r?e.text=o+\" - \"+a:(e.text=a,e.text2=o)}(t,o,r):Dt(t)?function(t,e,r,n,i){if(\"radians\"!==t.thetaunit||r)e.text=bt(e.x,t,i,n);else{var a=e.x/180;if(0===a)e.text=\"0\";else{var o=function(t){function e(t,e){return Math.abs(t-e)<=1e-6}var r=function(t){for(var r=1;!e(Math.round(t*r)/r,t);)r*=10;return r}(t),n=t*r,i=Math.abs(function t(r,n){return e(n,0)?r:t(n,r%n)}(n,r));return[Math.round(n/i),Math.round(r/i)]}(a);if(o[1]>=100)e.text=bt(s.deg2rad(e.x),t,i,n);else{var l=e.x<0;1===o[1]?1===o[0]?e.text=\"π\":e.text=o[0]+\"π\":e.text=[\"\",o[0],\"\",\"⁄\",\"\",o[1],\"\",\"π\"].join(\"\"),l&&(e.text=P+e.text)}}}}(t,o,r,u,v):function(t,e,r,n,i){\"never\"===i?i=\"\":\"all\"===t.showexponent&&Math.abs(e.x/t.dtick)<1e-6&&(i=\"hide\"),e.text=bt(e.x,t,i,n)}(t,o,0,u,v),n||(t.tickprefix&&!d(t.showtickprefix)&&(o.text=t.tickprefix+o.text),t.ticksuffix&&!d(t.showticksuffix)&&(o.text+=t.ticksuffix)),t.labelalias&&t.labelalias.hasOwnProperty(o.text)){var g=t.labelalias[o.text];\"string\"==typeof g&&(o.text=g)}if(\"boundaries\"===t.tickson||t.showdividers){var y=function(e){var r=t.l2p(e);return r>=0&&r<=t._length?e:null};o.xbnd=[y(o.x-.5),y(o.x+t.dtick-.5)]}return o},q.hoverLabelText=function(t,e,r){r&&(t=s.extendFlat({},t,{hoverformat:r}));var n=Array.isArray(e)?e[0]:e,i=Array.isArray(e)?e[1]:void 0;if(void 0!==i&&i!==n)return q.hoverLabelText(t,n,r)+\" - \"+q.hoverLabelText(t,i,r);var a=\"log\"===t.type&&n<=0,o=q.tickText(t,t.c2l(a?-n:n),\"hover\").text;return a?0===n?\"0\":P+o:o};var yt=[\"f\",\"p\",\"n\",\"μ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\"];function mt(t){return\"SI\"===t||\"B\"===t}function xt(t){return t>14||t<-15}function bt(t,e,r,n){var a=t<0,o=e._tickround,l=r||e.exponentformat||\"B\",u=e._tickexponent,c=q.getTickFormat(e),f=e.separatethousands;if(n){var h={exponentformat:l,minexponent:e.minexponent,dtick:\"none\"===e.showexponent?e.dtick:i(t)&&Math.abs(t)||1,range:\"none\"===e.showexponent?e.range.map(e.r2d):[0,t||1]};vt(h),o=(Number(h._tickround)||0)+4,u=h._tickexponent,e.hoverformat&&(c=e.hoverformat)}if(c)return e._numFormat(c)(t).replace(/-/g,P);var p,d=Math.pow(10,-o)/2;if(\"none\"===l&&(u=0),(t=Math.abs(t))
\")):x=h.textLabel;var L={x:h.traceCoordinate[0],y:h.traceCoordinate[1],z:h.traceCoordinate[2],data:w._input,fullData:w,curveNumber:w.index,pointNumber:T};d.appendArrayPointValue(L,w,T),t._module.eventData&&(L=w._module.eventData(L,h,w,{},T));var C={points:[L]};if(e.fullSceneLayout.hovermode){var P=[];d.loneHover({trace:w,x:(.5+.5*m[0]/m[3])*s,y:(.5-.5*m[1]/m[3])*l,xLabel:k.xLabel,yLabel:k.yLabel,zLabel:k.zLabel,text:x,name:c.name,color:d.castHoverOption(w,T,\"bgcolor\")||c.color,borderColor:d.castHoverOption(w,T,\"bordercolor\"),fontFamily:d.castHoverOption(w,T,\"font.family\"),fontSize:d.castHoverOption(w,T,\"font.size\"),fontColor:d.castHoverOption(w,T,\"font.color\"),nameLength:d.castHoverOption(w,T,\"namelength\"),textAlign:d.castHoverOption(w,T,\"align\"),hovertemplate:f.castOption(w,T,\"hovertemplate\"),hovertemplateLabels:f.extendFlat({},L,k),eventData:[L]},{container:n,gd:r,inOut_bbox:P}),L.bbox=P[0]}h.distance<5&&(h.buttons||_)?r.emit(\"plotly_click\",C):r.emit(\"plotly_hover\",C),this.oldEventData=C}else d.loneUnhover(n),this.oldEventData&&r.emit(\"plotly_unhover\",this.oldEventData),this.oldEventData=void 0;e.drawAnnotations(e)},T.recoverContext=function(){var t=this;t.glplot.dispose();var e=function(){t.glplot.gl.isContextLost()?requestAnimationFrame(e):t.initializeGLPlot()?t.plot.apply(t,t.plotArgs):f.error(\"Catastrophic and unrecoverable WebGL error. Context lost.\")};requestAnimationFrame(e)};var A=[\"xaxis\",\"yaxis\",\"zaxis\"];function M(t,e,r){for(var n=t.fullSceneLayout,i=0;i<3;i++){var a=A[i],o=a.charAt(0),s=n[a],l=e[o],u=e[o+\"calendar\"],c=e[\"_\"+o+\"length\"];if(f.isArrayOrTypedArray(l))for(var h,p=0;p<(c||l.length);p++)if(f.isArrayOrTypedArray(l[p]))for(var d=0;d
\");b.text(T).attr(\"data-unformatted\",T).call(f.convertToTspans,t),_=c.bBox(b.node())}b.attr(\"transform\",a(-3,8-_.height)),x.insert(\"rect\",\".static-attribution\").attr({x:-_.width-6,y:-_.height-3,width:_.width+6,height:_.height+3,fill:\"rgba(255, 255, 255, 0.75)\"});var k=1;_.width+6>w&&(k=w/(_.width+6));var A=[n.l+n.w*h.x[1],n.t+n.h*(1-h.y[0])];x.attr(\"transform\",a(A[0],A[1])+o(k))}},e.updateFx=function(t){for(var e=t._fullLayout,r=e._subplots[p],n=0;n
\")}(e,r,n,i):v.getValue(s.text,r),v.coerceString(m,o)}(C,n,i,T,M);w=function(t,e){var r=v.getValue(t.textposition,e);return v.coerceEnumerated(x,r)}(O,i);var z=\"stack\"===g.mode||\"relative\"===g.mode,R=n[i],F=!z||R._outmost;if(D&&\"none\"!==w&&(!R.isBlank&&s!==u&&f!==p||\"auto\"!==w&&\"inside\"!==w)){var B=C.font,N=d.getBarColor(n[i],O),j=d.getInsideTextFont(O,i,B,N),U=d.getOutsideTextFont(O,i,B),V=r.datum();I?\"log\"===T.type&&V.s0<=0&&(s=T.range[0]