Example #1
0
 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
Example #2
0
 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
Example #3
0
 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