def get_metadata(filename): try: pf = nimsutil.pfile.PFile(filename) except nimsutil.pfile.PFileError: md = None else: md = Metadata() md.datatype = u"GE PFile" md.exam_no = pf.exam_no md.series_no = pf.series_no md.acq_no = pf.acq_no md.exam_uid = nimsutil.pack_dicom_uid(pf.exam_uid) md.series_uid = nimsutil.pack_dicom_uid(pf.series_uid) md.psd_name = unicode(pf.psd_name) md.physio_flag = pf.physio_flag md.series_desc = nimsutil.clean_string(pf.series_desc) md.timestamp = pf.timestamp md.duration = pf.duration all_groups = [rg.id for rg in ResearchGroup.query.all()] md.subj_code, md.subj_fn, md.subj_ln, md.subj_dob = nimsutil.parse_subject(pf.patient_name, pf.patient_dob) md.group_name, md.exp_name = nimsutil.parse_patient_id(pf.patient_id, ResearchGroup.get_all_ids()) return md
def from_mrfile(cls, mrfile): subj_code, group_name, exp_name = nimsutil.parse_patient_id(mrfile.patient_id, ResearchGroup.all_ids()) query = cls.query.join(Experiment, cls.experiment).filter(Experiment.name == exp_name) query = query.join(ResearchGroup, Experiment.owner).filter(ResearchGroup.gid == group_name) if subj_code: subject = query.filter(cls.code==subj_code).first() elif mrfile.subj_firstname and mrfile.subj_lastname: subject = query.filter(cls.firstname==unicode(mrfile.subj_firstname)).filter(cls.lastname==unicode(mrfile.subj_lastname)).filter(cls.dob==mrfile.subj_dob).first() else: subject = None if not subject: owner = ResearchGroup.query.filter_by(gid=group_name).one() experiment = Experiment.from_owner_name(owner, exp_name) subject = cls( experiment=experiment, person=Person(), code=subj_code[:31] or experiment.next_subject_code, firstname=(unicode(mrfile.subj_firstname) or u'')[:63], lastname=(unicode(mrfile.subj_lastname) or u'')[:63], dob=mrfile.subj_dob, ) return subject
def get_metadata(filename): try: dcm = nimsutil.dicomutil.DicomFile(filename) except nimsutil.dicomutil.DicomError: md = None else: md = Metadata() md.datatype = u"Dicom Files" md.exam_no = dcm.exam_no md.series_no = dcm.series_no md.acq_no = dcm.acq_no md.exam_uid = nimsutil.pack_dicom_uid(dcm.exam_uid) md.series_uid = nimsutil.pack_dicom_uid(dcm.series_uid) md.psd_name = unicode(dcm.psd_name) md.physio_flag = dcm.physio_flag md.series_desc = nimsutil.clean_string(dcm.series_desc) md.timestamp = dcm.timestamp md.duration = dcm.duration md.subj_code, md.subj_fn, md.subj_ln, md.subj_dob = nimsutil.parse_subject( dcm.patient_name, dcm.patient_dob ) md.group_name, md.exp_name = nimsutil.parse_patient_id(dcm.patient_id, ResearchGroup.get_all_ids()) return md