+/**
+ * \brief Remove all studies in the patient
+ */
+void DicomDirPatient::ClearStudy()
+{
+ for(ListDicomDirStudy::const_iterator cc = Studies.begin();
+ cc != Studies.end();
+ ++cc )
+ {
+ (*cc)->Delete();
+ }
+ Studies.clear();
+}
+
+/**
+ * \brief Get the first entry while visiting the DicomDirStudy
+ * \return The first DicomDirStudy if found, otherwhise NULL
+ */
+DicomDirStudy *DicomDirPatient::GetFirstStudy()
+{
+ ItStudy = Studies.begin();
+ if (ItStudy != Studies.end())
+ return *ItStudy;
+ return NULL;
+}
+
+/**
+ * \brief Get the next entry while visiting the DicomDirStudies
+ * \note : meaningfull only if GetFirstEntry already called
+ * \return The next DicomDirStudies if found, otherwhise NULL
+ */
+DicomDirStudy *DicomDirPatient::GetNextStudy()
+{
+ gdcmAssertMacro (ItStudy != Studies.end())
+
+ ++ItStudy;
+ if (ItStudy != Studies.end())
+ return *ItStudy;
+ return NULL;
+}
+
+/**
+ * \brief Get the first entry while visiting the DicomDirStudy
+ * \return The first DicomDirStudy if found, otherwhise NULL
+ */
+DicomDirStudy *DicomDirPatient::GetLastStudy()
+{
+ ItStudy = Studies.end();
+ if (ItStudy != Studies.begin())
+ {
+ --ItStudy;
+ return *ItStudy;
+ }
+ return NULL;
+}
+
+/**
+ * \brief Copies all the attributes from an other DocEntrySet
+ * @param set entry to copy from
+ * @remarks The contained DocEntries a not copied, only referenced
+ */
+void DicomDirPatient::Copy(DocEntrySet *set)
+{
+ // Remove all previous childs
+ ClearStudy();
+
+ DicomDirObject::Copy(set);
+
+ DicomDirPatient *ddEntry = dynamic_cast<DicomDirPatient *>(set);
+ if( ddEntry )
+ {
+ Studies = ddEntry->Studies;
+ for(ItStudy = Studies.begin();ItStudy != Studies.end();++ItStudy)
+ (*ItStudy)->Register();
+ }
+}
+