packages feed

hasklepias-0.17.0: examples/ExampleEvents.hs

{-|
Module      : Example Hasklepias Events
Description : example events with which to toy with hasklepias
Copyright   : (c) NoviSci, Inc 2020
License     : BSD3
Maintainer  : bsaul@novisci.com
-}
{-# LANGUAGE OverloadedStrings #-}

module ExampleEvents
  ( exampleEvents1
  , exampleEvents2
  , exampleEvents3
  , exampleEvents4
  , exampleSubject1
  , exampleSubject2
  ) where

import           Hasklepias

exampleEvents1 :: Events Int
exampleEvents1 = toEvents exampleEvents1Data

exampleEvents2 :: Events Int
exampleEvents2 = toEvents exampleEvents2Data

exampleEvents3 :: Events Int
exampleEvents3 = toEvents exampleEvents3Data

exampleEvents4 :: Events Int
exampleEvents4 = toEvents exampleEvents4Data

exampleSubject1 :: Subject (Events Int)
exampleSubject1 = MkSubject ("a", exampleEvents1)

exampleSubject2 :: Subject (Events Int)
exampleSubject2 = MkSubject ("b", exampleEvents2)

type EventData a = (a, a, Text)

toEvent :: (IntervalSizeable a a, Show a) => EventData a -> Event a
toEvent x = event (beginerval (t1 x) (t2 x))
                  (context (UnimplementedDomain ()) (packConcepts [t3 x]))

toEvents :: (Ord a, Show a, IntervalSizeable a a) => [EventData a] -> Events a
toEvents = sort . map toEvent

t1 :: (a, b, c) -> a
t1 (x, _, _) = x
t2 :: (a, b, c) -> b
t2 (_, x, _) = x
t3 :: (a, b, c) -> c
t3 (_, _, x) = x

exampleEvents1Data :: [EventData Int]
exampleEvents1Data =
  [ (9 , 1 , "enrollment")
  , (9 , 11, "enrollment")
  , (9 , 21, "enrollment")
  , (9 , 31, "enrollment")
  , (5 , 45, "enrollment")
  , (9 , 51, "enrollment")
  , (2 , 61, "enrollment")
  , (9 , 71, "enrollment")
  , (19, 81, "enrollment")
  , (1 , 2 , "wasScratchedByCat")
  , (1 , 45, "wasStruckByDuck")
  , (1 , 46, "wasBitByDuck")
  , (1 , 49, "wasBitByDuck")
  , (1 , 51, "wasBitByDuck")
  , (1 , 60, "wasBitByOrca")
  , (1 , 91, "wasStuckByCow")
  , (1 , 5 , "hadMinorSurgery")
  , (1 , 52, "hadMajorSurgery")
  , (5 , 5 , "tookAntibiotics")
  , (8 , 52, "wasHospitalized")
  , (6 , 45, "tookAntibiotics")
  , (13, 60, "tookAntibiotics")
  , (3 , 80, "tookAntibiotics")
  , (1 , 95, "died")
  ]

exampleEvents2Data :: [EventData Int]
exampleEvents2Data =
  [ (9 , 1 , "enrollment")
  , (14, 21, "enrollment")
  , (9 , 31, "enrollment")
  , (14, 45, "enrollment")
  , (9 , 60, "enrollment")
  , (2 , 61, "enrollment")
  , (9 , 80, "enrollment")
  , (1 , 2 , "wasPeckedByChicken")
  , (1 , 3 , "wasPeckedByChicken")
  , (1 , 4 , "wasPeckedByChicken")
  , (1 , 5 , "wasPeckedByChicken")
  , (1 , 10, "wasInjuredBySquirrel")
  , (1 , 15, "wasDiagnosedWithSciurophobia")
  , (1 , 20, "hadSquirrelContact")
  , (1 , 20, "hadAnxietyAttack")
  ]

exampleEvents3Data :: [EventData Int]
exampleEvents3Data =
  [ (9 , 1 , "enrollment")
  , (9 , 11, "enrollment")
  , (9 , 21, "enrollment")
  , (9 , 31, "enrollment")
  , (5 , 45, "enrollment")
  , (9 , 51, "enrollment")
  , (2 , 61, "enrollment")
  , (9 , 71, "enrollment")
  , (19, 81, "enrollment")
  , (1 , 2 , "wasScratchedByCat")
  , (1 , 45, "wasStruckByDuck")
  , (1 , 46, "wasBitByDuck")
  , (1 , 49, "wasBitByDuck")
  , (1 , 51, "wasBitByDuck")
  , (1 , 60, "wasBitByOrca")
  , (1 , 91, "wasStuckByCow")
  , (1 , 5 , "hadMinorSurgery")
  , (1 , 52, "hadMajorSurgery")
  , (5 , 5 , "tookAntibiotics")
  , (8 , 52, "wasHospitalized")
  , (10, 45, "tookAntibiotics")
  , (15, 58, "tookAntibiotics")
  , (3 , 80, "tookAntibiotics")
  , (1 , 95, "died")
  ]

exampleEvents4Data :: [EventData Int]
exampleEvents4Data =
  [ (1, 1 , "c1")
  , (3, 11, "c1")
  , (9, 16, "c1")
  , (9, 31, "c1")
  , (5, 45, "c1")
  , (1, 10, "c2")
  , (1, 13, "c2")
  ]