DYT/Tool/3rdParty_x64/include/dcmtk/dcmqrdb/dcmqrdba.h

224 lines
9.7 KiB
C
Raw Normal View History

2024-11-22 15:19:31 +00:00
/*
*
* Copyright (C) 1993-2011, OFFIS e.V.
* All rights reserved. See COPYRIGHT file for details.
*
* This software and supporting documentation were developed by
*
* OFFIS e.V.
* R&D Division Health
* Escherweg 2
* D-26121 Oldenburg, Germany
*
*
* Module: dcmqrdb
*
* Author: Andrew Hewett, Marco Eichelberg
*
* Purpose: class DcmQueryRetrieveDatabaseHandle
*
*/
#ifndef DCMQRDBA_H
#define DCMQRDBA_H
#include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */
#define INCLUDE_CSTDLIB
#define INCLUDE_CSTDIO
#define INCLUDE_UNISTD
#include "dcmtk/ofstd/ofstdinc.h"
#include "dcmtk/ofstd/ofcond.h"
#include "dcmtk/dcmqrdb/qrdefine.h"
class DcmDataset;
class DcmQueryRetrieveDatabaseStatus;
#ifndef MAXPATHLEN
#define MAXPATHLEN 1024
#endif
/** abstract base class for database handles. A database handle maintains
* a connection to a database and encapsulates database support for
* store, find and move/get operations.
*/
class DCMTK_DCMQRDB_EXPORT DcmQueryRetrieveDatabaseHandle
{
public:
/// default constructor
DcmQueryRetrieveDatabaseHandle() { }
/** Destructor. Destroys handle, cancels any ongoing
* request if necessary, deletes temporary files used for C-STORE and
* sub-operations of C-MOVE.
*/
virtual ~DcmQueryRetrieveDatabaseHandle();
/** create a filename under which a DICOM object that is currently
* being received through a C-STORE operation can be stored.
* @param SOPClassUID SOP class UID of DICOM instance
* @param SOPInstanceUID SOP instance UID of DICOM instance
* @param newImageFileName file name is returned in this parameter.
* Memory must be provided by the caller and should be at least MAXPATHLEN+1
* characters. The file name generated should be an absolute file name.
* @return EC_Normal upon normal completion, or some other OFCondition code upon failure.
*/
virtual OFCondition makeNewStoreFileName(
const char *SOPClassUID,
const char *SOPInstanceUID,
char *newImageFileName) = 0;
/** register the given DICOM object, which has been received through a C-STORE
* operation and stored in a file, in the database.
* @param SOPClassUID SOP class UID of DICOM instance
* @param SOPInstanceUID SOP instance UID of DICOM instance
* @param imageFileName file name (full path) of DICOM instance
* @param status pointer to DB status object in which a DIMSE status code
suitable for use with the C-STORE-RSP message is set.
* @param isNew if true, the instance is marked as "new" in the database,
* if such a flag is maintained in the database.
* @return EC_Normal upon normal completion, or some other OFCondition code upon failure.
*/
virtual OFCondition storeRequest(
const char *SOPClassUID,
const char *SOPInstanceUID,
const char *imageFileName,
DcmQueryRetrieveDatabaseStatus *status,
OFBool isNew = OFTrue ) = 0;
/** initiate FIND operation using the given SOP class UID (which identifies
* the query model) and DICOM dataset containing find request identifiers.
* @param SOPClassUID SOP class UID of query service, identifies Q/R model
* @param findRequestIdentifiers dataset containing request identifiers (i.e., the query)
* The caller retains responsibility for destroying the
* findRequestIdentifiers when no longer needed.
* @param status pointer to DB status object in which a DIMSE status code
* suitable for use with the C-FIND-RSP message is set. Status will be
* PENDING if any FIND responses will be generated or SUCCESS if no FIND responses will
* be generated (SUCCESS indicates the completion of a operation), or
* another status code upon failure.
* @return EC_Normal upon normal completion, or some other OFCondition code upon failure.
*/
virtual OFCondition startFindRequest(
const char *SOPClassUID,
DcmDataset *findRequestIdentifiers,
DcmQueryRetrieveDatabaseStatus *status) = 0;
/** return the next available FIND response as a new DICOM dataset.
* @param findResponseIdentifiers DICOM dataset returned in this parameter.
* The caller is responsible for destroying the findResponseIdentifiers
* when no longer needed.
* @param status pointer to DB status object in which a DIMSE status code
* suitable for use with the C-FIND-RSP message is set. Status will be
* PENDING if more FIND responses will be generated or SUCCESS if no more
* FIND responses will be generated (SUCCESS indicates the completion of
* a operation), or another status code upon failure.
* @return EC_Normal upon normal completion, or some other OFCondition code upon failure.
*/
virtual OFCondition nextFindResponse(
DcmDataset **findResponseIdentifiers,
DcmQueryRetrieveDatabaseStatus *status) = 0;
/** cancel the ongoing FIND request, stop and reset every running operation
* associated with this request, delete existing temporary files.
* @param status pointer to DB status object in which a DIMSE status code
* suitable for use with the C-FIND-RSP message is set.
* @return EC_Normal upon normal completion, or some other OFCondition code upon failure.
*/
virtual OFCondition cancelFindRequest(DcmQueryRetrieveDatabaseStatus *status) = 0;
/** initiate MOVE operation using the given SOP class UID (which identifies
* the retrieve model) and DICOM dataset containing move request identifiers.
* @param SOPClassUID SOP class UID of retrieve service, identifies Q/R model
* @param moveRequestIdentifiers dataset containing request identifiers (i.e., the query)
* The caller retains responsibility for destroying the
* moveRequestIdentifiers when no longer needed.
* @param status pointer to DB status object in which a DIMSE status code
* suitable for use with the C-MOVE-RSP message is set. Status will be
* PENDING if any MOVE responses will be generated or SUCCESS if no MOVE responses will
* be generated (SUCCESS indicates the completion of a operation), or
* another status code upon failure.
* @return EC_Normal upon normal completion, or some other OFCondition code upon failure.
*/
virtual OFCondition startMoveRequest(
const char *SOPClassUID,
DcmDataset *moveRequestIdentifiers,
DcmQueryRetrieveDatabaseStatus *status) = 0;
/** Constructs the information required for the next available C-MOVE
* sub-operation (the image SOP class UID, SOP Instance UID and an
* imageFileName containing the requested data).
* @param SOPClassUID pointer to string of at least 65 characters into
* which the SOP class UID for the next DICOM object to be transferred is copied.
* @param SOPInstanceUID pointer to string of at least 65 characters into
* which the SOP instance UID for the next DICOM object to be transferred is copied.
* @param imageFileName pointer to string of at least MAXPATHLEN+1 characters into
* which the file path for the next DICOM object to be transferred is copied.
* @param numberOfRemainingSubOperations On return, this parameter will contain
* the number of suboperations still remaining for the request
* (this number is needed by move responses with PENDING status).
* @param status pointer to DB status object in which a DIMSE status code
* suitable for use with the C-MOVE-RSP message is set. Status will be
* PENDING if more MOVE responses will be generated or SUCCESS if no more
* MOVE responses will be generated (SUCCESS indicates the completion of
* a operation), or another status code upon failure.
* @return EC_Normal upon normal completion, or some other OFCondition code upon failure.
*/
virtual OFCondition nextMoveResponse(
char *SOPClassUID,
char *SOPInstanceUID,
char *imageFileName,
unsigned short *numberOfRemainingSubOperations,
DcmQueryRetrieveDatabaseStatus *status) = 0;
/** cancel the ongoing MOVE request, stop and reset every running operation
* associated with this request, delete existing temporary files.
* @param status pointer to DB status object in which a DIMSE status code
* suitable for use with the C-MOVE-RSP message is set.
* @return EC_Normal upon normal completion, or some other OFCondition code upon failure.
*/
virtual OFCondition cancelMoveRequest(DcmQueryRetrieveDatabaseStatus *status) = 0;
/** Prune invalid records from the database.
* Records referring to non-existant image files are invalid.
*/
virtual OFCondition pruneInvalidRecords() = 0;
/** Configure the DB module to perform (or not perform) checking
* of FIND and MOVE request identifiers. Default is no checking.
* @param checkFind checking for C-FIND parameters
* @param checkMove checking for C-MOVE parameters
*/
virtual void setIdentifierChecking(OFBool checkFind, OFBool checkMove) = 0;
};
/** abstract factory class. Instances of this class are able to create database
* handles for a given called application entity title.
*/
class DCMTK_DCMQRDB_EXPORT DcmQueryRetrieveDatabaseHandleFactory
{
public:
/** this method creates a new database handle instance on the heap and returns
* a pointer to it, along with a result that indicates if the instance was
* successfully initialized, i.e. connected to the database
* @param callingAETitle calling aetitle
* @param calledAETitle called aetitle
* @param result result returned in this variable
* @return pointer to database object, must not be NULL if result is EC_Normal.
*/
virtual DcmQueryRetrieveDatabaseHandle *createDBHandle(
const char *callingAETitle,
const char *calledAETitle,
OFCondition& result) const = 0;
/** Virtual Destructor
*/
virtual ~DcmQueryRetrieveDatabaseHandleFactory() {}
};
#endif