diff --git a/ShoulderCase/@Patient/readPatientData.m b/ShoulderCase/@Patient/readPatientData.m index 6c4d253..6d739ca 100644 --- a/ShoulderCase/@Patient/readPatientData.m +++ b/ShoulderCase/@Patient/readPatientData.m @@ -1,13 +1,40 @@ 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; - obj.SCase.patient.gender = patientData.patient_gender; - obj.SCase.patient.age = patientData.patient_age; - obj.SCase.patient.height = patientData.patient_height; - obj.SCase.patient.weight = patientData.patient_weight; - obj.SCase.patient.BMI = patientData.patient_BMI; +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 \ No newline at end of file