1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- function [moutput,type,label,PatientPositionCODE]=dicomrt_checkinput(minput,force)
- % dicomrt_checkinput(minput,force)
- %
- % Check the validity of the input variable.
- % Returns the input variable, type, label and patient orientation.
- %
- % minput is the input dataset
- % force is a parameter which force, if existing and different from 0, the function to check
- % for PatientPosition.
- %
- % See also: dicomrt_loaddose, dicomrt_loadct, dicomrt_loadmcdose
- %
- % Copyright (C) 2002 Emiliano Spezi (emiliano.spezi@physics.org)
- % Check number of argument
- error(nargchk(1,2,nargin))
- if nargin==1
- force=0;
- end
- if iscell(minput) == 1 & size(minput,1) == 3 % OK accepted input
- try
- header=minput{1,1}{1};
- catch
- header=minput{1,1};
- end
- modality=header.Modality;
- if isequal(modality,'CT') % CT data
- type='ct';
- label='CT units [Houns]';
- PatientPositionCODE=dicomrt_getPatientPosition(header);
- moutput=minput;
- elseif isequal(modality,'RTSTRUCT') % VOI data
- type='voi';
- label='VOI';
- PatientPositionCODE=-1; % N/A
- moutput=minput;
- elseif isequal(modality,'RTPLAN') % TPS or MC dose
- RTPLabel=header.RTPlanLabel;
- if strfind(RTPLabel,'-MCDOSE');
- % this is a MC DOSE
- if iscell(minput{2,1}) == 1 % this is a MC dose and contains segments contribution
- disp('Input variable is a MC dose containing segments contribution. Adding segment''s dose');
- totaldose=dicomrt_addmcdose(minput{2,1}); %add segments' contribution in a 3D minput
- moutput=minput;
- moutput{2,1}=totaldose;
- else
- moutput=minput;
- end
- type='mc';
- label='MC dose map [Gy]';
- PatientPositionCODE=dicomrt_getPatientPosition(header);
- elseif strfind(RTPLabel,'-DDIFF');
- % this is a dose difference
- moutput=minput;
- type='ddiff';
- label='Dose difference';
- PatientPositionCODE=dicomrt_getPatientPosition(header);
- elseif strfind(RTPLabel,'-DRATIO');
- % this is a dose ratio
- moutput=minput;
- type='dratio';
- label='Dose ratio';
- PatientPositionCODE=dicomrt_getPatientPosition(header);
- else
- % this is a TPS DOSE
- moutput=minput;
- type='RTPLAN';
- label='RTPLAN dose map [Gy]';
- PatientPositionCODE=dicomrt_getPatientPosition(header);
- end
- end
- elseif isnumeric(minput)==1 % this is a simple 3D matrix
- moutput=minput;
- type='other';
- label=[inputname(1),' matrix'];
- if force==0
- warning('dicomrt_checkinput: The input variable is a 3D matrix. Unable to determine Patient Position.');
- PatientPosition=input('dicomrt_checkinput: Please specify Patient Position: HFS(default),FFS,HFP,FFP: ','s');
- if isempty(PatientPosition)==1
- PatientPosition='HFS';
- end
-
- if strcmpi(PatientPosition, 'HFS')
- PatientPositionCODE = 1;
- elseif strcmpi(PatientPosition, 'FFS')
- PatientPositionCODE = 2;
- elseif strcmpi(PatientPosition, 'HFP')
- PatientPositionCODE = 3;
- elseif strcmpi(PatientPosition, 'FFP')
- PatientPositionCODE = 4;
- end
- end
- else
- error('dicomrt_checkinput: Input matrix does not have a supported format. Exit now !');
- end
|