Exemple #1
0
def get_course_checker(serialno, courseno):
    course = TreatmentCourse(serialno, courseno)
    ests = estimatesHistory.getEsts(serialno, courseno)
    daybook_list = []
    accd = datetime.date.today() if course.accd is None else course.accd
    cmpd = datetime.date.today() if course.cmpd is None else course.cmpd
    for daybook_entry in daybook.all_data(serialno):
        if accd <= daybook_entry.date <= cmpd:
            daybook_list.append(daybook_entry)

    return CourseChecker(course, ests, daybook_list)
Exemple #2
0
def _get_courses(sno, current_csno):
    # query allows exclusion of current course.
    if current_csno is None:
        query = QUERY
        values = (sno, )
    else:
        query = QUERY.replace("ORDER", " AND courseno!=%s ORDER")
        values = (sno, current_csno)
    db = connect()
    cursor = db.cursor()
    cursor.execute(query, values)
    rows = cursor.fetchall()
    cursor.close()

    for row in rows:
        yield TreatmentCourse(sno, row[0])
Exemple #3
0
 def new_tx_course(self, new_courseno):
     '''
     start a new treatment course
     '''
     self.courseno0 = new_courseno
     self.treatment_course = TreatmentCourse(self.serialno, new_courseno)
Exemple #4
0
    def __init__(self, sno):
        '''
        initiate the class with default variables, then load from database
        '''
        self.serialno = sno
        self.dbstate = None

        self.load_warnings = []

        # patient table atts
        self.courseno0 = None
        self.money0 = 0
        self.money1 = 0
        self.money2 = 0
        self.money3 = 0
        self.money4 = 0
        self.money5 = 0
        self.money6 = 0
        self.money7 = 0
        self.money8 = 0
        self.money9 = 0
        self.money10 = 0
        self.pd0 = None
        self.pd1 = None
        self.pd2 = None
        self.pd3 = None
        self.pd4 = None  # this field is no longer used (last treatment date)
        self.pd5 = None
        self.pd6 = None
        self.pd7 = None
        self.pd8 = None
        self.pd9 = None
        self.pd10 = None
        self.pd11 = None
        self.pd12 = None
        self.pd13 = None
        self.pd14 = None
        self.sname = ''
        self.fname = ''
        self.title = ''
        self.sex = ''
        self.dob = None
        self.addr1 = ''
        self.addr2 = ''
        self.addr3 = ''
        self.pcde = ''
        self.tel1 = ''
        self.tel2 = ''
        self.occup = ''
        self.nhsno = ''
        self.cnfd = None
        self.cset = ''
        self.dnt1 = 0
        self.dnt2 = 0
        self.ur8st = ''
        self.ur7st = ''
        self.ur6st = ''
        self.ur5st = ''
        self.ur4st = ''
        self.ur3st = ''
        self.ur2st = ''
        self.ur1st = ''
        self.ul1st = ''
        self.ul2st = ''
        self.ul3st = ''
        self.ul4st = ''
        self.ul5st = ''
        self.ul6st = ''
        self.ul7st = ''
        self.ul8st = ''
        self.ll8st = ''
        self.ll7st = ''
        self.ll6st = ''
        self.ll5st = ''
        self.ll4st = ''
        self.ll3st = ''
        self.ll2st = ''
        self.ll1st = ''
        self.lr1st = ''
        self.lr2st = ''
        self.lr3st = ''
        self.lr4st = ''
        self.lr5st = ''
        self.lr6st = ''
        self.lr7st = ''
        self.lr8st = ''
        self.dent0 = 0
        self.dent1 = 0
        self.dent2 = 0
        self.dent3 = 0
        self.billdate = None
        self.billct = 0
        self.billtype = None
        self.money11 = 0
        self.familyno = localsettings.last_family_no
        self.memo = ''
        self.town = ''
        self.county = ''
        self.mobile = ''
        self.fax = ''
        self.email1 = ''
        self.email2 = ''
        self.status = ''
        self.initaccept = 0
        self.lastreaccept = None
        self.lastclaim = None
        self.expiry = None
        self.cstatus = None
        self.transfer = 0
        self.pstatus = None

        self.estimates = []

        # from userdata
        self.plandata = PlanData(self.serialno)

        # NEIL'S STUFF####
        self.exemption = ""
        self.exempttext = ""
        self.bpe = []
        self.bpedate = nullDate
        self.chartdate = nullDate
        self.notes_dict = {}
        self.MEDALERT = False
        self.mh_chkdate = None
        self.mh_form_date = None
        self.HIDDENNOTES = []
        self.chartgrid = {}
        self._fee_table = None
        self.synopsis = ""
        self._n_family_members = None
        self._dayBookHistory = None
        self.treatment_course = None
        self.est_logger = None
        self._most_recent_daybook_entry = None
        self._first_note_date = None
        self._has_exam_booked = None
        self._previous_surnames = None
        self.monies_reset = False
        self._n_hyg_visits = None

        if self.serialno == 0:
            return

        #
        # now load stuff from the database ##
        #
        db = connect.connect()
        cursor = db.cursor()

        self.getSynopsis()

        cursor.execute(PATIENT_QUERY, (self.serialno, ))
        values = cursor.fetchall()

        if values == ():
            raise localsettings.PatientNotFoundError

        for i, att_ in enumerate(patient_query_atts):
            value = values[0][i]
            if value is not None:
                self.__dict__[att_] = value
            elif att_ == "familyno":
                self.familyno = 0

        query = '''select exemption, exempttext from exemptions
        where serialno=%s'''
        cursor.execute(query, (self.serialno, ))

        values = cursor.fetchall()

        for value in values:
            self.exemption, self.exempttext = value

        query = '''select bpedate, bpe from bpe where serialno=%s
        order by bpedate'''
        cursor.execute(query, (self.serialno, ))

        values = cursor.fetchall()

        for value in values:
            self.bpe.append(value)

        if self.courseno0 != 0:
            self.getEsts()

        self.treatment_course = TreatmentCourse(self.serialno, self.courseno0)

        self.getNotesTuple()

        cursor.execute(QUICK_MED_QUERY, (self.serialno, ))
        try:
            self.MEDALERT, self.mh_chkdate = cursor.fetchone()
        except TypeError:
            pass

        cursor.execute(MED_FORM_QUERY + " limit 1", (self.serialno, ))
        try:
            self.mh_form_date = cursor.fetchone()[0]
        except TypeError:
            pass
        cursor.close()

        # - load from plandata
        self.plandata.getFromDB()

        self.appt_prefs = ApptPrefs(self.serialno)

        self.updateChartgrid()

        self.take_snapshot()
Exemple #5
0
 def new_tx_course(self, new_courseno):
     self.courseno0 = new_courseno
     self.treatment_course = TreatmentCourse(self.serialno, new_courseno)
Exemple #6
0
    def __init__(self, sno):
        '''
        initiate the class with default variables, then load from database
        '''
        self.serialno = sno
        self.dbstate = None

        self.load_warnings = []

        # patient table atts
        self.courseno0 = None
        self.pf0 = 0
        self.pf1 = 0
        self.pf2 = 0
        self.pf3 = 0
        self.pf4 = 0
        self.pf5 = 0
        self.pf6 = 0
        self.pf7 = 0
        self.pf8 = 0
        self.pf9 = 0
        self.pf10 = 0
        self.pf11 = 0
        self.pf12 = 0
        self.pf14 = 0
        self.pf15 = 0
        self.pf16 = 0
        self.pf17 = 0
        self.pf18 = 0
        self.pf19 = 0
        self.money0 = 0
        self.money1 = 0
        self.money2 = 0
        self.money3 = 0
        self.money4 = 0
        self.money5 = 0
        self.money6 = 0
        self.money7 = 0
        self.money8 = 0
        self.money9 = 0
        self.money10 = 0
        self.pd0 = None
        self.pd1 = None
        self.pd2 = None
        self.pd3 = None
        self.pd4 = None
        self.pd5 = None
        self.pd6 = None
        self.pd7 = None
        self.pd8 = None
        self.pd9 = None
        self.pd10 = None
        self.pd11 = None
        self.pd12 = None
        self.pd13 = None
        self.pd14 = None
        self.sname = ''
        self.fname = ''
        self.title = ''
        self.sex = ''
        self.dob = None
        self.addr1 = ''
        self.addr2 = ''
        self.addr3 = ''
        self.pcde = ''
        self.tel1 = ''
        self.tel2 = ''
        self.occup = ''
        self.nhsno = ''
        self.cnfd = None
        self.psn = ''
        self.cset = ''
        self.dnt1 = 0
        self.dnt2 = 0
        self.courseno1 = 0
        self.ur8st = ''
        self.ur7st = ''
        self.ur6st = ''
        self.ur5st = ''
        self.ur4st = ''
        self.ur3st = ''
        self.ur2st = ''
        self.ur1st = ''
        self.ul1st = ''
        self.ul2st = ''
        self.ul3st = ''
        self.ul4st = ''
        self.ul5st = ''
        self.ul6st = ''
        self.ul7st = ''
        self.ul8st = ''
        self.ll8st = ''
        self.ll7st = ''
        self.ll6st = ''
        self.ll5st = ''
        self.ll4st = ''
        self.ll3st = ''
        self.ll2st = ''
        self.ll1st = ''
        self.lr1st = ''
        self.lr2st = ''
        self.lr3st = ''
        self.lr4st = ''
        self.lr5st = ''
        self.lr6st = ''
        self.lr7st = ''
        self.lr8st = ''
        self.dent0 = 0
        self.dent1 = 0
        self.dent2 = 0
        self.dent3 = 0
        self.dmask = "YYYYYYY"
        self.minstart = 0
        self.maxend = 0
        self.billdate = None
        self.billct = 0
        self.billtype = None
        self.pf20 = 0
        self.money11 = 0
        self.pf13 = 0
        self.familyno = localsettings.last_family_no
        self.memo = ''
        self.town = ''
        self.county = ''
        self.mobile = ''
        self.fax = ''
        self.email1 = ''
        self.email2 = ''
        self.status = ''
        self.source = ''
        self.enrolled = ''
        self.archived = None
        self.initaccept = 0
        self.lastreaccept = None
        self.lastclaim = None
        self.expiry = None
        self.cstatus = None
        self.transfer = 0
        self.pstatus = None
        self.courseno2 = 0

        # TABLE 'mnhist'#######
        self.chgdate = nullDate   # date 	YES 	 	None
        self.ix = 0  # tinyint(3) unsigned 	YES 	 	None
        self.note = ''  # varchar(60) 	YES 	 	None

        self.estimates = []

        # from userdata
        self.plandata = PlanData(self.serialno)

        # NEIL'S STUFF####
        self.exemption = ""
        self.exempttext = ""
        self.perioData = {}
        self.bpe = []
        self.bpedate = nullDate
        self.chartdate = nullDate
        self.notes_dict = {}
        self.MH = ()
        self.MEDALERT = False
        self.HIDDENNOTES = []
        self.chartgrid = {}
        self._fee_table = None
        self.synopsis = ""
        self._n_family_members = None
        self._dayBookHistory = None
        self.treatment_course = None
        self.est_logger = None

        if self.serialno == 0:
            return

        #
        # now load stuff from the database ##
        #
        db = connect.connect()
        cursor = db.cursor()

        self.getSynopsis()

        cursor.execute(PATIENT_QUERY, (self.serialno,))
        values = cursor.fetchall()

        if values == ():
            raise localsettings.PatientNotFoundError

        for i, att in enumerate(patientTableAtts):
            value = values[0][i]
            if value is not None:
                self.__dict__[att] = value
            elif att == "familyno":
                self.familyno = 0

        query = '''select exemption, exempttext from exemptions
        where serialno=%s'''
        cursor.execute(query, self.serialno)

        values = cursor.fetchall()

        for value in values:
            self.exemption, self.exempttext = value

        query = '''select bpedate, bpe from bpe where serialno=%s
        order by bpedate'''
        cursor.execute(query, self.serialno)

        values = cursor.fetchall()

        for value in values:
            self.bpe.append(value)

        if self.courseno0 != 0:
            self.getEsts()

        self.treatment_course = TreatmentCourse(
            self.serialno, self.courseno0)

        self.getNotesTuple()

        query = 'select chartdate,chartdata from perio where serialno=%s'
        cursor.execute(query, self.serialno)
        perioData = cursor.fetchall()

        for data in perioData:
            self.perioData[localsettings.formatDate(data[0])] = (
                perio.get_perioData(data[1]))
            #--perioData is
            #--a dictionary (keys=dates) of dictionaries with keys
            #--like "ur8" and containing 7 tuples of data

        query = 'select drnm,adrtel,curmed,oldmed,allerg,heart,lungs,' +\
            'liver,kidney,bleed,anaes,other,alert,chkdate from mednotes' +\
            ' where serialno=%s'
        cursor.execute(query, (self.serialno,))

        self.MH = cursor.fetchone()
        if self.MH is not None:
            self.MEDALERT = self.MH[12]

        cursor.close()
        # db.close()

        #-- load from plandata
        self.plandata.getFromDB()

        self.appt_prefs = ApptPrefs(self.serialno)

        self.updateChartgrid()

        self.take_snapshot()
Exemple #7
0
    def daybook_course(self):
        '''
        This is the daybook entries converted to a Treatment Course
        '''
        if self._daybook_course is None:
            self._daybook_course = TreatmentCourse(self.serialno, 0)
            self._daybook_course.courseno = self.courseno
            accd, cmpd = None, None
            for daybook_entry in self.daybook_entries:
                #LOGGER.debug(daybook_entry)
                if not accd or daybook_entry.date < accd:
                    accd = daybook_entry.date
                if not cmpd or daybook_entry.date > cmpd:
                    cmpd = daybook_entry.date
                #diagn
                m = re.search("(E?CE) ", daybook_entry.diagn)
                if m:
                    self._daybook_course.examt += m.groups()[0]
                    self._daybook_course.examd = daybook_entry.date
                #xray
                for xray in re.findall("\d?[S|M|P] ", daybook_entry.diagn):
                    self._daybook_course.xraycmp += xray
                #perio
                if daybook_entry.perio.strip(" "):
                    self._daybook_course.periocmp += daybook_entry.perio.strip(
                        " ") + " "
                #anaes
                if daybook_entry.anaes.strip(" "):
                    self._daybook_course.anaescmp += daybook_entry.anaes.strip(
                        " ") + " "
                #misc
                if daybook_entry.misc.strip(" "):
                    self._daybook_course.customcmp += daybook_entry.misc.strip(
                        " ") + " "
                #ndu
                if daybook_entry.ndu.strip(" "):
                    self._daybook_course.nducmp += daybook_entry.ndu.strip(
                        " ") + " "
                #ndl
                if daybook_entry.ndl.strip(" "):
                    self._daybook_course.ndlcmp += daybook_entry.ndl.strip(
                        " ") + " "
                #odu
                if daybook_entry.odu.strip(" "):
                    self._daybook_course.oducmp += daybook_entry.odu.strip(
                        " ") + " "
                #odl
                if daybook_entry.odl.strip(" "):
                    self._daybook_course.odlcmp += daybook_entry.odl.strip(
                        " ") + " "
                #other
                if daybook_entry.other.strip(" "):
                    self._daybook_course.othercmp += daybook_entry.other.strip(
                        " ") + " "
                #chart
                for chart_entry in daybook_entry.chart.split("  "):
                    m = re.match("([UL][LR][1-8]) (.*)", chart_entry)
                    if m:
                        att = "%scmp" % m.groups()[0].lower()
                        tx = m.groups()[1] + " "
                        self._daybook_course.__dict__[att] += tx

            if accd is None or (self.course.accd and self.course.accd < accd):
                self._daybook_course.accd = self.course.accd
            else:
                self._daybook_course.accd = accd
            self._daybook_course.cmpd = cmpd

        return self._daybook_course