dicom-anon
dicom-anon copied to clipboard
Add unique constraints to audit tables for extra safety
CREATE_NON_LINKED_TABLE = 'CREATE TABLE %s (id INTEGER PRIMARY KEY AUTOINCREMENT, original, cleaned, UNIQUE(original))'
CREATE_LINKED_TABLE = 'CREATE TABLE %s (id INTEGER PRIMARY KEY AUTOINCREMENT, original, cleaned, study INTEGER, UNIQUE(original, study), FOREIGN KEY(study) REFERENCES studyinstanceuid(id))'
and then:
def audit_save(tag, cleaned, study_uid_pk=None):
...
try:
if tag.name.lower() == 'study instance uid':
db.execute(INSERT_OTHER % table_name(tag), (original, cleaned))
return cleaned
else:
db.execute(INSERT_LINKED % table_name(tag), (original, cleaned, study_uid_pk))
return cleaned
except sqlite3.IntegrityError:
return audit_get(tag=tag, study_uid_pk=study_uid_pk)
Could you submit this as a pull request?