import os def getPatientId(row,xconfig): return row[getPatientField(xconfig)] def getPatientField(xconfig): return xconfig['ParticipantField'] def getVisitField(xconfig): return 'visitName' def getVisitId(row,xconfig): return row[getVisitField(xconfig)] def getIdFilter(row,xconfig): return {'variable':getPatientField(xconfig),\ 'value':getPatientId(row,xconfig), 'oper':'eq'} def getVisitFilter(row,xconfig): return {'variable':getVisitField(xconfig),\ 'value':getVisitId(row,xconfig), 'oper':'eq'} def getCode(row,xconfig): return '{}_{}'.format(getPatientId(row,xconfig),getVisitId(row,xconfig)) def getTargetSeqNum(row,xconfig): if getVisitId(row,xconfig)=='OBR': return 2 return 1 def getPathList(row,xconfig): return [xconfig['baseDir'],getPatientId(row,xconfig),getVisitId(row,xconfig)] def getOutputDir(row,xconfig): return '/'.join(getPathList(row,xconfig)) def getLocalDir(row,xconfig): return os.path.join(xconfig['tempDir'],getCode(row,xconfig)) def getNodeName(row,xconfig,mode,i=0): if mode=='CT': return getCode(row,xconfig)+'_CT' if mode=='NM': return '{}_Volume{}'.format(getCode(row,xconfig),i) return getCode(row,xconfig)+'_Dummy' def decode(code,xconfig): #invert code and return object equivalent to row with relevant #fields set that can be used in #getPatientId, getVisitId,getIdFilter,getVisitFilter #as an equivalent replacement for r values=code.split('_') fid=values[0] vid=values[1] return {getPatientField(xconfig):fid,getVisitField(xconfig):vid}