LDicomDS::GetDateRangeValue

Summary

Fills the VALUEDATERANGE structure, with the date range information stored in the Value Field of the specified element.

Syntax

#include "Ltdic.h"

L_INT LDicomDS::GetDateRangeValue(pElement, nIndex, pValue)

Parameters

pDICOMELEMENT pElement

Pointer to a DICOMELEMENT structure within the Data Set.

L_UINT32 nIndex

Index value that indicates which value to retrieve when more than one value is stored in the Value Field. The index is zero-based.

pVALUEDATERANGE pValue

Pointer to a VALUEDATERANGE structure that will be filled with the date range value.

Returns

Value Meaning
0 SUCCESS
>0 An error occurred. Refer to Return Codes.

Comments

This function can be called only if the Value Representation of the Data Element is VR_DA. For more information about Value Representations, refer to Default Value Representation Table.

Required DLLs and Libraries

Platforms

Win32, x64

See Also

Functions

Topics

Example

This example gets the range value for an element.

L_VOID ShowRangeValue(LDicomDS *pDS, pDICOMELEMENT pElement) 
{ 
   L_INT32              i; 
   L_INT32              nCount; 
   L_TCHAR              szText[256]; 
   VALUEDATERANGE       DateRange; 
   VALUETIMERANGE       TimeRange; 
   VALUEDATETIMERANGE   DateTimeRange; 
   L_INT                nRet; 
 
   nCount = pDS->GetCountValue(pElement); 
 
   if (((pElement->nLength == ELEMENT_LENGTH_MAX)) ||  
      (pElement->nLength > 1024) ||  
      (nCount == 0)) 
   { 
      return; 
   } 
 
   switch (pElement->nVR) 
   { 
   case VR_DA:    // Date Range 
      for (i = 0; i < nCount; i++) 
      { 
         nRet = pDS->GetDateRangeValue(pElement, i, &DateRange); 
         if(nRet == DICOM_SUCCESS) 
         { 
            wsprintf(szText, TEXT("Type: %ld - Date1: %02u/%02u/%u - Date2: %02u/%02u/%u"), 
                     DateRange.nFlags, 
                     DateRange.Date1.nMonth, DateRange.Date1.nDay, DateRange.Date1.nYear, 
                     DateRange.Date2.nMonth, DateRange.Date2.nDay, DateRange.Date2.nYear); 
            AfxMessageBox(szText); 
         } 
      } 
      break; 
 
   case VR_TM:    // Time Range 
      for (i = 0; i < nCount; i++) 
      { 
         nRet = pDS->GetTimeRangeValue(pElement, i, &TimeRange); 
         if(nRet == DICOM_SUCCESS) 
         { 
            wsprintf(szText, TEXT("Type: %ld - Time1: %02u:%02u:%u.%lu - Time2: %02u:%02u:%u.%lu"), 
                     TimeRange.nFlags, 
                     TimeRange.Time1.nHours, TimeRange.Time1.nMinutes, TimeRange.Time1.nSeconds, TimeRange.Time1.nFractions, 
                     TimeRange.Time2.nHours, TimeRange.Time2.nMinutes, TimeRange.Time2.nSeconds, TimeRange.Time2.nFractions); 
            AfxMessageBox(szText); 
         } 
      } 
      break; 
 
   case VR_DT:    // Date Time 
      for (i = 0; i < nCount; i++) 
      { 
         nRet = pDS->GetDateTimeRangeValue(pElement, i, &DateTimeRange); 
         if(nRet == DICOM_SUCCESS) 
         { 
            wsprintf(szText, TEXT("Type: %ld - DateTime1: %02u/%02u/%u  %02u:%02u:%u.%lu&%lu - DateTime2: %02u/%02u/%u  %02u:%02u:%u.%lu&%lu"),  
                     DateTimeRange.nFlags, 
            DateTimeRange.DateTime1.nMonth, DateTimeRange.DateTime1.nDay, DateTimeRange.DateTime1.nYear, 
            DateTimeRange.DateTime1.nHours, DateTimeRange.DateTime1.nMinutes, DateTimeRange.DateTime1.nSeconds, DateTimeRange.DateTime1.nFractions, DateTimeRange.DateTime1.nOffset, 
            DateTimeRange.DateTime2.nMonth, DateTimeRange.DateTime2.nDay, DateTimeRange.DateTime2.nYear, 
            DateTimeRange.DateTime2.nHours, DateTimeRange.DateTime2.nMinutes, DateTimeRange.DateTime2.nSeconds, DateTimeRange.DateTime2.nFractions, DateTimeRange.DateTime2.nOffset); 
            AfxMessageBox(szText); 
         } 
      } 
      break; 
 
   default: 
      wsprintf(szText, TEXT("Element is not a range value element!")); 
      AfxMessageBox(szText); 
      break; 
   } 
 
   pDS->FreeValue(pElement); 
} 
 
L_INT LDicomDS_GetDateRangeValueExample() 
{ 
   L_INT          nRet; 
   LDicomDS      *pDS; 
   pDICOMELEMENT  pElement; 
 
   pDS = new LDicomDS(NULL); 
 
   nRet = pDS->LoadDS(MAKE_IMAGE_PATH(TEXT("image1.dcm")), 0); 
   if(nRet != DICOM_SUCCESS) 
      return nRet; 
 
   pElement = pDS->FindFirstElement(NULL, TAG_STUDY_DATE, FALSE); 
   pDS->DeleteElement(pElement); 
   pElement = pDS->FindFirstElement(NULL, TAG_STUDY_TIME, FALSE); 
   pDS->DeleteElement(pElement); 
   pElement = pDS->FindFirstElement(NULL, TAG_CONTRIBUTION_DATETIME, FALSE); 
   pDS->DeleteElement(pElement); 
 
   pElement = pDS->InsertElement(NULL, FALSE, TAG_STUDY_DATE, VR_DA, FALSE, 0);  
   VALUEDATERANGE DateRange; 
   DateRange.nFlags = VALUE_RANGE_BOTH; 
   DateRange.Date1.nDay = 1; 
   DateRange.Date1.nMonth = 2; 
   DateRange.Date1.nYear = 2005; 
   DateRange.Date2.nDay = 10; 
   DateRange.Date2.nMonth = 25; 
   DateRange.Date2.nYear = 2005; 
   pDS->SetDateRangeValue(pElement, &DateRange, 1);  
   ShowRangeValue(pDS, pElement); 
 
   pElement = pDS->InsertElement(NULL, FALSE, TAG_STUDY_TIME, VR_TM, FALSE, 0);  
   VALUETIMERANGE TimeRange; 
   TimeRange.nFlags = VALUE_RANGE_BOTH; 
   TimeRange.Time1.nHours = 12; 
   TimeRange.Time1.nMinutes = 0; 
   TimeRange.Time1.nSeconds = 0; 
   TimeRange.Time1.nFractions = 0; 
   TimeRange.Time2.nHours = 24; 
   TimeRange.Time2.nMinutes = 30; 
   TimeRange.Time2.nSeconds = 0; 
   TimeRange.Time2.nFractions = 0; 
   pDS->SetTimeRangeValue(pElement, &TimeRange, 1);  
   ShowRangeValue(pDS, pElement); 
 
   pElement = pDS->InsertElement(NULL, FALSE, TAG_CONTRIBUTION_DATETIME, VR_DT, FALSE, 0);  
   VALUEDATETIMERANGE DateTimeRange; 
   DateTimeRange.nFlags = VALUE_RANGE_BOTH; 
   DateTimeRange.DateTime1.nDay = 1; 
   DateTimeRange.DateTime1.nMonth = 2; 
   DateTimeRange.DateTime1.nYear = 2005; 
   DateTimeRange.DateTime1.nHours = 12; 
   DateTimeRange.DateTime1.nMinutes = 0; 
   DateTimeRange.DateTime1.nSeconds = 0; 
   DateTimeRange.DateTime1.nFractions = 0; 
   DateTimeRange.DateTime1.nOffset = 0; 
   DateTimeRange.DateTime2.nDay = 25; 
   DateTimeRange.DateTime2.nMonth = 12; 
   DateTimeRange.DateTime2.nYear = 2005; 
   DateTimeRange.DateTime2.nHours = 12; 
   DateTimeRange.DateTime2.nMinutes = 0; 
   DateTimeRange.DateTime2.nSeconds = 0; 
   DateTimeRange.DateTime2.nFractions = 0; 
   DateTimeRange.DateTime2.nOffset = 0; 
   pDS->SetDateTimeRangeValue(pElement, &DateTimeRange, 1); 
   ShowRangeValue(pDS, pElement); 
 
   pDS->SaveDS(MAKE_IMAGE_PATH(L_TEXT("test.dcm")), 0); 
 
   delete pDS; 
 
   return DICOM_SUCCESS; 
} 

Help Version 23.0.2024.2.29
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2024 LEAD Technologies, Inc. All Rights Reserved.

LEADTOOLS DICOM C++ Class Library Help

Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.