Copyright | (c) Target RWE 2023 |
---|---|
License | BSD3 |
Maintainer | bbrown@targetrwe.com ljackman@targetrwe.com dpritchard@targetrwe.com |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
This is module supplies the logic for how cohorts are processed based on the
user-defined CohortSpecMap
. It is intended to be used internally to
`hasklepias-main` and not re-exported from there.
For high-level documentation of the cohort-processing pipeline, see the
Hasklepias
module documentation from `hasklepias-main`.
Command-line options, defined in `hasklepias-main`, should not affect the internal logic of cohort processing. Only the CohortSpec should be able to do so.
Note subjData
is processed *only* via the logic provided in CohortSpec
.
Synopsis
- evalSubjAtIndex :: CohortSpec t m a -> Subject t m a -> Interval a -> Either (ObsId a, Text) (ObsUnit a)
- evalSubj :: CohortSpec t m a -> Subject t m a -> EvaluatedSubject a
- evalCohort :: CohortSpec t m a -> [Subject t m a] -> Cohort a
- evalCohortMap :: CohortSpecMap t m a -> [Subject t m a] -> CohortMap a
Documentation
evalSubjAtIndex :: CohortSpec t m a -> Subject t m a -> Interval a -> Either (ObsId a, Text) (ObsUnit a) Source #
Evaluate a subject at a single index time, producing Left
if there were
any Exclude
among the computed Criteria
, and otherwise returning Right
(ObsUnit b)
with variables computed via runVariables
.
evalSubj :: CohortSpec t m a -> Subject t m a -> EvaluatedSubject a Source #
Compute IndexSet
, Criteria
and variables for a given subject via
strict fold on the IndexSet
. Returns SNoIndex
if and only if IS.
. As reflected in the definition of null
idxsEvaluatedSubject
, runVariables
is computed only for units whose Criteria
have status
Include
. This
also updates the attritionSubj
, the AttritionInfo
associated with this
subject.
evalCohort :: CohortSpec t m a -> [Subject t m a] -> Cohort a Source #
Processes the cohort-building logic provided in CohortSpec
on a list of
Subject
s. Subject
s are processes one-by-one, and AttritionInfo
is
accumulated as each subject is processed. Subject
s whose set of index
times is empty are counted only in the subjectsProcessed
field of
AttritionInfo
.
Each Subject
produces one ObsUnit
in the Cohort
for each element of
the subject's IndexSet
such that all Criteria
associated with that
index time have status Include
. If at least one element of the Criteria
for an index time has status Exclude
, no variables are computed and the
exclusion is recorded in the AttritionInfo
.
evalCohortMap :: CohortSpecMap t m a -> [Subject t m a] -> CohortMap a Source #
A convenience function to apply evalCohort
to a fixed list of subjects,
once for each element of a CohortMapSpec
. Each element of the
CohortMapSpec
represents a different, user-provided cohort-building
logic.