def list_teeth(patient_id, appointment_id=None): authorized_roles = [ constants.ROLE_DENTIST ] if session['role'] not in authorized_roles: return redirect(url_for('index')) patient, appointment = checks.get_patient_appointment(patient_id, appointment_id) teeth = [] for tooth in patient.teeth: teeth.append( ( tooth.id, constants.ANATOMIC_LOCATION_TEETH[tooth.codename][1], constants.TOOTH_STATES[tooth.state][0], tooth.surveillance ) ) return render_template('list_teeth.html', patient=patient, appointment=appointment, teeth=teeth)
def get_teeth_list(teeth=""): """ entry teeth is a string of tooth or teeth. teeth may be separated by ";" sequence of teeth is separated by "-" and must be on the same arcade return a list o int(teeth). examples : "13" → [ 13 ] "13;15" → [ 13, 15 ] "13 ; 37" → [ 13, 37 ] "13-21" → [ 13, 12, 11, 21 ] "26-36" → [ ] "stupid_entry; 48" → [ 48 ] """ def _get_tooth(tooth): for t in constants.ANATOMIC_LOCATION_TEETH.items(): if tooth == t[1][0] or tooth == t[1][1]: return t[0] return None def _get_teeth_sequence(first_tooth, last_tooth): teeth_sequences = ( constants.PERMANENT_SUPERIOR_TEETH_SEQUENCE, constants.PERMANENT_INFERIOR_TEETH_SEQUENCE, constants.DECIDUOUS_SUPERIOR_TEETH_SEQUENCE, constants.DECIDUOUS_INFERIOR_TEETH_SEQUENCE, ) for sequence in teeth_sequences: if first_tooth in sequence and last_tooth in sequence: FT_index = sequence.index(first_tooth) LT_index = sequence.index(last_tooth) teeth_sequence = sequence[FT_index:(LT_index+1)] if not teeth_sequence: teeth_sequence = sequence[LT_index:(FT_index+1)] return teeth_sequence return None # remove all whitespace, turns "," into ";" separators teeth_group = ''.join(teeth.replace(",", ";").split()) teeth_group = teeth_group.split(";") teeth = [] for tooth_group in teeth_group: if len(tooth_group.split('-')) > 2: continue elif len(tooth_group.split('-')) == 2: first_tooth = _get_tooth(tooth_group.split('-')[0]) last_tooth = _get_tooth(tooth_group.split('-')[1]) if not first_tooth or not last_tooth: continue if first_tooth == last_tooth: tooth = _get_tooth(first_tooth) if tooth: teeth.append(tooth) continue teeth_sequence = _get_teeth_sequence(first_tooth, last_tooth) if not teeth_sequence: continue for tooth in teeth_sequence: teeth.append(tooth) continue elif len(tooth_group.split('-')) == 1: tooth = _get_tooth(tooth_group) if tooth: teeth.append(tooth) continue else: continue return teeth