Esempio n. 1
0
 def markNew(self, entry):
     x = UpdateRoutingSlipEntry(self._host, self._port, self._token,
                                entry["id"])
     x.setState("New")
     ret = x.send(timeout=30)
     if ret[0] != 200:
         print("markNew failure for entry {}".format(entry["id"]))
Esempio n. 2
0
 def setRoutingSlipEntryState(self, rseId, state):
     x = UpdateRoutingSlipEntry(self._host, self._port, self._token, rseId)
     x.setState(state)
     ret = x.send(timeout=30)
     if ret[0] != 200:
         self.showError(
             "setRoutingSlipState failure to set state {} for routingslip entry {}"
             .format(state, rseId))
Esempio n. 3
0
def checkinWorker(clinicstationid, mockclinic):
    print("checkinWorker starting thread for clinic station {}".format(clinicstationid))
    host = mockclinic._host
    port = mockclinic._port
    token = mockclinic._token
    clinicid = mockclinic.getClinic()
    while True:
        time.sleep(randint(1, 30))
        # get queue for this clinicstation 
        # if item in queue, checkin the patient, work for some
        # random amount of time, then check out
    
        x = GetQueue(host, port, token)
        x.setClinic(clinicid)
        x.setClinicStation(clinicstationid)
        ret = x.send(timeout=30)
        if ret[0] == 200 and len(ret[1]["queues"]) > 0:
            try:
                print("query queues for clinicstation {} got {}".format(clinicstationid, ret[1]))
                entries = ret[1]["queues"][0]["entries"]
                if len(entries):
                    # something in the queue
                    entry = entries[0]
                    q = DeleteQueueEntry(host, port, token)
                    q.setQueueEntryId(entry["id"])
                    ret = q.send(timeout=30)
                    if ret[0] == 200:
                        print("GetQueue: deleted queueentry {}".format(entry["id"]))
                        y = UpdateClinicStation(host, port, token, clinicstationid)
                        y.setActive(True)
                        y.setActivePatient(entry["patient"])
                        ret = y.send(timeout=30)
                        if ret[0] == 200:
                            print("GetQueue: set clinicstation {} active patient to {}".format(clinicstationid, entry["patient"]))
                            z = UpdateRoutingSlipEntry(host, port, token, entry["routingslipentry"])
                            z.setState("Checked In")
                            ret = z.send(timeout=30)
                            if ret[0] == 200:
                                print("GetQueue: clinicstation {} checked in patient {}".format(clinicstationid, entry["patient"]))
                                # do some work
                                t = randint(1, 600)
                                print("GetQueue: clinicstation {} starting work on patient {} for {} seconds".format(clinicstationid, entry["patient"], t))
                                time.sleep(t)
                                z.setState("Checked Out")
                                ret = z.send(timeout=30)
                                if ret[0] == 200:
                                    print("GetQueue: clinicstation {} checked out patient {}".format(clinicstationid, entry["patient"]))
                                    y.setActive(False)
                                    #y.setActivePatient(None)
                                    ret = y.send(timeout=30)
                                    if ret[0] == 200:
                                        print("GetQueue: set clinicstation {} active state to False".format(clinicstationid))
                                    else:
                                        print("GetQueue: failed to set clinicstation active to false {}".format(ret[0]))
                                else:
                                    print("GetQueue: failed to set state to 'Checked Out' {}".format(ret[0]))
                            else:
                                print("GetQueue: failed to set state to 'Checked In' {}".format(ret[0]))
                        else:
                            print("GetQueue: failed to set clinicstation active patient id {} : {}".format(entry["patient"], ret[0]))
                    else: 
                        print("GetQueue: failed to delete queue entry {}  {}".format(entry["id"], ret[0]))
                else:
                    print("GetQueue: no waiting entries for clinicstation {}".format(clinicstationid))
            except Exception as e:
                msg = sys.exc_info()[0]
                print("GetQueue: exception {}: {}".format(ret[1], msg))
        else:
            print("GetQueue: failed to get queue entry for clinicstation {}: {}".format(clinicstationid, ret[0]))
Esempio n. 4
0
 def markScheduled(self, entry):
     x = UpdateRoutingSlipEntry(self._host, self._port, self._token, entry["id"])
     x.setState("Scheduled")
     ret = x.send(timeout=30)
Esempio n. 5
0
def checkinWorker(clinicstationid, mockclinic):
    print("checkinWorker starting thread for clinic station {}".format(clinicstationid))
    host = mockclinic._host
    port = mockclinic._port
    token = mockclinic._token   
    doReturnToClinicStation = mockclinic._doReturnToClinicStation
    clinicid = mockclinic.getClinic() 
    clinicstations = mockclinic.getClinicStations()
    stations = mockclinic.getStations()
    while True:
        time.sleep(randint(1, 30))
        # get queue for this clinicstation 
        # if item in queue, checkin the patient, work for some
        # random amount of time, then check out
    
        x = GetClinicStation(host, port, token)
        x.setId(clinicstationid)
        ret = x.send(timeout=30)
        if ret[0] == 200:
            if ret[1]["away"] == True:
                continue
        else:
            print("checkinWorker: unable to get clinicstation {} ret {}".format(clinicstationid, ret[0]))
        
        try:    
            stationid = ret[1]["station"] # used to find returntoclinicstation matches
        except:
            print("checkinWorker: unable to get station for clinicstation {}".format(clinicstationid))
            continue

        x = GetQueue(host, port, token)
        x.setClinic(clinicid)
        x.setClinicStation(clinicstationid)
        ret = x.send(timeout=30)
        if ret[0] == 200 and len(ret[1]["queues"]) > 0:
            try:
                print("checkinWorker: query queues for clinicstation {} got {}".format(clinicstationid, ret[1]))
                entries = ret[1]["queues"][0]["entries"]
                if len(entries):
                    # something in the queue
                    entry = entries[0]
                    q = DeleteQueueEntry(host, port, token)
                    q.setQueueEntryId(entry["id"])
                    ret = q.send(timeout=30)
                    if ret[0] == 200:
                        print("checkinWorker: deleted queueentry {}".format(entry["id"]))
                        y = UpdateClinicStation(host, port, token, clinicstationid)
                        y.setActive(True)
                        y.setActivePatient(entry["patient"])
                        ret = y.send(timeout=30)
                        if ret[0] == 200:
                            print("checkinWorker: set clinicstation {} active patient to {}".format(clinicstationid, entry["patient"]))
                            z = UpdateRoutingSlipEntry(host, port, token, entry["routingslipentry"])
                            z.setState("Checked In")
                            ret = z.send(timeout=30)
                            if ret[0] == 200:
                                print("checkinWorker: clinicstation {} checked in patient {}".format(clinicstationid, entry["patient"]))
                                r = CreateStateChange(host, port, token)
                                r.setClinicStation(clinicstationid)
                                r.setPatient(entry["patient"])
                                r.setState("in")
                                ret = r.send(timeout=30)
                                if ret[0] == 200:
                                    # do some work
                                    t = randint(120, 180)
                                    print("checkinWorker: clinicstation {} starting work on patient {} for {} seconds".format(clinicstationid, entry["patient"], t))
                                    time.sleep(t)

                                    '''
                                    check for a returntoclinicstation object
                                    that is in state scheduled_dest and matches
                                    our station type and patient for this
                                    clinic. If found, update the state of the
                                    returntoclinicstation object to 
                                    checked_out_dest.
                                    '''

                                    success = checkAndUpdateScheduledDestReturnToClinicStation(mockclinic, clinicid, entry["patient"], stationid)

                                    if not hasReturnToClinicStation(mockclinic, clinicid, entry["patient"]) and randint(0, 1) == 1 and doReturnToClinicStation == True:
                                        o = randint(1, len(stations))
                                        if o != stationid and not inRoutingSlip(mockclinic, clinicid, entry["patient"], o):
                                            try:              
                                                # create returntoclinicstation 
                                                print("checkinWorker: Creating return to clinicstation record")
                                                rtc = CreateReturnToClinicStation(host, port, token, clinicid, entry["patient"], o, clinicstationid)

                                                ret = rtc.send(timeout=30)
                                                if ret[0] != 200:
                                                    print("checkinWorker: Unable to create return to clinicstation object. clinic {} patient {} station {} clinicstation {} ret is {}".format(clinicid, entry["patient"], o, clinicstationid, ret[0]))
                                                    sys.exit(1)
                                                else:
                                                    print("checkinWorker: Created return to clinicstation object")
                                            except Exception as e:
                                                msg = sys.exc_info()[0]
                                                print("checkinWorker: exception creating return to clinic {}: {}".format(ret[1], msg))
                                                sys.exit(1)

                                    # check the patient out

                                    z.setState("Checked Out")
                                    ret = z.send(timeout=30)
                                    if ret[0] == 200:
                                        print("checkinWorker: clinicstation {} checked out patient {}".format(clinicstationid, entry["patient"]))
                                        r.setState("out")
                                        ret = r.send(timeout=30)
                                        if ret[0] == 200:
                                            y.setActive(False)
                                            ret = y.send(timeout=30)
                                            if ret[0] == 200:
                                                print("checkinWorker: set clinicstation {} active state to False".format(clinicstationid))
                                            else:
                                                print("checkinWorker: failed to set clinicstation active to false {}".format(ret[0]))
                                        else:
                                            print("checkinWorker: failed to create statechange record for state 'out' {}".format(ret[0]))
                                    else:
                                        print("checkinWorker: failed to set state to 'Checked Out' {}".format(ret[0]))
                                else:
                                    print("checkinWorker: failed to create statechange record for state 'in' {}".format(ret[0]))
                            else:
                                print("checkinWorker: failed to set state to 'Checked In' {}".format(ret[0]))
                        else:
                            print("checkinWorker: failed to set clinicstation active patient id {} : {}".format(entry["patient"], ret[0]))
                    else: 
                        print("checkinWorker: failed to delete queue entry {}  {}".format(entry["id"], ret[0]))
                else:
                    print("checkinWorker: no waiting entries for clinicstation {}".format(clinicstationid))
            except Exception as e:
                msg = sys.exc_info()[0]
                print("checkinWorker: exception {}: {}".format(ret[1], msg))
                sys.exit(1)
        else:
            print("checkinWorker: failed to get queue entry for clinicstation {}: {}".format(clinicstationid, ret[0]))
Esempio n. 6
0
 def setRoutingSlipEntryState(self, rseId, state):
     x = UpdateRoutingSlipEntry(self._host, self._port, self._token, rseId)
     x.setState(state)
     ret = x.send(timeout=30)
     if ret[0] != 200:
         print("setRoutingSlipState failure to set state {} for routingslip entry {}".format(state, rseId))
Esempio n. 7
0
def checkinWorker(clinicstationid, mockclinic):
    print("checkinWorker starting thread for clinic station {}".format(
        clinicstationid))
    host = mockclinic._host
    port = mockclinic._port
    token = mockclinic._token
    doReturnToClinicStation = mockclinic._doReturnToClinicStation
    clinicid = mockclinic.getClinic()
    clinicstations = mockclinic.getClinicStations()
    stations = mockclinic.getStations()
    while True:
        time.sleep(randint(1, 30))
        # get queue for this clinicstation
        # if item in queue, checkin the patient, work for some
        # random amount of time, then check out

        x = GetClinicStation(host, port, token)
        x.setId(clinicstationid)
        ret = x.send(timeout=30)
        if ret[0] == 200:
            if ret[1]["away"] == True:
                continue
        else:
            print(
                "checkinWorker: unable to get clinicstation {} ret {}".format(
                    clinicstationid, ret[0]))

        try:
            stationid = ret[1][
                "station"]  # used to find returntoclinicstation matches
        except:
            print("checkinWorker: unable to get station for clinicstation {}".
                  format(clinicstationid))
            continue

        x = GetQueue(host, port, token)
        x.setClinic(clinicid)
        x.setClinicStation(clinicstationid)
        ret = x.send(timeout=30)
        if ret[0] == 200 and len(ret[1]["queues"]) > 0:
            try:
                print(
                    "checkinWorker: query queues for clinicstation {} got {}".
                    format(clinicstationid, ret[1]))
                entries = ret[1]["queues"][0]["entries"]
                if len(entries):
                    # something in the queue
                    entry = entries[0]
                    q = DeleteQueueEntry(host, port, token)
                    q.setQueueEntryId(entry["id"])
                    ret = q.send(timeout=30)
                    if ret[0] == 200:
                        print("checkinWorker: deleted queueentry {}".format(
                            entry["id"]))
                        y = UpdateClinicStation(host, port, token,
                                                clinicstationid)
                        y.setActive(True)
                        y.setActivePatient(entry["patient"])
                        ret = y.send(timeout=30)
                        if ret[0] == 200:
                            print(
                                "checkinWorker: set clinicstation {} active patient to {}"
                                .format(clinicstationid, entry["patient"]))
                            z = UpdateRoutingSlipEntry(
                                host, port, token, entry["routingslipentry"])
                            z.setState("Checked In")
                            ret = z.send(timeout=30)
                            if ret[0] == 200:
                                print(
                                    "checkinWorker: clinicstation {} checked in patient {}"
                                    .format(clinicstationid, entry["patient"]))
                                r = CreateStateChange(host, port, token)
                                r.setClinicStation(clinicstationid)
                                r.setPatient(entry["patient"])
                                r.setState("in")
                                ret = r.send(timeout=30)
                                if ret[0] == 200:
                                    # do some work
                                    t = randint(120, 180)
                                    print(
                                        "checkinWorker: clinicstation {} starting work on patient {} for {} seconds"
                                        .format(clinicstationid,
                                                entry["patient"], t))
                                    time.sleep(t)
                                    '''
                                    check for a returntoclinicstation object
                                    that is in state scheduled_dest and matches
                                    our station type and patient for this
                                    clinic. If found, update the state of the
                                    returntoclinicstation object to 
                                    checked_out_dest.
                                    '''

                                    success = checkAndUpdateScheduledDestReturnToClinicStation(
                                        mockclinic, clinicid, entry["patient"],
                                        stationid)

                                    if not hasReturnToClinicStation(
                                            mockclinic, clinicid,
                                            entry["patient"]
                                    ) and randint(
                                            0, 1
                                    ) == 1 and doReturnToClinicStation == True:
                                        o = randint(1, len(stations))
                                        if o != stationid and not inRoutingSlip(
                                                mockclinic, clinicid,
                                                entry["patient"], o):
                                            try:
                                                # create returntoclinicstation
                                                print(
                                                    "checkinWorker: Creating return to clinicstation record"
                                                )
                                                rtc = CreateReturnToClinicStation(
                                                    host, port, token,
                                                    clinicid, entry["patient"],
                                                    o, clinicstationid)

                                                ret = rtc.send(timeout=30)
                                                if ret[0] != 200:
                                                    print(
                                                        "checkinWorker: Unable to create return to clinicstation object. clinic {} patient {} station {} clinicstation {} ret is {}"
                                                        .format(
                                                            clinicid,
                                                            entry["patient"],
                                                            o, clinicstationid,
                                                            ret[0]))
                                                    sys.exit(1)
                                                else:
                                                    print(
                                                        "checkinWorker: Created return to clinicstation object"
                                                    )
                                            except Exception as e:
                                                msg = sys.exc_info()[0]
                                                print(
                                                    "checkinWorker: exception creating return to clinic {}: {}"
                                                    .format(ret[1], msg))
                                                sys.exit(1)

                                    # check the patient out

                                    z.setState("Checked Out")
                                    ret = z.send(timeout=30)
                                    if ret[0] == 200:
                                        print(
                                            "checkinWorker: clinicstation {} checked out patient {}"
                                            .format(clinicstationid,
                                                    entry["patient"]))
                                        r.setState("out")
                                        ret = r.send(timeout=30)
                                        if ret[0] == 200:
                                            y.setActive(False)
                                            ret = y.send(timeout=30)
                                            if ret[0] == 200:
                                                print(
                                                    "checkinWorker: set clinicstation {} active state to False"
                                                    .format(clinicstationid))
                                            else:
                                                print(
                                                    "checkinWorker: failed to set clinicstation active to false {}"
                                                    .format(ret[0]))
                                        else:
                                            print(
                                                "checkinWorker: failed to create statechange record for state 'out' {}"
                                                .format(ret[0]))
                                    else:
                                        print(
                                            "checkinWorker: failed to set state to 'Checked Out' {}"
                                            .format(ret[0]))
                                else:
                                    print(
                                        "checkinWorker: failed to create statechange record for state 'in' {}"
                                        .format(ret[0]))
                            else:
                                print(
                                    "checkinWorker: failed to set state to 'Checked In' {}"
                                    .format(ret[0]))
                        else:
                            print(
                                "checkinWorker: failed to set clinicstation active patient id {} : {}"
                                .format(entry["patient"], ret[0]))
                    else:
                        print(
                            "checkinWorker: failed to delete queue entry {}  {}"
                            .format(entry["id"], ret[0]))
                else:
                    print(
                        "checkinWorker: no waiting entries for clinicstation {}"
                        .format(clinicstationid))
            except Exception as e:
                msg = sys.exc_info()[0]
                print("checkinWorker: exception {}: {}".format(ret[1], msg))
                sys.exit(1)
        else:
            print(
                "checkinWorker: failed to get queue entry for clinicstation {}: {}"
                .format(clinicstationid, ret[0]))