    50 "BSVÖ, Wien"
    103 "Paderborn"})
 
+(def genre-code-to-genre
+  "Mapping between genre-code and genre. Used for movies"
+  {"I1" :spielfilm
+   "I2" :dokumentarfilm
+   "I3" :mundartfilm})
+
+(def braille-grade-raw-to-braille-grade
+  "Mapping between braille-grade-raw and braille-grade"
+  {"kr" :kurzschrift
+   "vd" :vollschrift})
+
 (def CatalogItem
   {:record-id s/Str
    :title s/Str

  {:record-id [:controlfield (attr= :tag "001")]
   :title [:datafield (attr= :tag "245") :subfield (attr= :code "a")]
   :subtitle [:datafield (attr= :tag "245") :subfield (attr= :code "b")]
   :creator [:datafield (attr= :tag "100") :subfield] ; autor
   :source [:datafield (attr= :tag "020") :subfield] ; isbn
   :description [:datafield (attr= :tag "520") :subfield] ; abstract
   :volume [:datafield (attr= :tag "520") :fixme] ; Bandangabe
   :source_publisher [:datafield (attr= :tag "534") :subfield (attr= :code "c")] ; Verlag
   :source_date [:datafield (attr= :tag "534") :subfield (attr= :code "d")] ; Erscheinungsjahr
   :language [:datafield (attr= :tag "041") :subfield (attr= :code "a")] ; Sprache
   :general-note [:datafield (attr= :tag "500") :subfield (attr= :code "a")]
   :personel-name [:datafield (attr= :tag "700") :subfield (attr= :code "a")] ; Regie oder Darsteller
   :personel-relator-term [:datafield (attr= :tag "700") :subfield (attr= :code "e")]
   :narrator [:datafield (attr= :tag "709") :subfield (attr= :code "a")] ; Sprecher
   :duration [:datafield (attr= :tag "391") :subfield (attr= :code "a")] ; Spieldauer
   :producer [:datafield (attr= :tag "260") :subfield (attr= :code "b")] ; Produzent
   :producer-raw [:datafield (attr= :tag "260") :subfield (attr= :code "9")] ; a number that determines Produzent Kürzel und Stadt
   :producer_place [:datafield (attr= :tag "260") :subfield (attr= :code "a")] ; Produzent Stadt
   :produced_date [:datafield (attr= :tag "260") :subfield (attr= :code "c")]
   :produced_commercially [:datafield (attr= :tag "260") :subfield (attr= :code "d")] ; kommerziell?
   :rucksackbuch [:datafield (attr= :tag "260") :subfield (attr= :code "d")] ; rucksackbuch?
   :format-raw [:datafield (attr= :tag "091") :subfield (attr= :code "c")]
   :genre-raw [:datafield (attr= :tag "099") :subfield (attr= :code "b")]
   :library_signature [:datafield (attr= :tag "091") :subfield (attr= :code "a")] ; Signaturen
   :price [:datafield (attr= :tag "024") :subfield (attr= :code "c")] ; Preis
   :contraction [:datafield (attr= :tag "024") :fixme] ; Schriftart
   :movie_country [:datafield (attr= :tag "024") :fixme] ; Film Land
   :movie_category [:datafield (attr= :tag "024") :fixme] ; Filmkategorie
   :game_category [:datafield (attr= :tag "024") :fixme] ; Spiel-Systematikgruppe
   :game_materials [:datafield (attr= :tag "024") :fixme] ; Spiel-Materialdetails
   })


   :creator s/Str
   (s/optional-key :description) s/Str
   :source_publisher s/Str
   :source-date s/Inst
   :language (apply s/enum (conj (vals iso-639-2-to-iso-639-1) "und"))
   (s/optional-key :genre) (apply s/enum (vals genre-raw-to-genre))
   (s/optional-key :subgenre) (apply s/enum (vals genre-raw-to-subgenre))
