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