NAME
    Medical::Growth - Basic tools for growth-dependent norms

SYNOPSIS
      use Medical::Growth;
      my(@systems) = Medical::Growth->available_systems;
      my $meas = Medical::Growth->measure_class_for(system => My::System,...)
      my $z_score = $meas->value_to_z($value, @criteria);

DESCRIPTION
    Medical::Growth is designed as a common resource for implementing
    systems of growth-dependent norms. It provides a set of basic tools for
    operating on normally distributed data, as well as a common entry point
    for users of Medical::Growth-compatible systems.

    If you're interested in using a Medical::Growth-compatible measurement
    system, read on. If you're interested in building a measurement system,
    you may also want to see Medical::Growth::Base, which contains some
    tools to facilitate the process.

  USING MEASUREMENT SYSTEMS
    In conceptual terms, a collection of methods that allows you to compare
    a measured value to a set of norms is called a measurement system. For
    instance, the models for anthropometric values based on the NHANES 2000
    survey, from which growth charts in common use in pediatrics were
    created, is a measurement system.

    In pragmatic terms, a measurement system is a collection of classes that
    present a common set of ways to compare a measurement to norms. Each
    specific comparison is done via a measurement class, which provides an
    interface for a specific set of norms. To continue the NHANES 2000
    example, a measurement class would correspond to a single growth chart,
    that is, the collection of norms to which you would compare a specific
    value. Thus, weight for age in boys 2-20 years old would be a
    measurement class, while length for age in girls under 3 would be a
    separate measurement class. In some cases, such as these, a measurement
    class will need to know only one value (here, age) in addition to the
    measurement to return the normalized score. In others, it may need
    several additional pieces of information. Where to draw the boundary
    between different measurement classes and a single measurement class
    using multiple indices may be different for different measurement
    systems, and reflects the best interface design for common use.

    Medical::Growth provides two methods to simplify interactions with
    measurement systems:

  METHODS
    available_systems
        Returns a list of the names of measurement systems installed in the
        Medical::Growth hierarchy.

    measure_class_for(*%criteria*)
        Locate a measurement class that performs the function specified by
        *%criteria*, and return a handle that allows you to call methods
        from the measurement class. This is provided as a common entry point
        to make finding measurement classes easier. Although nothing stops
        you from hard-coding the name of the measurement class directly,
        finding it via "measurement_class_for" may help keep your code more
        readable, and may let you take advantage of shortcuts provided by
        the measurement system.

        Most of the work is done by the "measurement_class_for" method in
        each measurement system, since it requires detailed knowledge of how
        a particular measurement system is implemented. The Medical::Growth
        version of this method uses the value in *%criteria* associated with
        the key "system" to identify the measurement system you want. This
        value can be the full name of a measurement system's top-level
        class, as returned by available_systems, or it may be an abbreviated
        name without the leading "Medical::Growth::". The top-level class
        for the measurement system is loaded, if necessary, and its
        "measurement_class_for" method is called, with *%criteria* as
        arguments. It is up to the measurement system's
        "measurement_class_for" to interpret the rest of *%criteria* and
        return the appropriate handle.

        If the "system" element is missing from *%criteria* or the class
        cannot be loaded, an exception is thrown.

  EXPORT
    None.

DIAGNOSTICS
    Any message produced by an included package.

    No measure_class_for() method found (F)
        Medical::Growth::measure_class_for found a measurement system
        matching the "system" specified and loaded its top-level module, but
        that module didn't provide a system-specific "measure_class_for" to
        pick a measurement class.

BUGS AND CAVEATS
    Are there, for certain, but have yet to be cataloged.

VERSION
    version 1.00

AUTHOR
    Charles Bailey <cbail@cpan.org>

COPYRIGHT AND LICENSE
    Copyright 2014 Charles Bailey.

    This software may be used under the terms of the Artistic License or the
    GNU General Public License, as the user prefers.

ACKNOWLEDGMENT
    The code incorporated into this package was originally written with
    United States federal funding as part of research work done by the
    author at the Children's Hospital of Philadelphia.