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 DVPSPRT_H
00032 #define DVPSPRT_H
00033
00034 #include "dcmtk/config/osconfig.h"
00035
00036 #include "dcmtk/ofstd/ofstream.h"
00037 #include "dcmtk/ofstd/ofstring.h"
00038 #include "dcmtk/dcmpstat/dvpstyp.h"
00039 #include "dcmtk/dcmpstat/dvpspll.h"
00040 #include "dcmtk/dcmpstat/dvpsspl.h"
00041 #include "dcmtk/dcmnet/assoc.h"
00042 #include "dcmtk/dcmnet/dimse.h"
00043
00044 class DVInterface;
00045 class DVPSFilmSession;
00046
00051 class DVPSPrintSCP
00052 {
00053 public:
00054
00059 DVPSPrintSCP(DVInterface &iface, const char *cfname);
00060
00062 virtual ~DVPSPrintSCP();
00063
00071 void setDimseLogPath(const char *fname);
00072
00083 DVPSAssociationNegotiationResult negotiateAssociation(T_ASC_Network &net);
00084
00089 void handleClient();
00090
00091 private:
00092
00094 DVPSPrintSCP& operator=(const DVPSPrintSCP&);
00095
00097 DVPSPrintSCP(const DVPSPrintSCP& copy);
00098
00105 int errorCond(OFCondition cond, const char *message);
00106
00115 OFCondition refuseAssociation(OFBool isBadContext);
00116
00119 void dropAssociation();
00120
00126 OFCondition handleNGet(T_DIMSE_Message& rq, T_ASC_PresentationContextID presID);
00127
00133 OFCondition handleNSet(T_DIMSE_Message& rq, T_ASC_PresentationContextID presID);
00134
00140 OFCondition handleNAction(T_DIMSE_Message& rq, T_ASC_PresentationContextID presID);
00141
00147 OFCondition handleNCreate(T_DIMSE_Message& rq, T_ASC_PresentationContextID presID);
00148
00154 OFCondition handleNDelete(T_DIMSE_Message& rq, T_ASC_PresentationContextID presID);
00155
00161 OFCondition handleCEcho(T_DIMSE_Message& rq, T_ASC_PresentationContextID presID);
00162
00168 void printerNGet(T_DIMSE_Message& rq, T_DIMSE_Message& rsp, DcmDataset *& rspDataset);
00169
00176 void filmSessionNSet(T_DIMSE_Message& rq, DcmDataset *rqDataset, T_DIMSE_Message& rsp, DcmDataset *& rspDataset);
00177
00184 void filmBoxNSet(T_DIMSE_Message& rq, DcmDataset *rqDataset, T_DIMSE_Message& rsp, DcmDataset *& rspDataset);
00185
00192 void imageBoxNSet(T_DIMSE_Message& rq, DcmDataset *rqDataset, T_DIMSE_Message& rsp, DcmDataset *& rspDataset);
00193
00198 void filmSessionNAction(T_DIMSE_Message& rq, T_DIMSE_Message& rsp);
00199
00204 void filmBoxNAction(T_DIMSE_Message& rq, T_DIMSE_Message& rsp);
00205
00211 void filmSessionNCreate(DcmDataset *rqDataset, T_DIMSE_Message& rsp, DcmDataset *& rspDataset);
00212
00218 void filmBoxNCreate(DcmDataset *rqDataset, T_DIMSE_Message& rsp, DcmDataset *& rspDataset);
00219
00225 void presentationLUTNCreate(DcmDataset *rqDataset, T_DIMSE_Message& rsp, DcmDataset *& rspDataset);
00226
00231 void filmSessionNDelete(T_DIMSE_Message& rq, T_DIMSE_Message& rsp);
00232
00237 void filmBoxNDelete(T_DIMSE_Message& rq, T_DIMSE_Message& rsp);
00238
00243 void presentationLUTNDelete(T_DIMSE_Message& rq, T_DIMSE_Message& rsp);
00244
00248 void saveDimseLog();
00249
00255 static void addLogEntry(DcmSequenceOfItems *seq, const char *text);
00256
00263 void dumpNMessage(T_DIMSE_Message &msg, DcmItem *dataset, OFBool outgoing);
00264
00265
00266
00267
00268
00269
00270 DVInterface& dviface;
00271
00272
00273
00274 const char *cfgname;
00275
00278 T_DIMSE_BlockingMode blockMode;
00279
00282 int timeout;
00283
00286 DVPSFilmSession *filmSession;
00287
00288
00289
00290 DVPSPresentationLUT_PList presentationLUTList;
00291
00292
00293
00294 DVPSStoredPrint_PList storedPrintList;
00295
00296
00297
00298 T_ASC_Association *assoc;
00299
00301 DcmUniqueIdentifier studyInstanceUID;
00302
00304 DcmUniqueIdentifier psSeriesInstanceUID;
00305
00307 DcmUniqueIdentifier imageSeriesInstanceUID;
00308
00310 DcmSequenceOfItems *logSequence;
00311
00313 DcmSequenceOfItems *acseSequence;
00314
00316 OFString logPath;
00317
00318 };
00319
00320 #endif
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350
00351
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361
00362