/** Update a UID type field - handles Study Instance UID, SOP UID etc */ public static String updateUID(DicomObject ds, int tag, long deident) { String orig = ds.getString(tag); String v = SHA1(orig+deident); String uid = "2.25."+decodeLong(v,0)+"."+decodeLong(v,8)+"."+decodeLong(v,16); ds.putString(tag,null, uid); return v; }
public void anonymize(DicomObject ds) { String newPid = updateId(ds,Tag.PatientID,salt); ds.putString(Tag.IssuerOfPatientID,null,"Anon"); long lastId = decodeLong(newPid,0); long firstId = decodeLong(newPid,1); String last = lastNames[(int) (lastId % lastNames.length)]; String sex = ds.getString(Tag.PatientSex); int duration = 1+(int) (decodeLong(newPid,1) % 35600); cal.add(Calendar.DAY_OF_YEAR, -duration); ds.putDate(Tag.PatientBirthDate, VR.DA, cal.getTime()); String newStudyUID = updateUID(ds,Tag.StudyInstanceUID,salt); cal.add(Calendar.DAY_OF_YEAR, (int) (decodeLong(newStudyUID,0) % duration)); ds.putDate(Tag.StudyDate, VR.DA, cal.getTime()); ds.remove(Tag.OtherPatientIDs);