temps.js 995 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. function filter (treatments) {
  2. var results = [ ];
  3. var state = { };
  4. function temp (ev) {
  5. if ('duration (min)' in ev) {
  6. state.duration = ev['duration (min)'].toString( );
  7. state.raw_duration = ev;
  8. }
  9. if ('rate' in ev) {
  10. state[ev.temp] = ev.rate.toString( );
  11. state.rate = ev['rate'];
  12. state.raw_rate = ev;
  13. }
  14. if ('timestamp' in state && ev.timestamp !== state.timestamp) {
  15. state.invalid = true;
  16. } else {
  17. state.timestamp = ev.timestamp;
  18. }
  19. if ('duration' in state && ('percent' in state || 'absolute' in state)) {
  20. state.eventType = 'Temp Basal';
  21. results.push(state);
  22. state = { };
  23. }
  24. }
  25. function step (current) {
  26. switch (current._type) {
  27. case 'TempBasalDuration':
  28. case 'TempBasal':
  29. temp(current);
  30. break;
  31. default:
  32. results.push(current);
  33. break;
  34. }
  35. }
  36. treatments.forEach(step);
  37. return results;
  38. }
  39. exports = module.exports = filter;