function readPatientData(obj) readExcelData(obj); readDicomData(obj); end function readExcelData(obj) filename = fullfile(getConfig().dataDir, "Excel", "ShoulderDataBase.xlsx"); patientData = readtable(filename, "Sheet", "SCase", "Text", "String"); patientData = patientData(patientData.SCase_ID == obj.SCase.id,:); obj.SCase.diagnosis = patientData.diagnosis_name; obj.SCase.treatment = patientData.treatment_name; end function readDicomData(obj) dicomFiles = dir(fullfile(obj.SCase.dataDicomPath, "*.dcm")); filename = fullfile(dicomFiles(1).folder, dicomFiles(1).name); dicomInfos = dicominfo(filename); obj.SCase.patient.gender = dicomInfos.PatientSex; % Patient's birthdate should not be available with anonymised dicom if isfield(dicomInfos, "PatientBirthDate") if not(isempty(dicomInfos.PatientBirthDate)) dicomAcquisitionDate = datetime(dicomInfos.AcquisitionDate,... "InputFormat", "yyyyMMdd"); patientBirthDate = datetime(dicomInfos.PatientBirthDate,... "InputFormat", "yyyyMMdd"); patientAge = dicomAcquisitionDate - patientBirthDate; obj.age = years(patientAge); end else obj.age = str2num(extractBefore(dicomInfos.PatientAge, "Y")); end obj.height = 100 * dicomInfos.PatientSize; obj.weight = dicomInfos.PatientWeight; obj.BMI = dicomInfos.PatientWeight / dicomInfos.PatientSize^2; end