Skip to content

Commit

Permalink
Merge pull request #104 from coronasafe/fix-care_fe#6393
Browse files Browse the repository at this point in the history
send bp last observation
  • Loading branch information
mathew-alex authored Oct 6, 2023
2 parents b3e1b92 + 75362c1 commit 7de5da2
Showing 1 changed file with 40 additions and 7 deletions.
47 changes: 40 additions & 7 deletions src/controller/ObservationController.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,7 @@ var activeDevices = [];
var lastRequestData = {};
var logData = [];
var statusData = [];

// [{
// time: new Date(),
// data: {
// device_id: status
// }
// }]
var lastObservationData = {};

// start updating after 1 minutes of starting the middleware
let lastUpdatedToCare = new Date() - 59 * 60 * 1000;
Expand Down Expand Up @@ -112,6 +106,27 @@ const addLogData = (newData) => {
];
};

const updateLastObservationData = (flattenedObservations, skipEmpty = true) => {
flattenedObservations.forEach((observation) => {
const observationId =
observation.observation_id === "waveform"
? `waveform_${observation["wave-name"]}`
: observation.observation_id;

if (
skipEmpty &&
!observation.value &&
!observation.data &&
observation.status !== "final"
) {
return;
}

lastObservationData[observationId] ??= {};
lastObservationData[observationId][observation.device_id] = observation;
});
};

const updateObservationsToCare = async () => {
// console.log(dailyRoundTag() + "updateObservationsToCare called")
const now = new Date();
Expand Down Expand Up @@ -472,13 +487,31 @@ export class ObservationController {

const flattenedObservations = flattenObservations(observations);

updateLastObservationData(flattenedObservations);
this.latestObservation.set(flattenedObservations);

filterClients(req.wsInstance.getWss(), "/observations").forEach(
(client) => {
const filteredObservations = flattenedObservations?.filter(
(observation) => observation?.device_id === client?.params?.ip
);

if (
lastObservationData["blood-pressure"]?.[client?.params?.ip] &&
dayjs().diff(
dayjs(
lastObservationData["blood-pressure"]?.[client?.params?.ip][
"date-time"
]
),
"minutes"
) < 30
) {
filteredObservations?.push(
lastObservationData["blood-pressure"][client?.params?.ip]
);
}

if (filteredObservations.length) {
client.send(JSON.stringify(filteredObservations));
}
Expand Down

0 comments on commit 7de5da2

Please sign in to comment.