Skip to content
This repository has been archived by the owner on Aug 24, 2024. It is now read-only.

bitemporal data management for prototypical life insurance data model

License

Notifications You must be signed in to change notification settings

Actuarial-Sciences-for-Africa-ASA/LifeInsuranceDataModel.jl

Repository files navigation

CI

Documentation

This is a prototype model for bitemporal data management based on a Julia bitemporal data management API This is - as of now - all about versioning of generic entities and relationships for a Life Insurance app and uses bitemporal relational modelling. The bitemporal model is agnostic to domain specific strucure, which is in serialized form on this level of modelling. That refers to product definitions - entities product, product part and tariff - as well as contract data insofar they are product specific - product and tariff items.

Products, that define data structures and functions, will live in their own packages and be pluggable into the contract management system. (Like the examples from LifeContingencies.jl)

Current features are:

  • Product neutral architecture: Loose coupling of management system and products, all product specific processing is defined in product data.
  • Bitemporal CRUD of contracts, products and partners
    • using transaction logic making uncommitted transaction data persistent, such that uncommitted transactions can be
      • suspended and resumed and
      • passed on in workflow contexts, where
      • ownership of a workflow can be transferred between users.
  • Support of MVVM Architecture by
    • creation of cross sections of the two-dimensional data model given transaction and reference time - ¨state of affairs as of referenced time as persisted of transaction time¨ thus providing view model content for display and editing.
    • enabling conversion of sections into JSON and vice versa using nested Dict{String,Any}. Leveraging Stipple,jl a reactive JSON based view model can be created from and synched with these julia dictionaries.
    • view model editing with savepointing using a stack of transient view model states
    • persisting view model state into an uncommitted transaction whereby the last view model states becomes the new bottom of the stack.
    • rolling back and committing workflow contexts
  • Test and sample code scripts
  • scripts for github workflow and gitpod providing a running postgres instance.

UML Model

Model Features

Entities

  • tariff (work in progress)
    • a kind of index of calculation bases:
    • formula libraries
    • probabilities, commutation tables
    • business case rules
    • ui plugins for display and editing of specific parameters which are not captured by the generic model
  • tariffpartnerroles (testable)
    • associates roles for partners to tariffs
  • product, product parts (testable)
    • bundling of tariffs associating tariff roles (main, bonus, ...)
  • partner (testable) just a placeholder with date of birth and gender
  • contract (editable via MVVM)
    • contract partners with roles (policy holder, premium payer)
    • product items referencing a product, multiple occurences (referencing the same product) possible for adaptions of insured capital
      • tariff items refrence tariffs corresponding to the product's parts
        • tariff item partners reference partners in roles corresponding to the referenced tariff's partner roles

Next Steps

Click the button below to start a new development environment:

The gitpod workspace uses a Docker a public image: michaelfliegner/gitpodpgijulia

The Dockerfile for this image resides here

Open in Gitpod On startup vscode will open this jupyter notebook:

Get Started With Your Own Project

A new project

Click the above "Open in Gitpod" button to start a new workspace. Once you're ready to push your first code changes, Gitpod will guide you to fork this project so you own it.