def on_post(self, req, resp): transport_id = int(req.queryParams("transportId")) bed_id = int(req.queryParams("bedId")) print(f"Client request to assign patient {transport_id} to bed {bed_id}") command = AssignStaffToBedCommand(StaffAssignmentManager()) command.assign_staff_to_bed(transport_id, bed_id) resp.status = falcon.HTTP_200 resp.text = "OK"
def on_post(self, req, resp): transport_id = int(req.queryParams("transportId")) bed_id = int(req.queryParams("bedId")) print(f"Client request to assign patient {transport_id} to bed {bed_id}") command = AssignPatientToBedCommand(StaffAssignmentManager(), InboundPatientController(self.emergency_transport_service)) command.assign_patient_to_bed(transport_id, bed_id) resp.status = falcon.HTTP_200 resp.body = "OK"
class AvailableBeds(object): def __init__(self): self.manager = StaffAssignmentManager() def on_get(self, req, resp): print("Received request for available beds from client.") beds = self.manager.get_available_beds() resp.status = falcon.HTTP_200 resp.text = json.dumps(beds, cls=BedEncoder, indent=4)
class AvailableStaff(object): def __init__(self): self.manager = StaffAssignmentManager() def on_get(self, req, resp): print("Recieved request for available staff from client.") physicians = self.manager.get_available_staff() resp.status = falcon.HTTP_200 resp.body = json.dumps(physicians, cls=StaffEncoder, indent=4)
class PhysiciansOnDuty(object): manager: StaffAssignmentManager def __init__(self): self.manager = StaffAssignmentManager() def on_get(self, req, resp): print("Recieved request for physicians on duty from client.") physicians = self.manager.get_physicians_on_duty() resp.status = falcon.HTTP_200 resp.body = json.dumps(physicians, cls=StaffEncoder, indent=4)
def check(self): manager = StaffAssignmentManager() transport_service = EmergencyResponseService("http://localhost", 4567, 1000) controller = InboundPatientController(transport_service) red = [1, 2] yellow = [1, 1] green = [0, 1] red_incremented = False yellow_incremented = False green_incremented = False patients = controller.current_inbound_patients() staff = manager.get_available_staff() beds = manager.get_available_beds() bedcrits = 0 redin = 0 yellowin = 0 greenin = 0 staffcur = [0, 0] need = [0, 0] for bed in beds: if bed.is_critical_care(): bedcrits += 1 for patient in patients: if patient.get_priority() == Priority.RED: redin += 1 elif patient.getPriority() == Priority.YELLOW: yellowin += 1 elif patient.getPriority() == Priority.GREEN: greenin += 1 for cur in staff: if cur.get_role() == StaffRole.DOCTOR: staffcur[0] += 1 elif StaffRole.NURSE == cur.getRole(): staffcur[1] += 1 if redin > (bedcrits + self.red_over): self.red_count += 1 red_incremented = True if yellowin + greenin > (beds.size() - bedcrits + self.yellow_over + self.green_over): if greenin > (beds.size() - bedcrits + self.green_over) and yellowin <= ( beds.size() - bedcrits + self.yellow_over): self.green_count += 1 green_incremented = True else: self.green_count += 1 self.yellow_count += 1 green_incremented = True yellow_incremented = True need[0] = redin * red[0] need[0] += yellowin * yellow[0] need[0] += greenin * green[0] need[1] = redin * red[1] need[1] += yellowin * yellow[1] need[1] += greenin * green[1] if need[0] > staffcur[0]: diff = need[0] - staffcur[0] if greenin * green[0] >= diff: if not green_incremented: green_incremented = True self.green_count += 1 else: both = (yellowin * yellow[0]) + (greenin * green[0]) if both >= diff: if not green_incremented: green_incremented = True self.green_count += 1 if not yellow_incremented: yellow_incremented = True self.yellow_count += 1 else: if not green_incremented: green_incremented = True self.green_count += 1 if not yellow_incremented: yellow_incremented = True self.yellow_count += 1 if not red_incremented: red_incremented = True self.red_count += 1 if need[1] > staffcur[1]: diff = need[1] - staffcur[1] if (greenin * green[1]) >= diff: if not green_incremented: green_incremented = True self.green_count += 1 else: both = (yellowin * yellow[1]) + (greenin * green[1]) if both >= diff: if not green_incremented: green_incremented = True self.green_count += 1 if not yellow_incremented: yellow_incremented = True self.yellow_count += 1 else: if not green_incremented: green_incremented = True self.green_count += 1 if not yellow_incremented: yellow_incremented = True self.yellow_count += 1 if not red_incremented: red_incremented = True self.red_count += 1 if red_incremented: if self.red_count > self.allowed_count and not self.red_divergence: self.red_divergence = True transport_service.request_inbound_diversion(Priority.RED) self.send_divergence_page( "Entered divergence for RED priority patients!", True) self.red_count = 0 else: self.red_count = 0 if self.red_divergence: transport_service.remove_inbound_diversion(Priority.RED) self.send_divergence_page( "Ended divergence for RED priority patients.", True) self.red_divergence = False if yellow_incremented: if self.yellow_count > self.allowed_count and not self.yellow_divergence: self.yellow_divergence = True transport_service.request_inbound_diversion(Priority.YELLOW) self.send_divergence_page( "Entered divergence for YELLOW priority patients!", True) self.yellow_count = 0 else: self.yellow_count = 0 if self.yellow_divergence: transport_service.remove_inbound_diversion(Priority.YELLOW) self.send_divergence_page( "Ended divergence for YELLOW priority patients.", False) self.yellow_divergence = False if green_incremented: if self.green_count > self.allowed_count and not self.green_divergence: self.green_divergence = True transport_service.request_inbound_diversion(Priority.GREEN) self.send_divergence_page( "Entered divergence for GREEN priority patients!", True) self.green_count = 0 else: self.green_count = 0 if self.green_divergence: transport_service.remove_inbound_diversion(Priority.GREEN) self.send_divergence_page( "Ended divergence for GREEN priority patients.", False) self.green_divergence = False
def __init__(self): self.manager = StaffAssignmentManager()
def on_get(self, req, resp): AlertScanner(StaffAssignmentManager(), InboundPatientController(EmergencyResponseService("localhost", 4567, 1000))).scan() resp.status = falcon.HTTP_200 resp.body = "OK"