00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef DSRDOC_H
00032 #define DSRDOC_H
00033
00034 #include "dcmtk/config/osconfig.h"
00035
00036 #include "dcmtk/dcmsr/dsrdoctr.h"
00037 #include "dcmtk/dcmsr/dsrsoprf.h"
00038 #include "dcmtk/dcmsr/dsrcsidl.h"
00039
00040 #include "dcmtk/ofstd/ofstream.h"
00041
00042
00043
00044
00045
00046
00052 class DSRDocument
00053 : protected DSRTypes
00054 {
00055
00056 public:
00057
00058
00059
00064 DSRDocument(const E_DocumentType documentType = DT_BasicTextSR);
00065
00068 virtual ~DSRDocument();
00069
00070
00071
00072
00075 void clear();
00076
00082 OFBool isValid();
00083
00091 OFBool isFinalized() const;
00092
00093
00094
00095
00102 OFCondition print(STD_NAMESPACE ostream &stream,
00103 const size_t flags = 0);
00104
00123 OFCondition read(DcmItem &dataset,
00124 const size_t flags = 0);
00125
00139 OFCondition write(DcmItem &dataset,
00140 DcmStack *markedItems = NULL);
00141
00152 OFCondition readXML(const OFString &filename,
00153 const size_t flags = 0);
00154
00162 OFCondition writeXML(STD_NAMESPACE ostream &stream,
00163 const size_t flags = 0);
00164
00172 OFCondition renderHTML(STD_NAMESPACE ostream &stream,
00173 const size_t flags = 0,
00174 const char *styleSheet = NULL);
00175
00176
00177
00178
00182 E_DocumentType getDocumentType() const;
00183
00187 inline DSRDocumentTree &getTree()
00188 {
00189 return DocumentTree;
00190 }
00191
00199 E_CharacterSet getSpecificCharacterSetType() const;
00200
00205 OFCondition setSpecificCharacterSetType(const E_CharacterSet characterSet);
00206
00211 E_PreliminaryFlag getPreliminaryFlag() const;
00212
00217 E_CompletionFlag getCompletionFlag() const;
00218
00223 const char *getCompletionFlagDescription() const;
00224
00230 const OFString &getCompletionFlagDescription(OFString &description) const;
00231
00236 E_VerificationFlag getVerificationFlag() const;
00237
00245 size_t getNumberOfVerifyingObservers();
00246
00261 OFCondition getVerifyingObserver(const size_t idx,
00262 OFString &dateTime,
00263 OFString &observerName,
00264 OFString &organization);
00265
00282 OFCondition getVerifyingObserver(const size_t idx,
00283 OFString &dateTime,
00284 OFString &observerName,
00285 DSRCodedEntryValue &observerCode,
00286 OFString &organization);
00287
00300 DSRSOPInstanceReferenceList &getPredecessorDocuments();
00301
00315 DSRSOPInstanceReferenceList &getIdenticalDocuments();
00316
00331 DSRSOPInstanceReferenceList &getCurrentRequestedProcedureEvidence();
00332
00341 DSRSOPInstanceReferenceList &getPertinentOtherEvidence();
00342
00348 DSRCodingSchemeIdentificationList &getCodingSchemeIdentification();
00349
00350
00351
00352
00353
00354
00358 const char *getModality() const;
00359
00363 const char *getSOPClassUID() const;
00364
00368 const char *getStudyInstanceUID() const;
00369
00373 const char *getSeriesInstanceUID() const;
00374
00378 const char *getSOPInstanceUID() const;
00379
00383 const char *getInstanceCreatorUID() const;
00384
00388 const char *getSpecificCharacterSet() const;
00389
00393 const char *getPatientName() const;
00394
00398 const char *getPatientBirthDate() const;
00399
00403 const char *getPatientSex() const;
00404
00408 const char *getReferringPhysicianName() const;
00409
00413 const char *getStudyDescription() const;
00414
00418 const char *getSeriesDescription() const;
00419
00423 const char *getManufacturer() const;
00424
00428 const char *getManufacturerModelName() const;
00429
00433 const char *getDeviceSerialNumber() const;
00434
00438 const char *getSoftwareVersions() const;
00439
00443 const char *getStudyDate() const;
00444
00448 const char *getStudyTime() const;
00449
00453 const char *getInstanceCreationDate() const;
00454
00458 const char *getInstanceCreationTime() const;
00459
00463 const char *getContentDate() const;
00464
00468 const char *getContentTime() const;
00469
00473 const char *getStudyID() const;
00474
00478 const char *getPatientID() const;
00479
00483 const char *getSeriesNumber() const;
00484
00488 const char *getInstanceNumber() const;
00489
00493 const char *getAccessionNumber() const;
00494
00495
00496
00497
00498
00499
00504 const OFString &getModality(OFString &value) const;
00505
00510 const OFString &getSOPClassUID(OFString &value) const;
00511
00516 const OFString &getStudyInstanceUID(OFString &value) const;
00517
00522 const OFString &getSeriesInstanceUID(OFString &value) const;
00523
00528 const OFString &getSOPInstanceUID(OFString &value) const;
00529
00534 const OFString &getInstanceCreatorUID(OFString &value) const;
00535
00540 const OFString &getSpecificCharacterSet(OFString &value) const;
00541
00546 const OFString &getPatientName(OFString &value) const;
00547
00552 const OFString &getPatientBirthDate(OFString &value) const;
00553
00558 const OFString &getPatientSex(OFString &value) const;
00559
00564 const OFString &getReferringPhysicianName(OFString &value) const;
00565
00570 const OFString &getStudyDescription(OFString &value) const;
00571
00576 const OFString &getSeriesDescription(OFString &value) const;
00577
00582 const OFString &getManufacturer(OFString &value) const;
00583
00588 const OFString &getManufacturerModelName(OFString &value) const;
00589
00594 const OFString &getDeviceSerialNumber(OFString &value) const;
00595
00600 const OFString &getSoftwareVersions(OFString &value) const;
00601
00606 const OFString &getStudyDate(OFString &value) const;
00607
00612 const OFString &getStudyTime(OFString &value) const;
00613
00618 const OFString &getInstanceCreationDate(OFString &value) const;
00619
00624 const OFString &getInstanceCreationTime(OFString &value) const;
00625
00630 const OFString &getContentDate(OFString &value) const;
00631
00636 const OFString &getContentTime(OFString &value) const;
00637
00642 const OFString &getStudyID(OFString &value) const;
00643
00648 const OFString &getPatientID(OFString &value) const;
00649
00654 const OFString &getSeriesNumber(OFString &value) const;
00655
00660 const OFString &getInstanceNumber(OFString &value) const;
00661
00666 const OFString &getAccessionNumber(OFString &value) const;
00667
00668
00669
00670
00677 OFCondition setSpecificCharacterSet(const OFString &value);
00678
00685 OFCondition setPreliminaryFlag(const E_PreliminaryFlag flag);
00686
00693 OFCondition setCompletionFlagDescription(const OFString &value);
00694
00700 OFCondition setPatientName(const OFString &value);
00701
00707 OFCondition setPatientBirthDate(const OFString &value);
00708
00714 OFCondition setPatientSex(const OFString &value);
00715
00721 OFCondition setReferringPhysicianName(const OFString &value);
00722
00728 OFCondition setStudyDescription(const OFString &value);
00729
00735 OFCondition setSeriesDescription(const OFString &value);
00736
00742 OFCondition setManufacturer(const OFString &value);
00743
00749 OFCondition setManufacturerModelName(const OFString &value);
00750
00756 OFCondition setDeviceSerialNumber(const OFString &value);
00757
00763 OFCondition setSoftwareVersions(const OFString &value);
00764
00772 OFCondition setContentDate(const OFString &value);
00773
00781 OFCondition setContentTime(const OFString &value);
00782
00788 OFCondition setStudyID(const OFString &value);
00789
00795 OFCondition setPatientID(const OFString &value);
00796
00804 OFCondition setSeriesNumber(const OFString &value);
00805
00813 OFCondition setInstanceNumber(const OFString &value);
00814
00820 OFCondition setAccessionNumber(const OFString &value);
00821
00822
00823
00824
00830 void createNewStudy();
00831
00837 void createNewSeries();
00838
00846 OFCondition createNewSeriesInStudy(const OFString &studyUID);
00847
00859 void createNewSOPInstance();
00860
00866 OFCondition createNewDocument();
00867
00874 OFCondition createNewDocument(const E_DocumentType documentType);
00875
00893 OFCondition createRevisedVersion(const OFBool clearList = OFTrue);
00894
00902 OFCondition completeDocument();
00903
00913 OFCondition completeDocument(const OFString &description);
00914
00927 OFCondition verifyDocument(const OFString &observerName,
00928 const OFString &organization);
00929
00940 OFCondition verifyDocument(const OFString &observerName,
00941 const OFString &organization,
00942 const OFString &dateTime );
00943
00957 OFCondition verifyDocument(const OFString &observerName,
00958 const DSRCodedEntryValue &observerCode,
00959 const OFString &organization);
00960
00972 OFCondition verifyDocument(const OFString &observerName,
00973 const DSRCodedEntryValue &observerCode,
00974 const OFString &organization,
00975 const OFString &dateTime );
00976
00984 void removeVerification();
00985
00999 OFCondition finalizeDocument();
01000
01001
01002 protected:
01003
01010 OFCondition readXMLDocumentHeader(DSRXMLDocument &doc,
01011 DSRXMLCursor cursor,
01012 const size_t flags);
01013
01020 OFCondition readXMLPatientData(const DSRXMLDocument &doc,
01021 DSRXMLCursor cursor,
01022 const size_t flags);
01023
01030 OFCondition readXMLStudyData(const DSRXMLDocument &doc,
01031 DSRXMLCursor cursor,
01032 const size_t flags);
01033
01040 OFCondition readXMLSeriesData(const DSRXMLDocument &doc,
01041 DSRXMLCursor cursor,
01042 const size_t flags);
01043
01050 OFCondition readXMLInstanceData(const DSRXMLDocument &doc,
01051 DSRXMLCursor cursor,
01052 const size_t flags);
01053
01060 OFCondition readXMLDocumentData(const DSRXMLDocument &doc,
01061 DSRXMLCursor cursor,
01062 const size_t flags);
01063
01070 OFCondition readXMLVerifyingObserverData(const DSRXMLDocument &doc,
01071 DSRXMLCursor cursor,
01072 const size_t flags);
01073
01078 void renderHTMLPatientData(STD_NAMESPACE ostream &stream,
01079 const size_t flags);
01080
01086 void renderHTMLReferenceList(STD_NAMESPACE ostream &stream,
01087 DSRSOPInstanceReferenceList &refList,
01088 const size_t flags);
01089
01098 OFCondition checkDatasetForReading(DcmItem &dataset,
01099 E_DocumentType &documentType);
01100
01106 void updateAttributes(const OFBool updateAll = OFTrue);
01107
01108
01109 private:
01110
01112 DSRDocumentTree DocumentTree;
01113
01115 OFBool FinalizedFlag;
01117 E_PreliminaryFlag PreliminaryFlagEnum;
01119 E_CompletionFlag CompletionFlagEnum;
01121 E_VerificationFlag VerificationFlagEnum;
01123 E_CharacterSet SpecificCharacterSetEnum;
01124
01125
01126
01127
01128
01129
01130
01131
01132
01134 DcmUniqueIdentifier SOPClassUID;
01136 DcmUniqueIdentifier SOPInstanceUID;
01138 DcmCodeString SpecificCharacterSet;
01140 DcmDate InstanceCreationDate;
01142 DcmTime InstanceCreationTime;
01144 DcmUniqueIdentifier InstanceCreatorUID;
01146 DSRCodingSchemeIdentificationList CodingSchemeIdentification;
01147
01148
01149
01151 DcmUniqueIdentifier StudyInstanceUID;
01153 DcmDate StudyDate;
01155 DcmTime StudyTime;
01157 DcmPersonName ReferringPhysicianName;
01159 DcmShortString StudyID;
01161 DcmShortString AccessionNumber;
01163 DcmLongString StudyDescription;
01164
01165
01166
01168 DcmPersonName PatientName;
01170 DcmLongString PatientID;
01172 DcmDate PatientBirthDate;
01174 DcmCodeString PatientSex;
01175
01176
01177
01179 DcmLongString Manufacturer;
01181 DcmLongString ManufacturerModelName;
01183 DcmLongString DeviceSerialNumber;
01185 DcmLongString SoftwareVersions;
01186
01187
01188
01189
01190
01192
01194
01196
01197
01198
01199
01200
01201
01202
01203
01205 DcmCodeString Modality;
01207 DcmUniqueIdentifier SeriesInstanceUID;
01209 DcmIntegerString SeriesNumber;
01211 DcmLongString SeriesDescription;
01213 DcmSequenceOfItems ReferencedPerformedProcedureStep;
01214
01215
01216
01218 DcmIntegerString InstanceNumber;
01220 DcmCodeString PreliminaryFlag;
01222 DcmCodeString CompletionFlag;
01224 DcmLongString CompletionFlagDescription;
01226 DcmCodeString VerificationFlag;
01228 DcmDate ContentDate;
01230 DcmTime ContentTime;
01232 DcmSequenceOfItems VerifyingObserver;
01234 DSRSOPInstanceReferenceList PredecessorDocuments;
01236 DSRSOPInstanceReferenceList IdenticalDocuments;
01237
01238
01240 DcmSequenceOfItems PerformedProcedureCode;
01242 DSRSOPInstanceReferenceList CurrentRequestedProcedureEvidence;
01244 DSRSOPInstanceReferenceList PertinentOtherEvidence;
01245
01246
01247
01248 DSRDocument(const DSRDocument &);
01249 DSRDocument &operator=(const DSRDocument &);
01250 };
01251
01252
01253 #endif
01254
01255
01256
01257
01258
01259
01260
01261
01262
01263
01264
01265
01266
01267
01268
01269
01270
01271
01272
01273
01274
01275
01276
01277
01278
01279
01280
01281
01282
01283
01284
01285
01286
01287
01288
01289
01290
01291
01292
01293
01294
01295
01296
01297
01298
01299
01300
01301
01302
01303
01304
01305
01306
01307
01308
01309
01310
01311
01312
01313
01314
01315
01316
01317
01318
01319
01320
01321
01322
01323
01324
01325
01326
01327
01328
01329
01330
01331
01332
01333
01334
01335
01336
01337
01338
01339
01340
01341
01342
01343
01344
01345
01346
01347
01348
01349
01350
01351
01352
01353
01354
01355
01356
01357
01358
01359
01360
01361
01362
01363
01364
01365
01366
01367
01368
01369
01370
01371
01372
01373
01374
01375
01376
01377
01378
01379
01380
01381
01382
01383
01384
01385
01386
01387
01388
01389
01390
01391
01392
01393
01394
01395
01396
01397
01398
01399
01400
01401
01402
01403
01404
01405
01406
01407
01408
01409
01410
01411
01412
01413
01414
01415
01416
01417
01418
01419
01420
01421
01422
01423
01424
01425
01426
01427
01428
01429
01430
01431
01432
01433
01434
01435
01436
01437
01438
01439
01440
01441
01442
01443
01444
01445
01446
01447
01448
01449
01450
01451
01452