hasklepias-0.12.0: src/EventData/Context/Domain/Demographics.hs
{-|
Module : Event Data Model facts
Description : Defines the Context type and its component types, constructors,
and class instances
Copyright : (c) NoviSci, Inc 2020
License : BSD3
Maintainer : bsaul@novisci.com
-}
{-# OPTIONS_HADDOCK hide #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE Trustworthy #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TemplateHaskell #-}
module EventData.Context.Domain.Demographics(
DemographicsFacts(..)
, DemographicsInfo(..)
, DemographicsField(..)
, demo
, field
, info
) where
import Control.Lens ( makeLenses )
import Data.Aeson ( FromJSON(..)
, genericParseJSON
, defaultOptions
, fieldLabelModifier )
import Data.List ( drop )
import Data.Eq ( Eq )
import Data.Maybe ( Maybe )
import Data.Text ( Text )
import GHC.Generics ( Generic )
import GHC.Show ( Show )
-- | a demographic fact
newtype DemographicsFacts =
DemographicsFacts { _demo :: DemographicsInfo
} deriving( Eq, Show, Generic )
-- | information of a demographic fact
data DemographicsInfo =
DemographicsInfo { _field :: DemographicsField
, _info :: Maybe Text
} deriving ( Eq, Show, Generic )
-- | fields available in a demographic fact
data DemographicsField =
BirthYear
| BirthDate
| Race
| RaceCodes
| Gender
| Zipcode
| County
| CountyFIPS
| State
| Ethnicity
| Region
| UrbanRural
| GeoPctAmIndian
| GeoPctAsian
| GeoPctBlack
| GeoPctHispanic
| GeoPctMutli
| GeoPctOther
| GeoPctWhite
| GeoType
| GeoAdiStateRank
| GeoAdiNatRank
deriving ( Eq, Show, Generic )
makeLenses ''DemographicsFacts
makeLenses ''DemographicsInfo
instance FromJSON DemographicsFacts where
parseJSON = genericParseJSON defaultOptions{fieldLabelModifier = drop 1}
instance FromJSON DemographicsInfo where
parseJSON = genericParseJSON defaultOptions{fieldLabelModifier = drop 1}
instance FromJSON DemographicsField where