compute = function(fDec, fRec, decFirst = true) {
const curstate=[];
const decArr=new Array();
const recArr=new Array();
patients.forEach(p => {
for (let i = 0; i < +p["state.in_hospital.in"]; i++) {
curstate.push({day_in: p.day});
}
const today = p["day"];
const dec = p["state.deceased.hospital"];
const hout = p["state.in_hospital.out"];
if (decFirst) {
for (let i = 0; i < dec; i++) {
const timeToDeath = today - fDec(curstate, today).day_in;
decArr[timeToDeath] = (~~decArr[timeToDeath])+1;
}
}
for (let i = 0; i < hout; i++) {
const timeToRelease = today - fRec(curstate, today).day_in;
recArr[timeToRelease] = (~~recArr[timeToRelease])+1;
}
if (!decFirst) {
for (let i = 0; i < dec; i++) {
const timeToDeath = today - fDec(curstate, today).day_in;
decArr[timeToDeath] = (~~decArr[timeToDeath])+1;
}
}
});
const sumDec = decArr.reduce((res,a) => res + a);
const sumRec = recArr.reduce((res,a) => res + a);
const sumCur = curstate.map(s=>1).reduce((a,b) => a + b);
return {
"decArr": decArr,
"sumDec": sumDec,
"cumDec": dist2cum(decArr).map(a => a/sumDec),
"recArr": recArr,
"sumRec": sumRec,
"cumRec": dist2cum(recArr).map(a => a/sumRec),
"curstate": curstate,
"sumCur": sumCur
}
}