diff --git a/bin/dicom_doctype.py b/bin/dicom_doctype.py
index a13bcfd1a168029fa725af9234f26a55a7d70e8c..e40df67b9f8111d59bd62900e10bfbdfb9dcb9bb 100755
--- a/bin/dicom_doctype.py
+++ b/bin/dicom_doctype.py
@@ -10,6 +10,7 @@ import logging
 from api import config
 
 es = config.es
+db = config.db
 
 DICOM_INDEX = 'dicom_store'
 
@@ -19,59 +20,77 @@ def datetime(str_datetime):
 def age(str_age):
     pass
 
+
+SKIPPED = ['PixelSpacing', 'ImageOrientationPatient', 'PatientAge', 'ImagePositionPatient']
+
+# TODO: Choose integer/long and float/double where appropriate
 VR_TYPES = {
-        'AE': str,
-        'AS': age,
-        'AT': int,
-        'CS': str,
-        'DA': datetime,
-        'DS': float,
-        'DT': datetime,
-        'FD': float,
-        'FL': float,
-        'IS': int,
-        'LO': str,
-        'LT': str,
+        'AE': ['string', str],
+        'AS': ['long', int],
+        'AT': ['long', int],
+        'CS': ['string', str],
+        'DA': ['date', datetime],
+        'DS': ['float', float],
+        'DT': ['date', datetime],
+        'FD': ['float', float],
+        'FL': ['float', float],
+        'IS': ['long', int],
+        'LO': ['string', str],
+        'LT': ['string', str],
         'NONE': None,
         'OB': None,
         'OB or OW': None,
         'OF': None,
         'OW': None,
-        'PN': str,
-        'SH': str,
-        'SL': int,
+        'PN': ['string', str],
+        'SH': ['string', str],
+        'SL': ['long', int],
         'SQ': None,
-        'SS': int,
-        'ST': str,
-        'TM': datetime,
-        'UI': str,
-        'UL': int,
-        'US': int,
-        'US or OW': int,
-        'US or SS': int,
-        'US or SS or OW': int,
-        'UT': str,
+        'SS': ['long', int],
+        'ST': ['string', str],
+        'TM': ['date', datetime],
+        'UI': ['string', str],
+        'UL': ['long', int],
+        'US': ['long', int],
+        'US or OW': ['long', int],
+        'US or SS': ['long', int],
+        'US or SS or OW': ['long', int],
+        'UT': ['string', str]
     }
 
-if __name__ == '__main__':
+def create_mappings():
+    public_dict = dicom._dicom_dict.DicomDictionary
+    field_mappings = {}
+    for k,v in public_dict.iteritems():
+        vr_type = v[0]
+        field_name = v[4]
+        vr_mapping = VR_TYPES.get(vr_type)
+        if vr_mapping:
+            field_mappings[field_name] = {'type': vr_mapping[0]}
+        else:
+            pass
+            #logging.warn('Skipping field {} of VR type {}'.format(field_name, vr_type))
+
+    return field_mappings
 
-    #public_dict = dicom._dicom_dict.DicomDictionary
+
+if __name__ == '__main__':
 
     if es.indices.exists(DICOM_INDEX):
         print 'Removing existing dicom_store index...'
         res = es.indices.delete(index=DICOM_INDEX)
         print 'response: {}'.format(res)
 
+    mappings = create_mappings()
+
     request = {
         'settings': {
             'number_of_shards': 1,
             'number_of_replicas': 0
         },
         'mappings': {
-            'properties': {
-                'title': {
-                    'type': 'string'
-                }
+            'dicom': {
+                'properties': mappings
             }
         }
     }
@@ -80,3 +99,11 @@ if __name__ == '__main__':
     res = es.indices.create(index=DICOM_INDEX, body=request)
     print 'response: {}'.format(res)
 
+    acquisitions = db.acquisitions.find({'files.type': 'dicom'})
+    for a in acquisitions:
+        dicom_data = a.get('metadata')
+        if dicom_data:
+            for s in SKIPPED:
+                dicom_data.pop(s, None)
+            es.index(index=DICOM_INDEX, doc_type='dicom', body=dicom_data)
+