Skip to content

Index

flowchart TB
    A[&#127463&#127466 Claims - Automated coverage computation] --> |components/be/internal/claim_management/steps| B(find_coverage_decision)
    B --> |Related to the\ncare act data itself| C{Step 1:\nRejection checks\nfrom care act}
    B --> |Related to the\nsource of the care act| D{Step 2:\nDecision from\nsource type}
    B --> |Related to the\ncare act decision rule| E{Step 3:\nDecision from\nrule}

    C --> C1(Care act is not prescribed) --> C11
    C --> C2(Care in the future) --> C11
    C --> C3(Care act is blacklisted) --> C11

    C11((Reject decision with\nspecific error context\n&#10060))

    D --> D1(Care act source\nis from hospitalization invoice)
    D1 --> |Care act type is hospitalization| D11((Select hospitalization\ncoverage\n&#9989))
    D1 --> |Else| D12((Reject decision with\nAssurCard context\n&#10060))

    E --> E1[Get active decision rule:\na rule can be defined only for\na specific insurance profile]

    E1 --> E11{Act type is a medical act} --> F
    E1 --> E12{Act type is CNK:\npharmaceutical products} --> F
    E1 --> E13{Act type is magistral prep\nor other} --> E131((Reject decision:\ntype not supported\n&#10060))

    F(Check decision rule action type)

    F --> F1{Action is: Reject} --> F11((Reject decision:\nusing rule\n&#10060))
    F --> F2{Action is:\nRequire manual intervention} --> F21((Unknown decision:\nmanual intervention\n&#10067))
    F --> F3{Action is: Accept} --> |This should be called 'Compute' for clarity| G

    G(Auto compute decision) --> H(Fetch coverage\nfrom insurance profile)
    H --> I(Check possible rejections)

    I --> |Yes| I1(Zero coverage, or care type not in coverage,\nex: dental, pre/post) --> I11((Reject decision:\nmissing coverage\n&#10060))
    I --> |Yes| I2(Care type is ambulatory\nbut severe illness or pre/post\nin available coverages) --> I21((Unknown decision:\nmanual intervention\n&#10067))
    I --> |No| J(Check care type)

    J --> |Dental| J1(Check dental coverage)
    J1 --> |Not found| J11((Reject decision:\nno dental coverage\n&#10060))
    J1 --> |Found| J12((Select dental coverage\ndecision\n&#9989))

    J --> |Daily care| J2(Check daily care coverage)
    J2 --> |Not found| J21((Reject decision:\nno daily care coverage\n&#10060))
    J2 --> |Found| J22((Select daily care coverage\ndecision\n&#9989))

    J --> |Pre/post +ambulatory or not| J3(Check pre/post coverage)
    J3 --> J31(Find declaration category\nfor hospitalization)
    J31 --> |NotFound| J311(Check care type)
    J311 --> |Only pre/post| J3112((Reject decision:\nno hospitalization declaration\n&#10060))
    J311 --> |Pre/Post+ambulatory| J2
    J31 --> |Found| J312((Select pre/post coverage\ndecision\n&#9989))

    J --> |Other| J4((Unknow decision:\ntype not supported\n&#10067))
Hold "Alt" / "Option" to enable pan & zoom

CoverageDecision

Bases: AlanBaseEnum

The possible decisions of the Claim Engine about a given care act.

Note: this is partially duplicated from components.be.internal.models.enums.coverage_type.CoverageType but Python 3.7 doesn't support enum extension.

DAILY_CARE class-attribute instance-attribute

DAILY_CARE = 'ambulatory'

DENTAL class-attribute instance-attribute

DENTAL = 'dental'

HOSPITALIZATION class-attribute instance-attribute

HOSPITALIZATION = 'hospitalization'

ON_HOLD class-attribute instance-attribute

ON_HOLD = 'on_hold'

PRE_POST class-attribute instance-attribute

PRE_POST = 'pre_post'

REJECT class-attribute instance-attribute

REJECT = 'reject'

REMINDER: Add covered decisions to the is_covered property below Add non-rejection decisions to WHITELISTED_NON_REJECTION_CONTEXT_PROPERTIES in test_rejection_reasons.py

SEVERE_ILLNESS class-attribute instance-attribute

SEVERE_ILLNESS = 'severe_illness'

UNKNOWN class-attribute instance-attribute

UNKNOWN = 'unknown'

is_covered property

is_covered

RejectionReasons

Bases: AlanBaseEnum

LIMIT_ALREADY_CONSUMED class-attribute instance-attribute

LIMIT_ALREADY_CONSUMED = 'limit_already_consumed'

LIMIT_REACHED class-attribute instance-attribute

LIMIT_REACHED = 'limit_reached'

MATERNITY_AID_WITHOUT_CHILDBIRTH_HOSPITALIZATION class-attribute instance-attribute

MATERNITY_AID_WITHOUT_CHILDBIRTH_HOSPITALIZATION = (
    "maternity_aid_without_childbirth_hospitalization"
)

NON_URGENT_TRANSPORTATION_OUTSIDE_SEVERE_ILLNESS_COVERAGE class-attribute instance-attribute

NON_URGENT_TRANSPORTATION_OUTSIDE_SEVERE_ILLNESS_COVERAGE = "non_urgent_transportation_outside_severe_illness_coverage"

NOT_AUTHORIZED_HEALTH_PRACTITIONER class-attribute instance-attribute

NOT_AUTHORIZED_HEALTH_PRACTITIONER = (
    "not_authorized_health_practitioner"
)

NOT_COVERED class-attribute instance-attribute

NOT_COVERED = 'not_covered'

NOT_COVERED_DURING_WAITING_PERIOD class-attribute instance-attribute

NOT_COVERED_DURING_WAITING_PERIOD = (
    "not_covered_during_waiting_period"
)

NOT_INSURED class-attribute instance-attribute

NOT_INSURED = 'not_insured'

NOT_PRESCRIBED class-attribute instance-attribute

NOT_PRESCRIBED = 'not_prescribed_by_doctor'

NO_ALLOWED_COVERAGE class-attribute instance-attribute

NO_ALLOWED_COVERAGE = 'no_allowed_coverage'

NO_AMBULATORY_COVERAGE class-attribute instance-attribute

NO_AMBULATORY_COVERAGE = 'no_ambulatory_coverage'

NO_CONTRACEPTION class-attribute instance-attribute

NO_CONTRACEPTION = 'no_contraception'

NO_COSMETICS class-attribute instance-attribute

NO_COSMETICS = 'no_cosmetics'

NO_COVID_SELF_TESTS class-attribute instance-attribute

NO_COVID_SELF_TESTS = 'no_covid_self_tests'

NO_DENTAL_COVERAGE class-attribute instance-attribute

NO_DENTAL_COVERAGE = 'no_dental_coverage'

NO_HOSPITALIZATION_DECLARATION class-attribute instance-attribute

NO_HOSPITALIZATION_DECLARATION = (
    "no_hospitalization_declaration"
)

NO_MUTUALITY_COVERAGE class-attribute instance-attribute

NO_MUTUALITY_COVERAGE = 'no_mutuality_coverage'

NO_OUT_OF_POCKET_COST class-attribute instance-attribute

NO_OUT_OF_POCKET_COST = 'no_out_of_pocket_cost'

NO_PRE_POST_COVERAGE class-attribute instance-attribute

NO_PRE_POST_COVERAGE = 'no_pre_post_coverage'

NO_SEVERE_ILLNESS_COVERAGE class-attribute instance-attribute

NO_SEVERE_ILLNESS_COVERAGE = 'no_severe_illness_coverage'

PREPOST_FALLBACK_NO_AMBULATORY_COVERAGE class-attribute instance-attribute

PREPOST_FALLBACK_NO_AMBULATORY_COVERAGE = (
    "prepost_fallback_no_ambulatory_coverage"
)

PRESCRIBED_TO_OTHER class-attribute instance-attribute

PRESCRIBED_TO_OTHER = 'prescribed_to_other'

UNKNOWN_CNK_CODE class-attribute instance-attribute

UNKNOWN_CNK_CODE = 'unknown_cnk_code'