42
42
ProtocolName,AcqTime,ImgTime,PatientName,PatientID,StudyDate,StudyTime,modality,serietag: String;
43
43
end;//DICOMdata record *)
44
44
kDICOMStr = String[32];
46
XYZdim: array [1..4] of integer;
47
XYZori: array [1..3] of integer;
48
XYZmm: array [1..3] of double;
49
Orient: array [1..6] of double;
50
SiemensDICOMDTI,Float,file4D,JPEGLossyCpt,JPEGLosslessCpt: boolean;
51
PatientPosX,PatientPosY,PatientPosZ,AngulationAP,AngulationFH,AngulationRL: double;
52
TE, TR,IntenScale,IntenIntercept,location{,DTIv1,DTIv2,DTIv3}: single;
53
{Bval,}SlicesPer3DVol,SiemensInterleaved {0=no,1=yes,2=not defined},SiemensSlices,SiemensMosaicX,SiemensMosaicY,
54
nOrder,nDTIdir,AcquNum,ImageNum,SeriesNum,ImageStart,little_endian,Allocbits_per_pixel,SamplesPerPixel,
55
CSAImageHeaderInfoPos,CSAImageHeaderInfoSz,ManufacturerID,PlanarConfig, ImplementationVersion,
56
CompressOffset,CompresssZ: integer;
58
PatientPos,PatientName,ProtocolName,StudyDate,StudyTime,PhilipsSliceOrient,PhaseEncoding: kDICOMStr;
59
Filename: string[255];
46
XYZdim: array [1..4] of integer;
47
XYZori: array [1..3] of integer;
48
XYZmm: array [1..3] of double;
49
Orient: array [1..6] of double;
50
SiemensDICOMDTICSA,SiemensDICOMDTI,Float,file4D,JPEGLossyCpt,JPEGLosslessCpt: boolean;
51
PatientPosX,PatientPosY,PatientPosZ,AngulationAP,AngulationFH,AngulationRL: double;
52
TE, TR,IntenScale,IntenIntercept,location{,DTIv1,DTIv2,DTIv3}: single;
53
{Bval,}SlicesPer3DVol,SiemensInterleaved {0=no,1=yes,2=not defined},SiemensSlices,SiemensMosaicX,SiemensMosaicY,
54
nOrder,nDTIdir,AcquNum,ImageNum,SeriesNum,ImageStart,little_endian,Allocbits_per_pixel,SamplesPerPixel,
55
CSAImageHeaderInfoPos,CSAImageHeaderInfoSz,ManufacturerID,PlanarConfig, //ImplementationVersion,
57
CompressOffset,CompresssZ: integer;
59
PatientGender,PatientDoB,PatientPos,PatientName,ProtocolName,StudyDate,StudyTime,PhilipsSliceOrient,PhaseEncoding: kDICOMStr;
60
Filename: string[255];
61
62
Order: TOrder; //4D datasets
62
63
//OrderSlope,OrderIntercept: TOrderScaling; //4D datasets
63
64
end;//DICOMdata record
219
220
function GetCSAImageHeaderInfo (lFilename: string; lStart,lLength: integer; var lMosaicSlices,lMosaicX,lMosaicY: integer; var lv1,lv2,lv3: double): boolean;
220
221
procedure AplhaNumericStrDICOM (var lStr: kDICOMStr);
221
222
procedure PartialAcquisitionError;
223
function DICOMstr (i: integer; var lDICOMra: TDICOMrap;lOutname:string): string; overload;
224
function DICOMstr (i: integer; var lDICOMra: TDICOMrap): string; overload;
225
228
uses dicom,sysutils,define_types,dialogsx;
230
function YearsOld (lDICOM: DICOMdata): single;
236
if length (lDICOM.PatientDoB) < 8 then
240
dob := StudyDateTime (lDICOM.PatientDoB, lnoon);
241
result := (lDICOM.DateTime-dob)/365.2425;
246
function DICOMstr (i: integer; var lDICOMra: TDICOMrap;lOutname: string): string; overload;
250
if lOutname <> '' then
251
lS := kTab+'SuggestedOutput:'+lOutname
255
result := lDICOMra^[i].Filename
256
+kTab+'SeriesNum:'+kTab+inttostr(lDICOMra^[i].SeriesNum)
257
+kTab+'AcquNum:'+inttostr(lDICOMra^[i].AcquNum)
258
+kTab+'ImageNum:'+inttostr(lDICOMra^[i].ImageNum)
259
+kTab+'Name:'+lDICOMra^[i].PatientName
260
+kTab+'DoB:'+lDICOMra^[i].PatientDoB
261
+kTab+'Gender:'+lDICOMra^[i].PatientGender
262
+kTab+'DateTime:'+DateTimeToStr(lDICOMra^[i].DateTime)
263
+kTab+'Age(Years):'+floattostr(YearsOld(lDICOMra^[i]))
268
function DICOMstr (i: integer; var lDICOMra: TDICOMrap): string; overload;
270
result := DICOMstr (i, lDICOMra,'')
227
273
procedure PartialAcquisitionError;
229
275
Msg('* Potential partial acquisition or improper segmentation of files');