#if !defined(__WListSCP_H__) #define __WListSCP_H__ typedef struct tagCLIENTINFO { L_CHAR szClientName[100]; L_CHAR szClientIP[100]; } CLIENTINFO, *pCLIENTINFO; class CWorklistSCP : public LDicomNet { public: CWorklistSCP(L_CHAR* pszPath = NULL); virtual ~CWorklistSCP(); virtual L_VOID OnStatus(const CString& sClientName, const CString& sStatus, L_INT nErrorCode = DICOM_SUCCESS); virtual L_VOID OnClientsStatus(const CString& sNewClient); L_INT StartListening(L_UINT uPort, L_UINT uMaxClientsCount, L_CHAR* pszCalledTitle); L_INT StopListening(); // Close all the connected clients L_INT SetWorkingDBName(L_CHAR* pszPath); // Where the Worklist Items are stored L_INT SetClientsInfo(pCLIENTINFO AllClients, L_UINT uCount); // if pAllClients is null then any client can connect to this SCP private: CWorklistSCP* m_pServerObject; L_CHAR* m_pszServerName; L_CHAR* m_pszWorkingDBPath; pCLIENTINFO m_pClientsInfo; L_UINT m_uClientsCount; L_UINT m_uNumMaxPeers; /* maximum number of peers */ L_BOOL ValidClientIP(L_CHAR* pszCLientIP); L_BOOL ValidClientAETitle(L_CHAR* pszCLientName); L_VOID GenerateMatchingQuery(LDicomDS* pReqIdentifier, CString& sUser, CString& sFinSQLQuery); L_VOID BuildDateCondition(CString sDateAttribute, const CString& sFieldName, CString& sRetCondition, L_BOOL bTimeVal); L_VOID GetUIDCondition(LDicomDS* ReqIdentifier, L_UINT32 uTag, const CString& sFieldName, CString& sRetCondition); L_VOID FindMatchingAttributes(LDicomDS* pReqIdentifier, L_UCHAR nPresentationID, L_UINT16 uMessageID, L_CHAR* pszClass, const CString& sUser, const CString& sSQLQuery); L_VOID PrepareResponse(LDicomDS& ResDicomDS, LDicomDS& ReqDicomDS); CString& FilterForSingleValueMatch(CString& sValue); L_BOOL IsRange(L_CHAR* pszValue); L_VOID SetKeyElement(LDicomDS& RspIdentifier, const CString* psValue, L_UINT32 uTag) const; L_VOID SetTimeDateKeyElement(LDicomDS& RspIdentifier, TIMESTAMP_STRUCT* pTS, L_UINT32 uTag, L_BOOL bTimeValue) const; CString PrepareForWCM(const CString& sValue) const; CString ConvertDicomDateTimeToAccessDate(const CString& sDicomDate, L_BOOL bTimeVal); // Callbacks L_VOID OnAccept (L_INT nError); L_VOID OnReceiveAssociateRequest (LDicomAssociate *pPDU); L_VOID OnReceiveCFindRequest (L_UCHAR nPresentationID, L_UINT16 nMessageID, L_CHAR *pszClass, L_UINT16 nPriority, LDicomDS *pDS); L_VOID OnReceiveCEchoRequest (L_UCHAR nPresentationID, L_UINT16 nMessageID, L_CHAR *pszClass); L_VOID OnReceiveReleaseRequest (); L_VOID OnReceiveAbort (L_UCHAR nSource, L_UCHAR nReason); L_VOID OnClose (L_INT nError, LDicomNet *pNet); }; #endif // !defined(__WListSCP_H__)