class NeurorehabilitationCardAdmin(AksonCardAdmin): fieldsets = ( (txt('General'), { 'fields': (( 'patient', 'leading_people', 'date', ), ) }), (txt('Excercise'), { 'fields': (('excercise_signature', 'load', 'repetitions', 'sets'), ) }), (txt('Environment'), { 'fields': (('starting_position', 'nature_of_load', 'motion_range'), ) }), (txt('Results'), { 'fields': (('time', 'frequency'), ) }), (txt('Additionals'), { 'fields': ('additional_notes', ), }), ) list_display = ('patient', 'date', 'excercise_signature', 'load', 'repetitions', 'sets', 'time', 'frequency')
class GaitReeducationCardCardAdmin(AksonCardAdmin): fieldsets = ( (txt('General'), { 'fields': (( 'leading_people', 'patient', 'date', ), ) }), (txt('Helpers'), { 'fields': (('tool', 'left_orthosis', 'right_orthosis'), ) }), (txt('Environment'), { 'fields': ( ('distance', 'gait_time', 'vertical_load', 'horizontal_load'), ('assurance_type', 'displacement_type'), ) }), (txt('Results'), { 'fields': (('accented_traits', 'gait_coefficients', 'akson_gait_index'), ) }), (txt('Additionals'), { 'fields': ('additional_notes', ) }), ) list_display = ('patient', 'date', 'distance', 'gait_time') labels = ('leading_people', 'date', 'tool', 'left_orthosis', 'right_orthosis', 'distance', 'gait_time', 'tool', 'akson_gait_index')
class TimeSpreadCardAdmin(AksonCardAdmin): fieldsets = ((txt('Time spreads'), { 'fields': ( ( 'leading_doctors', 'patient', ), ( 'begin', 'end', ), ) }), (txt('Coefficients'), { 'fields': (('asia', 'icd10', 'ashworth'), ) }), (txt('Diagnosis'), { 'fields': ( ('diagnosis', ), ('contraindicators', ), ('levels_of_injury', ), ('injury_unit', ), ) }), (txt('Treatment'), { 'fields': (('date_of_agreement', 'rehabilitation_at_home'), ) })) list_display = ('patient', 'begin', 'end')
class TrackGaitTrainingCardAdmin(AksonCardAdmin): fieldsets = ( (txt('General'), { 'fields': (( 'leading_people', 'patient', 'date', ), ) }), (txt('Blood pressure at rest'), { 'fields': (('blood_pressure_hr_rest', 'blood_pressure_rr_sys', 'blood_pressure_rr_dia'), ) }), (txt('Helpers'), { 'fields': (('support_type', 'left_orthosis', 'right_orthosis'), ) }), (txt('Results'), { 'fields': (('restoration_time', 'gait_speed', 'gait_time', 'distance', 'fixation_location', 'load'), ) }), (txt('Additionals'), { 'fields': ('additional_notes', ) }), ) list_display = ('patient', 'date', 'restoration_time', 'gait_speed')
class UpperLimbTherapyCardAdmin(AksonCardAdmin): fieldsets = ( (txt('General'), {'fields': ( ('therapist', 'patient', 'date',), )}), (txt('Therapy info'), {'fields': (('therapy_detailed_target', 'left_area', 'right_area', 'used_methods_techniques'), )}), (txt('Additionals'), {'fields': ('additional_notes', )}), ) list_display = ('patient', 'date',)
class PhysiotherapyCardCardAdmin(AksonCardAdmin): fieldsets = ( (txt('General'), {'fields': ( ('leading_people', 'patient', 'date',), )}), (txt('Treatment'), {'fields': (('treatment_type', 'area', 'parameters'), )}), (txt('Additionals'), {'fields': ('additional_notes', )}), ) list_display = ('patient', 'date')
def asia(self, obj): timespreads = obj.timespread_set.order_by('-begin') if len(timespreads) > 0: asias = timespreads[0].asia.all() if len(asias) > 0: return ', '.join([asia.name for asia in asias]) return txt('None')
def levels_of_injury(self, obj): timespreads = obj.timespread_set.order_by('-begin') if len(timespreads) > 0: levels_of_injurys = timespreads[0].levels_of_injury.all() if len(levels_of_injurys) > 0: return ', '.join([injury.name for injury in levels_of_injurys]) return txt('None')
class DietAdmin(AksonCardAdmin): fieldsets = ( (txt('General'), { 'fields': (( 'orderer', 'patient', 'date', ), ) }), (txt('Recommendations'), { 'fields': (('recommendations', ), ) }), (txt('Additionals'), { 'fields': ('additional_notes', ) }), ) list_display = ('patient', 'date', 'recommendations')
class NeurorehabilitationAdmin(AksonCardAdmin): fieldsets = ( (txt('General'), { 'fields': (( 'orderer', 'patient', 'date', ), ) }), (txt('Recommendations'), { 'fields': (('procedure_types', 'program_description', 'excercise_signatures'), ) }), (txt('Additionals'), { 'fields': ('additional_notes', ) }), ) list_display = ('patient', 'date', 'procedure_types', 'program_description')
class MedicalConsultationAdmin(AksonCardAdmin): fieldsets = ( (txt('General'), { 'fields': (( 'orderer', 'patient', 'date', 'diagnosis', ), ) }), (txt('Recommendations'), { 'fields': (('pharmacology_phytotherapy', 'commissioned_study'), ) }), (txt('Additionals'), { 'fields': ('additional_notes', ) }), ) list_display = ('patient', 'date', 'pharmacology_phytotherapy', 'commissioned_study')
class MassageReflexologyCardCardAdmin(AksonCardAdmin): fieldsets = ( (txt('General'), { 'fields': (( 'therapist', 'patient', 'date', ), ) }), (txt('Info'), { 'fields': (('massage_reflexology_treatment', 'massage_reflexology_area'), ) }), (txt('Additionals'), { 'fields': ('additional_notes', ) }), ) list_display = ( 'patient', 'date', )
class TreatmentRecordCardAdmin(AksonCardAdmin): fieldsets = ( (txt('General'), { 'fields': (( 'leading_people', 'patient', 'treatment_date', ), ) }), (txt('Info'), { 'fields': (( 'category', 'description', ), ('document', )) }), ) list_display = ('patient', 'treatment_date') class Media: from django.conf import settings static_url = getattr(settings, 'STATIC_URL', '/static/')
class NeurophysiologicalStudyAdmin(AksonCardAdmin): fieldsets = ( (txt('General'), {'fields': (('patient', 'examiners', 'date'), )}), (txt('Environment'), {'fields': (('mass', 'muscle', 'study_position'), )}), (txt('Results'), {'fields': (('MVIC', 'relative_MVIC'), ('max_EMG', 'max_relative_EMG'), ('average_EMG', 'average_relative_EMG'), ('EMG_surface_area', 'EMG_relative_surface_area'), ('EMG_standard_deviation',), ('WNM',), )}), (txt('Additionals'), {'fields': ('additional_notes', ), }), ) list_display = ('patient', 'date', 'mass', 'WNM')
class MassageReflexologyAdmin(AksonCardAdmin): fieldsets = ( (txt('General'), { 'fields': (( 'orderer', 'patient', 'date', ), ) }), (txt('Recommendations'), { 'fields': (( 'treatment_type', 'area', 'quantity', ), ) }), (txt('Additionals'), { 'fields': ('additional_notes', ) }), ) list_display = ('patient', 'date', 'quantity')
class DynamometryCardAdmin(AksonCardAdmin): fieldsets = ( (txt('General'), { 'fields': (('patient', 'examiners', 'date'), ) }), (txt('Environment'), { 'fields': (('muscle', 'study_position', 'duration'), ) }), (txt('Results'), { 'fields': ( ('max', 'max_relative'), ('average', 'average_relative'), ('surface_area', 'relative_surface_area'), ('standard_deviation', ), ('to_max', 'relative_to_max'), ('to_zero', 'relative_to_zero'), ) }), (txt('Additionals'), { 'fields': ('additional_notes', ), }), ) list_display = ('patient', 'date', 'muscle', 'duration')
class PatientCardAdmin(AksonBaseAdmin): change_form_template = 'patient.html' model = Patient therapy_program_inlines = [ ProgramNeurorehabilitationInline, ProgramMedicalConsultationInline, ProgramPhysiotherapyInline, ProgramMassageReflexologyInline, ProgramDietInline, ] cards_inlines = [ TimeSpreadInline, GaitReeducationCardInline, TrackGaitTrainingInline, NeurorehabilitationCardInline, PhysiotherapyCardInline, MetricCardInline, UpperLimbStudyInline, UpperLimbTherapyInline, MassageReflexologyCardInline, NeurophysiologicalStudyInline, DynamometryCardInline, TreatmentRecordInline, # # AsiaCardInline, ] inlines = cards_inlines + therapy_program_inlines fieldsets = ((txt('Private'), { 'fields': ( ('first_name', 'last_name'), ('gender', 'blood_type'), ('pesel', 'birth_date'), ) }), (txt('Address data'), { 'fields': (('country', 'city', 'address'), ) }), (txt('Mailing address'), { 'fields': (('mailing_country', 'mailing_city', 'mailing_address'), ) }), (txt('Work'), { 'fields': (('job', 'workplace'), ) }), (txt('Contact'), { 'fields': (('cell_phone', 'landline_phone', 'email'), ) }), (txt('Injury info'), { 'fields': (( 'date_of_injury', 'time_of_injury', ), ( 'date_of_operation', 'time_of_operation', ), ('additional_notes', )) })) # TODO ogarnac, bo duzo sqlowych zapytan robi def levels_of_injury(self, obj): timespreads = obj.timespread_set.order_by('-begin') if len(timespreads) > 0: levels_of_injurys = timespreads[0].levels_of_injury.all() if len(levels_of_injurys) > 0: return ', '.join([injury.name for injury in levels_of_injurys]) return txt('None') levels_of_injury.short_description = txt('levels_of_injury') def asia(self, obj): timespreads = obj.timespread_set.order_by('-begin') if len(timespreads) > 0: asias = timespreads[0].asia.all() if len(asias) > 0: return ', '.join([asia.name for asia in asias]) return txt('None') asia.short_description = txt('asia') list_display = ('last_name', 'first_name', 'birth_date', 'date_of_injury', 'levels_of_injury', 'asia') search_fields = ['last_name', 'first_name'] def change_view(self, request, object_id, form_url='', extra_context=None): extra_context = extra_context or {} extra_context['therapy_program_inlines'] = dict([ (inline.model._meta.verbose_name, inline) for inline in self.therapy_program_inlines ]) return super(PatientCardAdmin, self).change_view(request, object_id=object_id, form_url=form_url, extra_context=extra_context) def has_delete_permission(self, request, obj=None): return False
class MetricCardCardAdmin(AksonCardAdmin): add_form_template = 'metric_card.html' fieldsets = ( (txt('General'), { 'fields': (('patient', 'examiners', 'date'), ) }), (txt('Basic metrics'), { 'fields': (('height', 'weight'), ) }), # part ('Upper limb', { 'description': 'Limbs measures', 'fields': ( ('length_left_upper_limb_relative', 'length_right_upper_limb_relative'), ('length_left_upper_limb_absolute', 'length_right_upper_limb_absolute'), ('length_left_upper_limb_real_absolute', 'length_right_upper_limb_real_absolute'), ('length_left_upper_limb_arm', 'length_right_upper_limb_arm'), ('length_left_upper_limb_forearm', 'length_right_upper_limb_forearm'), ('length_left_upper_limb_hand', 'length_right_upper_limb_hand'), ('width_left_upper_limb_hand', 'width_right_upper_limb_hand'), ('length_left_upper_limb_finger', 'length_right_upper_limb_finger'), ('circuit_left_upper_limb_axillary_folds', 'circuit_right_upper_limb_axillary_folds'), ('circuit_left_upper_limb_15_cm_above_the_olecranon', 'circuit_right_upper_limb_15_cm_above_the_olecranon'), ('circuit_left_upper_limb_elbow', 'circuit_right_upper_limb_elbow'), ('circuit_left_upper_limb_10_cm_below_the_olecranon', 'circuit_right_upper_limb_10_cm_below_the_olecranon'), ('circuit_left_upper_limb_radial_carpal_joint', 'circuit_right_upper_limb_radial_carpal_joint'), ) }), ('Lower limb', { 'fields': ( ('length_left_lower_limb_relative', 'length_right_lower_limb_relative'), ('length_left_lower_limb_absolute', 'length_right_lower_limb_absolute'), ('length_left_lower_limb_real_absolute', 'length_right_lower_limb_real_absolute'), ('length_left_lower_limb_thigh', 'length_right_lower_limb_thigh'), ('length_left_lower_limb_shank', 'length_right_lower_limb_shank'), ('length_left_lower_limb_foot', 'length_right_lower_limb_foot'), ('width_left_lower_limb_foot', 'width_right_lower_limb_foot'), ('circuit_left_lower_limb_gluteal_fold', 'circuit_right_lower_limb_gluteal_fold'), ('circuit_left_lower_limb_20_cm_above_the_patella', 'circuit_right_lower_limb_20_cm_above_the_patella'), ('circuit_left_lower_limb_10_cm_above_the_patella', 'circuit_right_lower_limb_10_cm_above_the_patella'), ('circuit_left_lower_limb_knee_joint', 'circuit_right_lower_limb_knee_joint'), ('circuit_left_lower_limb_15_cm_below_the_patella', 'circuit_right_lower_limb_15_cm_below_the_patella'), ('circuit_left_lower_limb_ankle', 'circuit_right_lower_limb_ankle'), ) }), # part ('Shoulder joint', { 'description': 'Upper limb motion and strength', 'fields': ( ('range_left_active_motion_shoulder_joint_straightening', 'range_left_passive_motion_shoulder_joint_straightening', 'range_left_musc_str_shoulder_joint_straightening', 'range_right_active_motion_shoulder_joint_straightening', 'range_right_passive_motion_shoulder_joint_straightening', 'range_right_musc_str_shoulder_joint_straightening'), ('range_left_active_motion_shoulder_joint_bending', 'range_left_passive_motion_shoulder_joint_bending', 'range_left_musc_str_shoulder_joint_bending', 'range_right_active_motion_shoulder_joint_bending', 'range_right_passive_motion_shoulder_joint_bending', 'range_right_musc_str_shoulder_joint_bending'), ('range_left_active_motion_shoulder_joint_abduction', 'range_left_passive_motion_shoulder_joint_abduction', 'range_left_musc_str_shoulder_joint_abduction', 'range_right_active_motion_shoulder_joint_abduction', 'range_right_passive_motion_shoulder_joint_abduction', 'range_right_musc_str_shoulder_joint_abduction'), ('range_left_active_motion_shoulder_joint_adduction', 'range_left_passive_motion_shoulder_joint_adduction', 'range_left_musc_str_shoulder_joint_adduction', 'range_right_active_motion_shoulder_joint_adduction', 'range_right_passive_motion_shoulder_joint_adduction', 'range_right_musc_str_shoulder_joint_adduction'), ('range_left_active_motion_shoulder_joint_internal_rotation', 'range_left_passive_motion_shoulder_joint_internal_rotation', 'range_left_musc_str_shoulder_joint_internal_rotation', 'range_right_active_motion_shoulder_joint_internal_rotation', 'range_right_passive_motion_shoulder_joint_internal_rotation', 'range_right_musc_str_shoulder_joint_internal_rotation'), ('range_left_active_motion_shoulder_joint_external_rotation', 'range_left_passive_motion_shoulder_joint_external_rotation', 'range_left_musc_str_shoulder_joint_external_rotation', 'range_right_active_motion_shoulder_joint_external_rotation', 'range_right_passive_motion_shoulder_joint_external_rotation', 'range_right_musc_str_shoulder_joint_external_rotation'), ) }), # part ('elbow_joint', { 'fields': ( ('range_left_active_motion_elbow_joint_straightening', 'range_left_passive_motion_elbow_joint_straightening', 'range_left_musc_str_elbow_joint_straightening', 'range_right_active_motion_elbow_joint_straightening', 'range_right_passive_motion_elbow_joint_straightening', 'range_right_musc_str_elbow_joint_straightening'), ('range_left_active_motion_elbow_joint_bending', 'range_left_passive_motion_elbow_joint_bending', 'range_left_musc_str_elbow_joint_bending', 'range_right_active_motion_elbow_joint_bending', 'range_right_passive_motion_elbow_joint_bending', 'range_right_musc_str_elbow_joint_bending'), ) }), # part ('radial_ulnar_joint', { 'fields': ( ('range_left_active_motion_radial_ulnar_joint_reverse', 'range_left_passive_motion_radial_ulnar_joint_reverse', 'range_left_musc_str_radial_ulnar_joint_reverse', 'range_right_active_motion_radial_ulnar_joint_reverse', 'range_right_passive_motion_radial_ulnar_joint_reverse', 'range_right_musc_str_radial_ulnar_joint_reverse'), ('range_left_active_motion_radial_ulnar_joint_convert', 'range_left_passive_motion_radial_ulnar_joint_convert', 'range_left_musc_str_radial_ulnar_joint_convert', 'range_right_active_motion_radial_ulnar_joint_convert', 'range_right_passive_motion_radial_ulnar_joint_convert', 'range_right_musc_str_radial_ulnar_joint_convert'), ) }), # part ('radial_carpal_joint', { 'fields': ( ('range_left_active_motion_radial_carpal_joint_extension_dorsal', 'range_left_passive_motion_radial_carpal_joint_extension_dorsal', 'range_left_musc_str_radial_carpal_joint_extension_dorsal', 'range_right_active_motion_radial_carpal_joint_extension_dorsal', 'range_right_passive_motion_radial_carpal_joint_extension_dorsal', 'range_right_musc_str_radial_carpal_joint_extension_dorsal'), ('range_left_active_motion_radial_carpal_joint_palmar_flexion', 'range_left_passive_motion_radial_carpal_joint_palmar_flexion', 'range_left_musc_str_radial_carpal_joint_palmar_flexion', 'range_right_active_motion_radial_carpal_joint_palmar_flexion', 'range_right_passive_motion_radial_carpal_joint_palmar_flexion', 'range_right_musc_str_radial_carpal_joint_palmar_flexion'), ('range_left_active_motion_radial_carpal_joint_radial_abduction', 'range_left_passive_motion_radial_carpal_joint_radial_abduction', 'range_left_musc_str_radial_carpal_joint_radial_abduction', 'range_right_active_motion_radial_carpal_joint_radial_abduction', 'range_right_passive_motion_radial_carpal_joint_radial_abduction', 'range_right_musc_str_radial_carpal_joint_radial_abduction'), ('range_left_active_motion_radial_carpal_joint_urnal_abduction', 'range_left_passive_motion_radial_carpal_joint_urnal_abduction', 'range_left_musc_str_radial_carpal_joint_urnal_abduction', 'range_right_active_motion_radial_carpal_joint_urnal_abduction', 'range_right_passive_motion_radial_carpal_joint_urnal_abduction', 'range_right_musc_str_radial_carpal_joint_urnal_abduction'), ) }), # part ('finger_joint', { 'fields': ( ('range_left_active_motion_finger_joint_straightening', 'range_left_passive_motion_finger_joint_straightening', 'range_left_musc_str_finger_joint_straightening', 'range_right_active_motion_finger_joint_straightening', 'range_right_passive_motion_finger_joint_straightening', 'range_right_musc_str_finger_joint_straightening'), ('range_left_active_motion_finger_joint_bending', 'range_left_passive_motion_finger_joint_bending', 'range_left_musc_str_finger_joint_bending', 'range_right_active_motion_finger_joint_bending', 'range_right_passive_motion_finger_joint_bending', 'range_right_musc_str_finger_joint_bending'), ) }), # part ('Hip joint', { 'description': 'Lower limb motion and strength', 'fields': ( ('range_left_active_motion_hip_joint_straightening', 'range_left_passive_motion_hip_joint_straightening', 'range_left_musc_str_hip_joint_straightening', 'range_right_active_motion_hip_joint_straightening', 'range_right_passive_motion_hip_joint_straightening', 'range_right_musc_str_hip_joint_straightening'), ('range_left_active_motion_hip_joint_bending', 'range_left_passive_motion_hip_joint_bending', 'range_left_musc_str_hip_joint_bending', 'range_right_active_motion_hip_joint_bending', 'range_right_passive_motion_hip_joint_bending', 'range_right_musc_str_hip_joint_bending'), ('range_left_active_motion_hip_joint_abduction', 'range_left_passive_motion_hip_joint_abduction', 'range_left_musc_str_hip_joint_abduction', 'range_right_active_motion_hip_joint_abduction', 'range_right_passive_motion_hip_joint_abduction', 'range_right_musc_str_hip_joint_abduction'), ('range_left_active_motion_hip_joint_adduction', 'range_left_passive_motion_hip_joint_adduction', 'range_left_musc_str_hip_joint_adduction', 'range_right_active_motion_hip_joint_adduction', 'range_right_passive_motion_hip_joint_adduction', 'range_right_musc_str_hip_joint_adduction'), ('range_left_active_motion_hip_joint_internal_rotation', 'range_left_passive_motion_hip_joint_internal_rotation', 'range_left_musc_str_hip_joint_internal_rotation', 'range_right_active_motion_hip_joint_internal_rotation', 'range_right_passive_motion_hip_joint_internal_rotation', 'range_right_musc_str_hip_joint_internal_rotation'), ('range_left_active_motion_hip_joint_external_rotation', 'range_left_passive_motion_hip_joint_external_rotation', 'range_left_musc_str_hip_joint_external_rotation', 'range_right_active_motion_hip_joint_external_rotation', 'range_right_passive_motion_hip_joint_external_rotation', 'range_right_musc_str_hip_joint_external_rotation'), ( 'range_left_active_motion_hip_joint_thomas_test', 'range_right_active_motion_hip_joint_thomas_test', ), ) }), # part ('knee_joint', { 'fields': ( ('range_left_active_motion_knee_joint_straightening', 'range_left_passive_motion_knee_joint_straightening', 'range_left_musc_str_knee_joint_straightening', 'range_right_active_motion_knee_joint_straightening', 'range_right_passive_motion_knee_joint_straightening', 'range_right_musc_str_knee_joint_straightening'), ('range_left_active_motion_knee_joint_bending', 'range_left_passive_motion_knee_joint_bending', 'range_left_musc_str_knee_joint_bending', 'range_right_active_motion_knee_joint_bending', 'range_right_passive_motion_knee_joint_bending', 'range_right_musc_str_knee_joint_bending'), ) }), # part ('upper_ankle_joint', { 'fields': ( ('range_left_active_motion_upper_ankle_joint_extension_dorsal', 'range_left_passive_motion_upper_ankle_joint_extension_dorsal', 'range_left_musc_str_upper_ankle_joint_extension_dorsal', 'range_right_active_motion_upper_ankle_joint_extension_dorsal', 'range_right_passive_motion_upper_ankle_joint_extension_dorsal', 'range_right_musc_str_upper_ankle_joint_extension_dorsal'), ('range_left_active_motion_upper_ankle_joint_plantar_flexion', 'range_left_passive_motion_upper_ankle_joint_plantar_flexion', 'range_left_musc_str_upper_ankle_joint_plantar_flexion', 'range_right_active_motion_upper_ankle_joint_plantar_flexion', 'range_right_passive_motion_upper_ankle_joint_plantar_flexion', 'range_right_musc_str_upper_ankle_joint_plantar_flexion'), ) }), # part ('lower_ankle_joint', { 'fields': ( ('range_left_active_motion_lower_ankle_joint_convert', 'range_left_passive_motion_lower_ankle_joint_convert', 'range_left_musc_str_lower_ankle_joint_convert', 'range_right_active_motion_lower_ankle_joint_convert', 'range_right_passive_motion_lower_ankle_joint_convert', 'range_right_musc_str_lower_ankle_joint_convert'), ('range_left_active_motion_lower_ankle_joint_reverse', 'range_left_passive_motion_lower_ankle_joint_reverse', 'range_left_musc_str_lower_ankle_joint_reverse', 'range_right_active_motion_lower_ankle_joint_reverse', 'range_right_passive_motion_lower_ankle_joint_reverse', 'range_right_musc_str_lower_ankle_joint_reverse'), ) }), # part ('cervical_sftr', { 'description': 'SFTR measures', 'fields': ( ('sftr_S_cervical_sftr_extension', 'sftr_S_cervical_sftr_bend'), ('sftr_F_cervical_sftr_left_slope', 'sftr_F_cervical_sftr_right_slope'), ('sftr_R_cervical_sftr_left_rotation', 'sftr_R_cervical_sftr_right_rotation'), ) }), ('thoraco_lumbar_sftr', { 'fields': ( ('sftr_S_thoraco_lumbar_sftr_extension', 'sftr_S_thoraco_lumbar_sftr_bend'), ('sftr_F_thoraco_lumbar_sftr_left_slope', 'sftr_F_thoraco_lumbar_sftr_right_slope'), ('sftr_R_thoraco_lumbar_sftr_left_rotation', 'sftr_R_thoraco_lumbar_sftr_right_rotation'), ) }), ('shoulder_sftr', { 'fields': ( ('sftr_S_shoulder_sftr_extension', 'sftr_S_shoulder_sftr_bend'), ('sftr_F_shoulder_sftr_abduction', 'sftr_F_shoulder_sftr_adduction'), ('sftr_T_shoulder_sftr_horizontal_plane_extension', 'sftr_T_shoulder_sftr_horizontal_plane_bend'), ('sftr_RF0_shoulder_sftr_outter_rotation', 'sftr_RF0_shoulder_sftr_inner_rotation'), ('sftr_RF90_shoulder_sftr_outter_rotation', 'sftr_RF90_shoulder_sftr_inner_rotation'), ) }), ('elbow_sftr', { 'fields': (('sftr_S_elbow_sftr_extension', 'sftr_S_elbow_sftr_bend'), ) }), ('radial_ulnar_nearer_and_further_sftr', { 'fields': (('sftr_R_radial_ulnar_nearer_and_further_sftr_reverse', 'sftr_R_radial_ulnar_nearer_and_further_sftr_convert'), ) }), ('radial_carpal_sftr', { 'fields': ( ('sftr_S_radial_carpal_sftr_extension', 'sftr_S_radial_carpal_sftr_bend'), ('sftr_F_radial_carpal_sftr_radial_abduction', 'sftr_F_radial_carpal_sftr_elbow_abduction'), ) }), ('carpo_metacarpal_sftr', { 'fields': ( ('sftr_VF_carpo_metacarpal_sftr_inradial_abduction', 'sftr_VF_carpo_metacarpal_sftr_inelbow_adduction'), ('sftr_VS_carpo_metacarpal_sftr_hand_abduction', 'sftr_VS_carpo_metacarpal_sftr_hand_adduction'), ('sftr_CR_carpo_metacarpal_sftr_guided', 'sftr_CR_carpo_metacarpal_sftr_enclose'), ) }), ('metacarpal_finger1_sftr', { 'fields': (('sftr_S_metacarpal_finger1_sftr_extension', 'sftr_S_metacarpal_finger1_sftr_bend'), ) }), ('metacarpal_finger2_sftr', { 'fields': ( ('sftr_S_metacarpal_finger2_sftr_extension', 'sftr_S_metacarpal_finger2_sftr_bend'), ('sftr_F_metacarpal_finger2_sftr_abduction', 'sftr_F_metacarpal_finger2_sftr_adduction'), ) }), ('interphalangeal_sftr', { 'fields': (('sftr_S_interphalangeal_sftr_extension', 'sftr_S_interphalangeal_sftr_bend'), ) }), ('interphalangeal_nearer_sftr', { 'fields': (('sftr_S_interphalangeal_nearer_sftr_extension', 'sftr_S_interphalangeal_nearer_sftr_bend'), ) }), ('interphalangeal_further_sftr', { 'fields': (('sftr_S_interphalangeal_further_sftr_extension', 'sftr_S_interphalangeal_further_sftr_bend'), ) }), ('hip_sftr', { 'fields': ( ('sftr_S_hip_sftr_extension', 'sftr_S_hip_sftr_bend'), ('sftr_F_hip_sftr_abduction', 'sftr_F_hip_sftr_adduction'), ('sftr_RS90_hip_sftr_outter_rotation', 'sftr_RS90_hip_sftr_inner_rotation'), ('sftr_RS0_hip_sftr_outter_rotation', 'sftr_RS0_hip_sftr_inner_rotation'), ) }), ('knee_sftr', { 'fields': (('sftr_S_knee_sftr_extension', 'sftr_S_knee_sftr_bend'), ) }), ('angle_upper_and_lower_sftr', { 'fields': ( ('sftr_S_angle_upper_and_lower_sftr_extension', 'sftr_S_angle_upper_and_lower_sftr_bend'), ('sftr_R_angle_upper_and_lower_sftr_convert', 'sftr_R_angle_upper_and_lower_sftr_reverse'), ) }), (txt('Additionals'), { 'fields': (('additional_notes', ), ) }), ) list_display = ( 'patient', 'date', )
class Patient(models.Model): # private first_name = models.CharField(max_length=80) last_name = models.CharField(max_length=80) GENDER = ((txt('M'), txt('male')), (txt('F'), txt('female'))) gender = models.CharField(max_length=1, choices=GENDER) BLOOD_TYPE = ( (txt('0Rh-'), txt('0Rh-')), (txt('0Rh+'), txt('0Rh+')), (txt('ARh-'), txt('ARh-')), (txt('ARh+'), txt('ARh+')), (txt('BRh-'), txt('BRh-')), (txt('BRh+'), txt('BRh+')), (txt('ABR-'), txt('ABRh-')), (txt('ABR+'), txt('ABRh+')), ) blood_type = models.CharField(max_length=4, choices=BLOOD_TYPE, blank=True, null=True) birth_date = models.DateField() pesel = PESELField() # address country = models.CharField(max_length=80, default="Polska") city = models.CharField(max_length=80) address = models.CharField(max_length=80, blank=True, null=True) # mailing_address mailing_country = models.CharField(max_length=80, blank=True, null=True) mailing_city = models.CharField(max_length=80, blank=True, null=True) mailing_address = models.CharField(max_length=80, blank=True, null=True) # work job = models.CharField(max_length=80, blank=True, null=True) workplace = models.CharField(max_length=80, blank=True, null=True) # contact cell_phone = models.CharField(max_length=80, blank=True, null=True) landline_phone = models.CharField(max_length=80, blank=True, null=True) email = models.EmailField(blank=True, null=True) # injury info date_of_injury = models.DateField() time_of_injury = models.TimeField(blank=True, null=True) date_of_operation = models.DateField(blank=True, null=True) time_of_operation = models.TimeField(blank=True, null=True) additional_notes = AdditionalNotesField(blank=True, null=True) def __str__(self): return "{0} {1}".format(self.first_name, self.last_name) class Meta: ordering = ('last_name', 'first_name')
class UpperLimbStudyCardAdmin(AksonCardAdmin): add_form_template = 'upper_limb_study.html' fieldsets = ( (txt('General'), {'fields': (('patient', 'examiners', 'date'), )}), # part ('surface_sense', {'fields': ( ('surface_sense_left_flexor_arm_side', 'surface_sense_right_flexor_arm_side'), ('surface_sense_left_rectifier_arm_side', 'surface_sense_right_rectifier_arm_side'), ('surface_sense_left_flexor_forearm_side', 'surface_sense_right_flexor_forearm_side'), ('surface_sense_left_rectifier_forearm_side', 'surface_sense_right_rectifier_forearm_side'), ('surface_sense_left_palmar_hand_side', 'surface_sense_right_palmar_hand_side'), ('surface_sense_left_dorsal_hand_side', 'surface_sense_right_dorsal_hand_side'), ('surface_sense_left_thumb', 'surface_sense_right_thumb'), ('surface_sense_left_index_finger', 'surface_sense_right_index_finger'), ('surface_sense_left_finger_3', 'surface_sense_right_finger_3'), ('surface_sense_left_ring_finger', 'surface_sense_right_ring_finger'), ('surface_sense_left_small_finger', 'surface_sense_right_small_finger'), )}), ('feeling_limbs_pose', {'fields': ( ('feeling_limbs_pose_left', 'feeling_limbs_pose_right'), )}), # part ('feeling_vibration', {'fields': ( ('feeling_vibration_left_arm', 'feeling_vibration_right_arm'), ('feeling_vibration_left_forearm', 'feeling_vibration_right_forearm'), ('feeling_vibration_left_hand', 'feeling_vibration_right_hand'), )}), # part ('feeling_pain', {'fields': ( ('feeling_pain_left_arm', 'feeling_pain_right_arm'), ('feeling_pain_left_forearm', 'feeling_pain_right_forearm'), ('feeling_pain_left_hand', 'feeling_pain_right_hand'), )}), # part ('feeling_cold', {'fields': ( ('feeling_cold_left', 'feeling_cold_right'), )}), # part ('feeling_hot', {'fields': ( ('feeling_hot_left', 'feeling_hot_right'), )}), # part ('feeling_temperature_change', {'fields': ( ('feeling_temperature_change_left', 'feeling_temperature_change_right'), )}), # part ('grip_study', {'fields': ( ('grip_study_left_cylinders_diameter', 'grip_study_right_cylinders_diameter'), ('grip_study_left_weight', 'grip_study_right_weight'), )}), # part ('test_reflexes', {'fields': ( ('test_reflexes_left_radial', 'test_reflexes_right_radial'), ('test_reflexes_left_cubital', 'test_reflexes_right_cubital'), ('test_reflexes_left_bicephalous', 'test_reflexes_right_bicephalous'), ('test_reflexes_left_triceps', 'test_reflexes_right_triceps'), )}), (txt('Additionals'), {'fields': ( ('additional_notes',), )}), ) list_display = ('patient', 'date',)