Index: /main/waeup.uniben/trunk/src/waeup/uniben/students/export.py
===================================================================
--- /main/waeup.uniben/trunk/src/waeup/uniben/students/export.py	(revision 16389)
+++ /main/waeup.uniben/trunk/src/waeup/uniben/students/export.py	(revision 16390)
@@ -18,4 +18,5 @@
 """Exporters for student related stuff.
 """
+import grok
 from datetime import datetime
 from waeup.uniben.students.interfaces import (
@@ -24,5 +25,6 @@
     ICustomStudentStudyLevel,
     ICustomCourseTicket,
-    ICustomStudentOnlinePayment)
+    ICustomStudentOnlinePayment,
+    IMedicalHistory)
 from kofacustom.nigeria.students.export import (
     NigeriaStudentExporter,
@@ -33,5 +35,6 @@
     NigeriaDataForBursaryExporter,
     )
-from waeup.kofa.students.export import SchoolFeePaymentsOverviewExporter
+from waeup.kofa.students.export import (
+    SchoolFeePaymentsOverviewExporter, StudentExporterBase)
 from waeup.kofa.utils.helpers import iface_names
 
@@ -103,2 +106,30 @@
         'entry_session', 'reg_number'
         ) + year_range_tuple
+
+class MedicalHistoryExporter(grok.GlobalUtility, StudentExporterBase):
+    """
+    """
+    grok.name('medicalhistory')
+
+    fields = tuple(
+        sorted(iface_names(
+            IMedicalHistory, exclude_attribs=False,))) + (
+            'student_id','display_fullname', 'matric_number', 'faccode',
+            'depcode', 'state','current_session', 'current_level')
+    title = 'Medical Questionnaire Data'
+
+    def mangle_value(self, value, name, context=None):
+        """The mangler determines the titles of faculty, department
+        and certificate. It also computes the path of passport image file
+        stored in the filesystem.
+        """
+        if context is not None:
+            student = context.student
+            if name in ('student_id','display_fullname',
+                'matric_number', 'faccode',
+                'depcode', 'state','current_session',
+                'current_level') and student is not None:
+                value = getattr(student, name, None)
+        return super(
+            MedicalHistoryExporter, self).mangle_value(
+            value, name, context=context)
Index: /main/waeup.uniben/trunk/src/waeup/uniben/students/tests/test_export.py
===================================================================
--- /main/waeup.uniben/trunk/src/waeup/uniben/students/tests/test_export.py	(revision 16389)
+++ /main/waeup.uniben/trunk/src/waeup/uniben/students/tests/test_export.py	(revision 16390)
@@ -8,5 +8,6 @@
 from waeup.uniben.utils.utils import CustomKofaUtils
 from waeup.uniben.students.export import (
-    CustomStudentExporter, CustomStudentPaymentExporter)
+    CustomStudentExporter, CustomStudentPaymentExporter,
+    MedicalHistoryExporter)
 from waeup.uniben.testing import FunctionalLayer
 
@@ -114,2 +115,39 @@
             )
         return
+
+class MedicalHistoryExporterTest(StudentImportExportSetup):
+
+    layer = FunctionalLayer
+
+    def setUp(self):
+        super(MedicalHistoryExporterTest, self).setUp()
+        self.setup_for_export()
+        return
+
+    def test_ifaces(self):
+        # make sure we fullfill interface contracts
+        obj = MedicalHistoryExporter()
+        verifyObject(ICSVExporter, obj)
+        verifyClass(ICSVExporter, MedicalHistoryExporter)
+        return
+
+    def test_export_all(self):
+        # we can really export students
+        # set values we can expect in export file
+        self.setup_student(self.student)
+        self.student.sore_throat = True
+        exporter = MedicalHistoryExporter()
+        exporter.export_all(self.app, self.outfile)
+        result = open(self.outfile, 'rb').read()
+        self.assertMatches(
+            'asthma,body_pains,breathing,catarrh,company_confirmed,'
+            'company_suspected,cough,diabetes,fever,headaches,hypertension,'
+            'lagos_abuja,medical_updated,medicines,negative,obesity,'
+            'others,outside,positive,smell,sneezing,sore_throat,taste,'
+            'vaccination,weakness,student_id,display_fullname,'
+            'matric_number,faccode,depcode,state,current_session,'
+            'current_level\r\n'
+            ',,,,,,,,,,,,,,,,,,,,,1,,,,A111111,Anna M. Tester,234,'
+            'NA,NA,created,2012,200\r\n' , result
+            )
+        return
Index: /main/waeup.uniben/trunk/src/waeup/uniben/students/utils.py
===================================================================
--- /main/waeup.uniben/trunk/src/waeup/uniben/students/utils.py	(revision 16389)
+++ /main/waeup.uniben/trunk/src/waeup/uniben/students/utils.py	(revision 16390)
@@ -660,3 +660,4 @@
             'transcriptdata',
             'trimmedpayments',
+            'medicalhistory',
             )
