r639: no message
[ctsim.git] / libctsim / ctndicom.cpp
index f9a311bb2175364e1b9d752973192fc13885022d..2209fba2706e40236729782e5dfcaac15a53edad 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: ctndicom.cpp,v 1.9 2001/03/07 17:33:38 kevin Exp $
+**  $Id: ctndicom.cpp,v 1.12 2001/03/13 14:53:44 kevin Exp $
 **
 **  This program is free software; you can redistribute it and/or modify
 **  it under the terms of the GNU General Public License (version 2) as
@@ -37,7 +37,7 @@
 
 
 DicomImporter::DicomImporter (const char* const pszFile)
-  : m_strFilename(pszFile), m_bFail(false), m_iContents(DICOM_CONTENTS_INVALID), 
+  : m_pFile(NULL), m_strFilename(pszFile), m_bFail(false), m_iContents(DICOM_CONTENTS_INVALID), 
   m_pImageFile(NULL), m_pProjections(NULL)
 {
   unsigned long lOptions = DCM_ORDERLITTLEENDIAN;
@@ -319,6 +319,12 @@ DicomExporter::createDicomObject()
   char szIDImageType[] = "ORIGINAL";
   char szIDManufacturerModel[65] = "";
 
+  std::ostringstream osPatComments;
+  m_pImageFile->printLabelsBrief (osPatComments);
+  size_t sizePatComments = osPatComments.str().length();
+  char* pszPatComments = new char [sizePatComments+1];
+  strncpy (pszPatComments, osPatComments.str().c_str(), sizePatComments);
+
   snprintf (szIDSOPInstanceUID, sizeof(szIDSOPInstanceUID), "%s.2.1.6.1", szCTSimRoot);
   snprintf (szRelStudyInstanceUID, sizeof(szRelStudyInstanceUID), "%s.2.1.6.1.1", szCTSimRoot);
   snprintf (szRelFrameOfReferenceUID, sizeof(szRelFrameOfReferenceUID), "%s.99", szCTSimRoot);
@@ -378,13 +384,13 @@ DicomExporter::createDicomObject()
     {DCM_IDMODALITY, DCM_CS, "", 1, strlen(szModality), szModality},
     {DCM_IDSOPCLASSUID, DCM_UI, "", 1, strlen(szSOPClassUID), szSOPClassUID},
     {DCM_IDMANUFACTURERMODEL, DCM_LO, "", 1, strlen(szIDManufacturerModel), szIDManufacturerModel},
+    {DCM_PATCOMMENTS, DCM_LT, "", 1, strlen(pszPatComments), pszPatComments},
   };
   int nElemRequired = sizeof (aElemRequired) / sizeof(DCM_ELEMENT);
 
   int iUpdateCount;
   cond = DCM_ModifyElements (&m_pObject, aElemRequired, nElemRequired, NULL, 0, &iUpdateCount);
 
-
   DCM_ELEMENT elemPixelData = {DCM_PXLPIXELDATA, DCM_OT, "", 1, 0, NULL};
 
   unsigned long lRealLength = 2 * m_pImageFile->nx() * m_pImageFile->ny();
@@ -405,6 +411,8 @@ DicomExporter::createDicomObject()
   cond = DCM_ModifyElements (&m_pObject, &elemPixelData, 1, NULL, 0, &iUpdateCount);
   delete pRawPixels;
 
+  delete pszPatComments;
+
   if (cond != DCM_NORMAL || iUpdateCount != 1) {
     m_bFail = true;
     m_strFailMessage = "Error modifying pixel data";