db.define_table('patient',
    Field('name','string'),
    Field('first_name','string'),
    Field('dob','date'),
    Field('disease','string', requires=IS_NOT_EMPTY()))
db.define_table('injection',
    Field('id_patient', 'reference patient', writable = False, readable = False),
    Field('date_iiv', 'date'),
    Field('product','string'))
count_iiv = db(db.injection.id_patient == db.patient.id ).count()
def get_iiv_number(id_patient):
    count_iiv = db((db.iiv.id_patient == id_patient)).count()
    return count_iiv
db.patient.count_iiv = Field.Virtual('count_iiv',lambda row: get_iiv_number(row.patient.id))