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
00032
00033
00034
00035 #ifndef DSRDOC_H
00036 #define DSRDOC_H
00037
00038 #include "osconfig.h"
00039
00040 #include "dsrdoctr.h"
00041 #include "dsrsoprf.h"
00042 #include "dsrcsidl.h"
00043
00044 #include "ofstream.h"
00045
00046
00047
00048
00049
00050
00056 class DSRDocument
00057 : protected DSRTypes
00058 {
00059
00060 public:
00061
00062
00063
00068 DSRDocument(const E_DocumentType documentType = DT_BasicTextSR);
00069
00072 virtual ~DSRDocument();
00073
00074
00075
00076
00079 void clear();
00080
00086 OFBool isValid();
00087
00095 OFBool isFinalized() const;
00096
00103 void setLogStream(OFConsole *stream);
00104
00105
00106
00107
00114 OFCondition print(ostream &stream,
00115 const size_t flags = 0);
00116
00135 OFCondition read(DcmItem &dataset,
00136 const size_t flags = 0);
00137
00151 OFCondition write(DcmItem &dataset,
00152 DcmStack *markedItems = NULL);
00153
00165 OFCondition readXML(const OFString &filename,
00166 const size_t flags = 0);
00167
00175 OFCondition writeXML(ostream &stream,
00176 const size_t flags = 0);
00177
00185 OFCondition renderHTML(ostream &stream,
00186 const size_t flags = 0,
00187 const char *styleSheet = NULL);
00188
00189
00190
00191
00195 E_DocumentType getDocumentType() const;
00196
00200 inline DSRDocumentTree &getTree()
00201 {
00202 return DocumentTree;
00203 }
00204
00212 E_CharacterSet getSpecificCharacterSetType() const;
00213
00218 OFCondition setSpecificCharacterSetType(const E_CharacterSet characterSet);
00219
00224 E_CompletionFlag getCompletionFlag() const;
00225
00230 const char *getCompletionFlagDescription() const;
00231
00237 const OFString &getCompletionFlagDescription(OFString &description) const;
00238
00243 E_VerificationFlag getVerificationFlag() const;
00244
00252 size_t getNumberOfVerifyingObservers();
00253
00268 OFCondition getVerifyingObserver(const size_t idx,
00269 OFString &dateTime,
00270 OFString &observerName,
00271 OFString &organization);
00272
00289 OFCondition getVerifyingObserver(const size_t idx,
00290 OFString &dateTime,
00291 OFString &observerName,
00292 DSRCodedEntryValue &observerCode,
00293 OFString &organization);
00294
00307 DSRSOPInstanceReferenceList &getPredecessorDocuments();
00308
00322 DSRSOPInstanceReferenceList &getIdenticalDocuments();
00323
00338 DSRSOPInstanceReferenceList &getCurrentRequestedProcedureEvidence();
00339
00348 DSRSOPInstanceReferenceList &getPertinentOtherEvidence();
00349
00355 DSRCodingSchemeIdentificationList &getCodingSchemeIdentification();
00356
00357
00358
00359
00360
00364 const char *getModality() const;
00365
00369 const char *getSOPClassUID() const;
00370
00374 const char *getStudyInstanceUID() const;
00375
00379 const char *getSeriesInstanceUID() const;
00380
00384 const char *getSOPInstanceUID() const;
00385
00389 const char *getInstanceCreatorUID() const;
00390
00394 const char *getSpecificCharacterSet() const;
00395
00399 const char *getPatientsName() const;
00400
00404 const char *getPatientsBirthDate() const;
00405
00409 const char *getPatientsSex() const;
00410
00414 const char *getReferringPhysiciansName() const;
00415
00419 const char *getStudyDescription() const;
00420
00424 const char *getSeriesDescription() const;
00425
00429 const char *getManufacturer() const;
00430
00434 const char *getStudyDate() const;
00435
00439 const char *getStudyTime() const;
00440
00444 const char *getInstanceCreationDate() const;
00445
00449 const char *getInstanceCreationTime() const;
00450
00454 const char *getContentDate() const;
00455
00459 const char *getContentTime() const;
00460
00464 const char *getStudyID() const;
00465
00469 const char *getPatientID() const;
00470
00474 const char *getSeriesNumber() const;
00475
00479 const char *getInstanceNumber() const;
00480
00484 const char *getAccessionNumber() const;
00485
00486
00487
00488
00489
00490
00495 const OFString &getModality(OFString &value) const;
00496
00501 const OFString &getSOPClassUID(OFString &value) const;
00502
00507 const OFString &getStudyInstanceUID(OFString &value) const;
00508
00513 const OFString &getSeriesInstanceUID(OFString &value) const;
00514
00519 const OFString &getSOPInstanceUID(OFString &value) const;
00520
00525 const OFString &getInstanceCreatorUID(OFString &value) const;
00526
00531 const OFString &getSpecificCharacterSet(OFString &value) const;
00532
00537 const OFString &getPatientsName(OFString &value) const;
00538
00543 const OFString &getPatientsBirthDate(OFString &value) const;
00544
00549 const OFString &getPatientsSex(OFString &value) const;
00550
00555 const OFString &getReferringPhysiciansName(OFString &value) const;
00556
00561 const OFString &getStudyDescription(OFString &value) const;
00562
00567 const OFString &getSeriesDescription(OFString &value) const;
00568
00573 const OFString &getManufacturer(OFString &value) const;
00574
00579 const OFString &getStudyDate(OFString &value) const;
00580
00585 const OFString &getStudyTime(OFString &value) const;
00586
00591 const OFString &getInstanceCreationDate(OFString &value) const;
00592
00597 const OFString &getInstanceCreationTime(OFString &value) const;
00598
00603 const OFString &getContentDate(OFString &value) const;
00604
00609 const OFString &getContentTime(OFString &value) const;
00610
00615 const OFString &getStudyID(OFString &value) const;
00616
00621 const OFString &getPatientID(OFString &value) const;
00622
00627 const OFString &getSeriesNumber(OFString &value) const;
00628
00633 const OFString &getInstanceNumber(OFString &value) const;
00634
00639 const OFString &getAccessionNumber(OFString &value) const;
00640
00641
00642
00643
00650 OFCondition setSpecificCharacterSet(const OFString &value);
00651
00658 OFCondition setCompletionFlagDescription(const OFString &value);
00659
00665 OFCondition setPatientsName(const OFString &value);
00666
00672 OFCondition setPatientsBirthDate(const OFString &value);
00673
00679 OFCondition setPatientsSex(const OFString &value);
00680
00686 OFCondition setReferringPhysiciansName(const OFString &value);
00687
00693 OFCondition setStudyDescription(const OFString &value);
00694
00700 OFCondition setSeriesDescription(const OFString &value);
00701
00707 OFCondition setManufacturer(const OFString &value);
00708
00716 OFCondition setContentDate(const OFString &value);
00717
00725 OFCondition setContentTime(const OFString &value);
00726
00732 OFCondition setStudyID(const OFString &value);
00733
00739 OFCondition setPatientID(const OFString &value);
00740
00748 OFCondition setSeriesNumber(const OFString &value);
00749
00757 OFCondition setInstanceNumber(const OFString &value);
00758
00764 OFCondition setAccessionNumber(const OFString &value);
00765
00766
00767
00768
00774 void createNewStudy();
00775
00781 void createNewSeries();
00782
00790 OFCondition createNewSeriesInStudy(const OFString &studyUID);
00791
00803 void createNewSOPInstance();
00804
00810 OFCondition createNewDocument();
00811
00818 OFCondition createNewDocument(const E_DocumentType documentType);
00819
00837 OFCondition createRevisedVersion(const OFBool clearList = OFTrue);
00838
00846 OFCondition completeDocument();
00847
00857 OFCondition completeDocument(const OFString &description);
00858
00871 OFCondition verifyDocument(const OFString &observerName,
00872 const OFString &organization);
00873
00884 OFCondition verifyDocument(const OFString &observerName,
00885 const OFString &organization,
00886 const OFString &dateTime );
00887
00901 OFCondition verifyDocument(const OFString &observerName,
00902 const DSRCodedEntryValue &observerCode,
00903 const OFString &organization);
00904
00916 OFCondition verifyDocument(const OFString &observerName,
00917 const DSRCodedEntryValue &observerCode,
00918 const OFString &organization,
00919 const OFString &dateTime );
00920
00928 void removeVerification();
00929
00942 OFCondition finalizeDocument();
00943
00944
00945 protected:
00946
00953 OFCondition readXMLDocumentHeader(DSRXMLDocument &doc,
00954 DSRXMLCursor cursor,
00955 const size_t flags);
00956
00963 OFCondition readXMLPatientData(const DSRXMLDocument &doc,
00964 DSRXMLCursor cursor,
00965 const size_t flags);
00966
00973 OFCondition readXMLStudyData(const DSRXMLDocument &doc,
00974 DSRXMLCursor cursor,
00975 const size_t flags);
00976
00983 OFCondition readXMLSeriesData(const DSRXMLDocument &doc,
00984 DSRXMLCursor cursor,
00985 const size_t flags);
00986
00993 OFCondition readXMLInstanceData(const DSRXMLDocument &doc,
00994 DSRXMLCursor cursor,
00995 const size_t flags);
00996
01003 OFCondition readXMLDocumentData(const DSRXMLDocument &doc,
01004 DSRXMLCursor cursor,
01005 const size_t flags);
01006
01013 OFCondition readXMLVerifyingObserverData(const DSRXMLDocument &doc,
01014 DSRXMLCursor cursor,
01015 const size_t flags);
01016
01021 void renderHTMLPatientData(ostream &stream,
01022 const size_t flags);
01023
01029 void renderHTMLReferenceList(ostream &stream,
01030 DSRSOPInstanceReferenceList &refList,
01031 const size_t flags);
01032
01041 OFCondition checkDatasetForReading(DcmItem &dataset,
01042 E_DocumentType &documentType);
01043
01049 void updateAttributes(const OFBool updateAll = OFTrue);
01050
01051
01052 private:
01053
01055 DSRDocumentTree DocumentTree;
01056
01058 OFConsole *LogStream;
01059
01061 OFBool FinalizedFlag;
01063 E_CompletionFlag CompletionFlagEnum;
01065 E_VerificationFlag VerificationFlagEnum;
01067 E_CharacterSet SpecificCharacterSetEnum;
01068
01069
01070
01071
01072
01073
01074
01075
01076
01078 DcmUniqueIdentifier SOPClassUID;
01080 DcmUniqueIdentifier SOPInstanceUID;
01082 DcmCodeString SpecificCharacterSet;
01084 DcmDate InstanceCreationDate;
01086 DcmTime InstanceCreationTime;
01088 DcmUniqueIdentifier InstanceCreatorUID;
01090 DSRCodingSchemeIdentificationList CodingSchemeIdentification;
01091
01092
01093
01095 DcmUniqueIdentifier StudyInstanceUID;
01097 DcmDate StudyDate;
01099 DcmTime StudyTime;
01101 DcmPersonName ReferringPhysiciansName;
01103 DcmShortString StudyID;
01105 DcmShortString AccessionNumber;
01107 DcmLongString StudyDescription;
01108
01109
01110
01111
01113 DcmLongString SeriesDescription;
01114
01115
01116
01118 DcmPersonName PatientsName;
01120 DcmLongString PatientID;
01122 DcmDate PatientsBirthDate;
01124 DcmCodeString PatientsSex;
01125
01126
01127
01129 DcmLongString Manufacturer;
01130
01131
01132
01134 DcmCodeString Modality;
01136 DcmUniqueIdentifier SeriesInstanceUID;
01138 DcmIntegerString SeriesNumber;
01140 DcmSequenceOfItems ReferencedPerformedProcedureStepSequence;
01141
01142
01143
01145 DcmIntegerString InstanceNumber;
01147 DcmCodeString CompletionFlag;
01149 DcmLongString CompletionFlagDescription;
01151 DcmCodeString VerificationFlag;
01153 DcmDate ContentDate;
01155 DcmTime ContentTime;
01157 DcmSequenceOfItems VerifyingObserver;
01159 DSRSOPInstanceReferenceList PredecessorDocuments;
01161 DSRSOPInstanceReferenceList IdenticalDocuments;
01162
01163
01165 DcmSequenceOfItems PerformedProcedureCode;
01167 DSRSOPInstanceReferenceList CurrentRequestedProcedureEvidence;
01169 DSRSOPInstanceReferenceList PertinentOtherEvidence;
01170
01171
01172
01173 DSRDocument(const DSRDocument &);
01174 DSRDocument &operator=(const DSRDocument &);
01175 };
01176
01177
01178 #endif
01179
01180
01181
01182
01183
01184
01185
01186
01187
01188
01189
01190
01191
01192
01193
01194
01195
01196
01197
01198
01199
01200
01201
01202
01203
01204
01205
01206
01207
01208
01209
01210
01211
01212
01213
01214
01215
01216
01217
01218
01219
01220
01221
01222
01223
01224
01225
01226
01227
01228
01229
01230
01231
01232
01233
01234
01235
01236
01237
01238
01239
01240
01241
01242
01243
01244
01245
01246
01247
01248
01249
01250
01251
01252
01253
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