Skip to content

Term life: data model

The entities, fields, enumerated values and relationships. The endpoints over them are in Term life: API, and the terms used throughout are defined in Insurance concepts.

termLifeCoverage is the policy: term, sum insured, free cover limit, which variant of term life it is, and which riders are attached. lifeInsured is the person whose death triggers the payout, carrying occupation and salary because both price the risk. termLifeType and termLifeRiders are the two enumerations that shape the product.

erDiagram
    TERM_LIFE_COVERAGE {
        string policyNumber
        datetime inceptionDate
        datetime expiryDate
        enum status "policyStatus ref"
        float discountAmount
        float premiumRate
        float grossWrittenPremium
        float salesTax
        float brokeragePercentage
        float brokerageAmount
        enum premiumPaymentFrequency
        int indemnityLimitPolicy
        int indemnityLimitAccident
        string endorsementID
        datetime endorsementDate
        enum endorsementType
        int freeCoverLimit
        int totalNumberOfLives
        int totalSumInsured
        string businessSector
        enum termLifeType
        enum coverRiders
        float numberOfLives
        ref beneficiary "multi-valued"
    }
    LIFE_INSURED {
        string firstName
        string lastName
        enum salutation
        string nationality
        enum gender
        date dob
        enum idType
        string idNumber
        string occupation "ISCO-08"
        int annualSalary
        int sumInsured
    }
    TERM_LIFE_TYPE {
        int code "0-3"
        string description "term/decreasing/renewable/convertible"
    }
    TERM_LIFE_RIDER {
        int code "0-3"
        string description "ADB/TPD/TPPD/CI"
    }

    BENEFICIARY {
        string name
        float share "payout share"
    }

    TERM_LIFE_COVERAGE ||--|{ LIFE_INSURED : "covers"
    TERM_LIFE_COVERAGE ||--|{ BENEFICIARY : "pays"
    TERM_LIFE_COVERAGE ||--|| TERM_LIFE_TYPE : "of type"
    TERM_LIFE_COVERAGE ||--o{ TERM_LIFE_RIDER : "extended by"
EntityFieldTypeWhat it means
TermLifeCoveragefreeCoverLimitNumber/integerThe most cover available without medical underwriting. Below this figure nobody has to be examined, which is what makes group schemes workable
TermLifeCoveragetotalNumberOfLivesNumber/integerHow many people a group policy covers
TermLifeCoveragetotalSumInsuredNumber/integerThe combined death benefit across every life on the policy
TermLifeCoveragebusinessSectorText (UK SIC)The employer’s industry, for a group scheme. Type is not declared in the standard; treated here as UK SIC to match Commercial.occupation
TermLifeCoveragetermLifeTypeenum (termLifeType)Level term, decreasing term, renewable term or convertible term. Decreasing term is how cover is matched to a shrinking mortgage; convertible term can be swapped for whole-of-life later
TermLifeCoveragecoverRidersenum multi (termLifeRiders)Optional add-ons: accidental death benefit, total permanent disability, total and partial permanent disability, critical illness
TermLifeCoveragenumberOfLivesNumber/FloatLives covered. Overlaps with totalNumberOfLives and the standard does not distinguish them
LifeInsuredannualSalaryNumber/integerEarnings. Cover is usually capped at a multiple of it
LifeInsuredoccupationText (ISCO-08)Occupation as an ISCO-08 code. A structural risk factor in life underwriting
LifeInsuredsumInsuredNumber/integerThis person’s death benefit
LifeInsuredaddressref (address)Place of residence
TermLifeCoveragebeneficiaryref (Beneficiary)Who receives the payout. Multi-valued, and each carries a share. The life insured cannot collect their own death benefit, which is why this is a separate party. Defined in core parties

The two enumerations in this module disagree between the standard’s own source documents, and this is the sharpest such disagreement anywhere in it.

EnumerationData standardAPI specification
termLifeType4 values: term life, decreasing term, renewable term, convertible term3 values, without convertible term
termLifeRiders4 values: accidental death benefit, total permanent disability, total and partial permanent disability, critical illness5 values, the same 4 plus convertible term

Treat the data standard as authoritative. termLifeType is the four-value set including convertible term, and termLifeRiders is the four-value set without it. Convertible term is a kind of policy, not a rider, so its appearance in the rider list is the error rather than the omission. Validate against the four-value sets, and expect a mismatch if you integrate with anything built from the API specification.

Beneficiary shares are expected to total 100. Nothing in the schema enforces it, and a policy whose shares do not add up cannot be settled without someone deciding what the remainder does. Validate it on the way in.

totalNumberOfLives is spelled correctly here. The underlying standard spells it totalNumberiOfLives. Nothing on the wire depends on the original, so this page uses the corrected form.