Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The process bellow will respect the location scope of the users, meaning that, to add a PolicyHolder for a region, the scheme clerk must have access to that very region.
The enrollment process that will be supported is defined by Nepal requirements. Although we try to make it broader, it might not support all the enrollment processes of all group insurances.

...

Use cases

PolicyHolder (employer)

The first step before enrolling insuree under a PolicyHolder, one needs to make sure that the PolicyHolder is defined in openIMIS. Read right is required to have access to the search/list screen. Managing PolicyHolders will be the role of the Clerk.

...

  • UC7-1: Search: PolicyHolder List > use the search box > search, the default list will show only the active PolicyHolders (not deleted and today between dateValidFrom/TO)

  • UC7-2: Add: PolicyHolder List > "Add" PolicyHolder > fill the details on the PolicyHolder page > Save

  • UC7-3: Update: PolicyHolder List > "Select" PolicyHolder > update the details on the Policy holder page > Save

  • UC7-4: Delete: PolicyHolder List > "Select" PolicyHolder > Delete (this role should be only available to admin, others should only archive by setting the DateValidTo)

...

  • UC7-5: Search users: PolicyHolder List > "Select" PolicyHolder > User List > search, the default list will show only the active PolicyHolder's users (not deleted and today between dateValidFrom/TO)

  • UC7-6: Add users: PolicyHolder List > "Select" PolicyHolder > User List > add user > add details on create popup (validity dates) > Save

  • UC7-7: Update users: "Select" PolicyHolder > UserList > (Search user) >Select User > change details on edit popup (validity dates) > SaveUC7

  • UC1-84: Delete user Replace users: "Select" PolicyHolder > UserList User List > (Search user) >Select User > change details > Delete

PolicyHolder insuree

...

  • click on the replace button > create new version popup > conf : This will set the ValiditTo of previous to ValidityFrom of the new

  • UC7-8: Delete user: "Select" PolicyHolder > UserList > (Search user) >Select User > change details > Delete > confirmation popup

PolicyHolder insuree

Managing PolicyHolder's insurees will be possible from the PolicyHolder page. This should be possible for the PolicyHolderClerk and the Clerk roles.

...

  • UC1-1: Search: PolicyHolder List > "Select" PolicyHolder > Insuree tab > use the search box > search, the default list will show only the active policy holder insuree (inactive policies will be hidden by default but it will be possible to show them in search results by means of a combination of the Show deleted and datevalid filter; the latter should be at Today per defaultnot deleted and today between dateValidFrom/TO)

  • UC1-2: Add: PolicyHolder List > "Select" PolicyHolder > Insuree tab > 'add' insure > fill the details on the PolicyHolder insuree page create popup > save

  • UC1-3: Update (error): PolicyHolder List > "Select" PolicyHolder > Insuree tab > update the details on the PolicyHolder insuree page edit popup > save

  • UC1-4: Replace: (new version) PolicyHolder List > "Select" PolicyHolder > Insuree tab > click on the replace button > create new version popup > conf : This will set the ValiditTo of previous to ValidityFrom of the new

  • UC1-5: Delete: PolicyHolder List > "Select" PolicyHolder > Insuree tab > "Select" an insuree> Delete (this role should be only available to admin, other should only archive by setting the DateValidTo)

...

  • Delete> confirmation popup

PolicyHolder contribution plan bundle

Managing Policy holder contribution plan bundle, this should be possible for the SchemeClerk or SchemeAdmin.

Web application

  • UC11-1: Search: PolicyHolder List > "Select" PolicyHolder > contribution plan tab > use the search box > search, the default list will show only the active contribution plan(not deleted and today between dateValidFrom/TO)

  • UC11-2: Add: PolicyHolder List > "Select" PolicyHolder > contribution plan tab > 'add' contribution plan bundles > fill >fill the details on the Policy holder insuree page create popup > save

  • UC11-3: Replace (new version) > "Select" PolicyHolder > contribution plan tab > "Select" a contribution plan bundles > click on the replace button > create new version popup > conf : This will set the ValiditTo of previous to ValidityFrom of the new

  • UC11-4: Delete: PolicyHolder List > "Select" PolicyHolder > contribution plan tab > "Select" a contribution plan bundles > Delete > confirmation popup

Backend

  • UC11-5: Replacing / removing propagation to PolicyHolder (should have): Update(error) > "Select" PolicyHolder > contribution plan tab > "Select" a contribution plan bundles > click on the edit button > fill the details on edit popup > Save

Backend

  • UC11-5: Replacing / removing propagation to PolicyHolder insuree contribution plan bundle

...

The following authorities will be added for group insurance management :, the Prefix will be 150

  • PolicyHolder

    • C/R/U/D (4 authorities)

  • PolicyHolderInsuree

    • C/R/U/D (4 authorities)

  • PolicyHolderUser

    • C/R/U/D (4 authorities)

Roles

The following roles need to be created or updated with the new authorities (new roles have * ):

  • SchemeClerk (Clerk)

    • PolicyHolder

      • C/R/U

    • PolicyHolderInsuree

      • C/R/U/D

      • Approve (TBC)

    • PolicyHolderUser

      • C/R/U/D

  • SchemeAdmin

  • PolicyHolder

    • C/R/U/D

  • PolicyHolderInsuree

    • C/R/U/D

    • Approve (TBC)

  • PolicyHolderContributionPlan

    , the Prefix will be 1501

    • Search → 150101

    • Create → 150102

    • Update → 150103

    • Delete → 150104

  • PolicyHolderInsuree, the Prefix will be 1502

    • Search → 150201

    • Create → 150202

    • Update → 150203

    • Delete → 150204

    • Replace → 150206

  • PolicyHolderUser, the Prefix will be 1503

    • Search → 150301

    • Create → 150302

    • Update → 150303

    • Delete → 150304

    • Replace → 150306

  • PolicyHolderContributionPlanBundle, the Prefix will be 1504

    • Search → 150401

    • Create → 150402

    • Update → 150403

    • Delete → 150404

    • Replace → 150406

Roles

The following roles need to be created or updated with the new authorities (new roles have * ):

...

  • SchemeClerk (Clerk)

    • PolicyHolder

      • C/R/U

    • PolicyHolderInsuree

      • C/R/U/D

      • Approve (TBC)

    • PolicyHolderUser

      • C/R/U/D

  • PolicyHolderClerk*SchemeAdmin

    • PolicyHolderInsureePolicyHolder

      • C/R/U/D

Models

    • PolicyHolderInsuree

      • C/R/U/D

      • Approve (TBC)

    • PolicyHolderContributionPlan

      • C/R/U/D

    • PolicyHolderUser

      • C/R/U/D

  • PolicyHolderClerk*

    • PolicyHolderInsuree

      • C/R/U

Models

mandatory fields have *

Technical fields have **

...

  • Code (varchar 32)*

  • TradeName (varchar 256)*

  • LocationsUUID LocationsID (fk tblLocations)

    • Not limited to one level

  • Address (varchar/json 1024)

  • Phone (varchar 16)

  • Fax (varchar 16)

  • Email (varchar 256)

  • ContactName (varchar 1024/json)

  • LegalForm (configEnum:legalForm)

  • ActivityCode (configEnum:activity)

  • AccountancyAccount (varchar 64)

  • ?bankAccount (varchar 1024 /json, )( validation: (^.+$))

  • PaymentReference (varchar 128)

...

  • Version (integer - to be used for optimistic locking)

  • PolicyHolderUUID (fk policyHolder)*

  • InsureeUUID InsureeID (fk Insuree)*

  • ContributionPlanBundleUUID (fk_contributionPlanBundle)

  • LastPolicyUUID LastPolicyID (fk Policy)

PolicyHolderContributionPlanBundle (HistoryBusinessModel)

...

PolicyHolder search criteria

  • Code (string) with icontains field lookup

  • Tradename (string)  with icontains field lookup

  • Location (4 Select, one per level)

  • LegalForm (configEnum:legalForm ) (Select)

  • ActivityCode (configEnum:activity) (Select)

  • DateValidFrom (dateToday by default) - Date pickerPicker

  • DateValidTo (date) - Date picker

The PolicyHolder result columns

  • Display name (Code - Tradename )

  • Location

  • LegalForm (configEnum:legalForm )

  • ActivityCode (configEnum:Picker

  • checkbox to show deleted

  • Launch search button

  • reset search button

  • (nice to have in R4) search per insuree

  • (nice to have in R4) search per contribution plan bundle

The PolicyHolder result columns

  • Display name (Code - Tradename )

  • Location

  • LegalForm (configEnum:legalForm )

  • ActivityCode (configEnum:activity)

  • DateValidFrom (date)

  • DateValidTo (date)

  • Delete (Trash) and Edit (Pen) buttons at the end of the line (see Location module)

MaterialUI (plus) to add a policy holder by opening an empty PH card.

Double click or click on Edit button to update a PolicyHolder.

Backend Configuration

  • configEnum:legalForm

    • Personal Company

    • Limited Risk company

    • Association

    • Governement

    • Union

  • configEnum:ActivityCode

    • Retail

    • Industry

    • Building

    • Sailing

    • Services

The PolicyHolder card

General Information

Once a PolicyHolder view/update page opens from the search list, the "General information" section or tab is displayed with those fields (editable for the one with enough rights):

  • Code (varchar) (Mandatory, not editable once created)

  • TradeName (varchar) (Mandatory)

  • LocationsUUID (fk tblLocations) (Mandatory)

    • Search for location with Level - Code - Name (all strings)

  • Address (varchar/json): multiline Box String OR (Address line 1, line2 , post code, city)

  • Phone (varchar): string + configurable Regex for validation/constraint

  • Fax (varchar): + configurable Regex for validation/constraint

  • Email (varchar): + std email field validation

  • ContactName (varchar/json)

  • LegalForm (configEnum:legalForm )

  • ActivityCode (configEnum:activity)

  • AccountancyAccount (varchar) + configurable Regex for validation/constraint

  • ?bankAccount (json)

  • PaymentReference (varchar) + configurable Regex for validation/constraint

  • DateValidFrom (date) (Mandatory)

  • DateValidTo (date)

The material (Save) UI button will save the changes

PolicyHolder Users

This pages/section/tab will link interactive (openIMIS) user to PolicyHolder, in order to allow them to access the PolicyHolder’s data on the PolicyHolder portal (show only user with one of portal authorities - PolicyHolderClerk).

This page or section could be in different form:

  • a tab in the PolicyHolder page

  • a dedicated page, access from the PolicyHolder page via a link that prefills PolicyHolder search criteria

  • a new "menu" that have the name of the PolicyHolder

PolicyHolder Users search criteria

  • option to show deleted user

  • date on which the user should be active

  • user search (contribution_fe ?)

PolicyHolder Users result column

...

(User name / firstname / lastname) Contribution of fe user module, Dropdown for new and value (or readonly dropdown preselected) for existing

...

DateValidFrom (date) (input field)

...

DateValidTo (date) (input field)

...

[{ “value“: “1”,
“label“: {“en”: “Personal Company”,
“fr”:”Persone physique”}
}, {“value“: “2”,
“label“: { “en”: “Limited Risk Company”,
“fr”:”Société à risque limité”}
}, {“value“: “3”,
“label“: { “en”: “Association”,
“fr”:”Association”}
}, {“value“: “4”,
“label“: { “en”: “Government”,
“fr”:”Gouvernement”}
}, {“value“: “5”,
“label“: { “en”: “Union”,
“fr”:”Syndicat”}
}]

  • configEnum:ActivityCode

[{ “value“: “1”,
“label“: {“en”: “Retail”,
“fr”:”Vente au détails”}
}, {“value“: “2”,
“label“: { “en”: “Industry”,
“fr”:”Industrie”}
}, {“value“: “3”,
“label“: { “en”: “Building”,
“fr”:”Construction”}
}, {“value“: “4”,
“label“: { “en”: “Sailing”,
“fr”:”Maritime”}
}, {“value“: “5”,
“label“: { “en”: “Services”,
“fr”:”Services”}
}]

  • Phone

    • default :

      Code Block
      "phoneValidation": {
        "regex": /^[0-9]*$/,
        "regexMsg": {
            "en": "Invalid phone number",
            "fr": "Numéro de téléphone invalide"
        }
      }
  • Fax

    • default:

      Code Block
      "faxValidation", {
          "regex": /^[0-9]{8,9}$/,
          "regexMsg": {
              "en": "Invalid fax number",
              "fr": "Numéro de fax invalide"
          }
      }
  • PaymentReference

    • default:

      Code Block
      "paymentReferenceValidation", {
          "regex": /.+/,
          "regexMsg": {
              "en": "Invalid payment reference",
              "fr": "Référence de payement invalide"
          }
      }
  • AccountancyAccount

    • default:

      Code Block
      "accountancyAccountValidation", {
          "regex": /.+/,
          "regexMsg": {
              "en": "Invalid accountancy account",
              "fr": "Numéro de compte comptable invalide"
          }
      }

The PolicyHolder card

General Information

Once a PolicyHolder view/update page opens from the search list, the "General information" section or tab is displayed with those fields (editable for the one with enough rights):

  • Code (varchar) (Mandatory, not editable once created)

  • TradeName (varchar) (Mandatory)

  • LocationsUUID (fk tblLocations) - (location contribution_fe) (Mandatory)

  • Address (json): multiline TextInput

  • Phone (varchar): string + configurable Regex for validation/constraint

  • Fax (varchar): + configurable Regex for validation/constraint

  • Email (varchar): + std email field validation

    • Code Block
      "regex": /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
      "regexMsg": {
          "en": "Invalid email",
          "fr": "Couriel invalide"
      }
  • ContactName (json)

  • LegalForm (configEnum:legalForm )

  • ActivityCode (configEnum:activity)

  • AccountancyAccount (varchar) + configurable Regex for validation/constraint

  • BankAccount (json)

  • PaymentReference (varchar) + configurable Regex for validation/constraint

  • DateValidFrom (date) (Mandatory)

  • DateValidTo (date)

The material (Save) UI button will save the changes, when no change are detected the same button should be greyed out

(should have) The tab content (User, insuree, CBP) should be editable after the policy holder is saved (i.e. not before ), reloading the page should be avoided if possible.

on Policyholder create

all fields should be editable

On PolicyHolder update

all fields but Code and dateValidFrom should be editable

“isDeleted“ Policy holder cannot be updated

PolicyHolder Users

This page will link interactive (openIMIS) user to PolicyHolder, in order to allow them to access the PolicyHolder’s data on the PolicyHolder portal.

PolicyHolder Users search criteria

  • option to show deleted user

  • Launch search button

  • reset search button

  • DateValidFrom (Today by default)

  • DateValidTo

  • user search (contribution_fe ?)

PolicyHolder Users result column

  • (User name / firstname / lastname) Contribution of fe user module, Dropdown for new and value (or readonly dropdown preselected) for existing

  • DateValidFrom (date) (input field)

  • DateValidTo (date) (input field)

  • Delete button

It should be possible to sort the result per column in ASC or DESC order.

PolicyHolder Users create

  • A (plus) button on bottom right of the page. Clicking it results in a popup to add the user.

  • Fields:

    • User (User picker, required)

    • Policy Holder (Policy Holder picker, required)

    • Date Valid From (Date picker, required),

    • Date Valid To (Date picker)

PolicyHolder Users replace

  • All fields could be changed

PolicyHolder Users edit

  • All fields but the user could be changed

The material (Save) UI button will save all the changes made on the list.

Journal messages

  • Create: <UserLabel> is added on <PHlabel>

  • Delete: <UserLabel> is removed from<PHlabel>

  • Update: <UserLabel> - <PHlabel> is updated

  • Replace: <UserLabelNew> is replacing <UserLabelOld> on <PHlabel>

NTG done: PHUser tab in PH

tab showed if the user have the PHuser rights or the PHPortalUser right + link to PH in PHUser

PolicyHolder Insurees

This pages/section will link the PolicyHolder and a given insuree, and will enable the addition of data on that relationship (contribution plan bundle and calculation rules parameters).

This page or section could be in different form:

  • a tab in the Policyholder card

  • a dedicated page, access from the PolicyHolder card via a link that prefill PolicyHolder search criteria

  • a new "menu" that have the name of the PolicyHolder

PolicyHolder insuree search criteria

  • option to show deleted user

  • Launch search button

  • reset search button

  • insuree search (contribution_fe ?)

  • contribution plan bundle search (contribution_fe ?)

  • DateValidFrom (Today by default)

  • DateValidTo

PolicyHolder insuree result column

  • (Insuree data) contribution_fe insure module, Dropdown for new and value for existing

  • (contribution plan bundle data) contribution_fe "contribution plan bundle" module, “Dropdown of PHCPB" for new, and “value” for existing

  • (calculation data) contribution_fe "calculation/rules" module, (inputs fields)

  • DateValidFrom (date) (input field)

  • DateValidTo (date) (input field)

  • replace, edit and Delete button

It should be possible to sort the result per column in ASC or DESC order

PolicyHolder insuree create

  • mandatory fields

    • DateValidFrom

PolicyHolder insuree replace

  • All fields but insuree could be changed

PolicyHolder insuree edit

  • Only dateValidTo can be changed

An empty line at the top of the list with the (plus) add button in place of delete, once filled, new empty line should be displayednew empty line should be displayed.
Or a button will be on the top right of the table + a popup to add the insuree.

The material (Save) UI button will save all the changes made on the list.

PolicyHolder

...

Contribution plan bundle

This

...

page/section will link the CPB to PolicyHolder

...

, only CPB part of that list will selectable on the PHInsuree page/section

This page or section could be in different form:

  • a tab in the Policyholder card

  • a dedicated page, access from the PolicyHolder card via a link that prefill PolicyHolder search criteria

  • a new "menu" that have the name of the PolicyHolder

PolicyHolder

...

Contribution plan bundle search criteria

...

  • option to show deleted user

  • insuree search (contribution_fe ?)

  • contribution plan bundle search (contribution_fe ?)

PolicyHolder insuree result column

...

(Insuree data) contribution_fe insure module, Dropdown for new and value for existing

...

(contribution plan bundle data) contribution_fe "contribution plan bundle" module, “Dropdown of PHCPB" for new, and “value” for existing

...

(calculation data) contribution_fe "calculation/rules" module, (inputs fields)

...

DateValidFrom (date) (input field)

...

DateValidTo (date) (input field)

...

  • Launch search button

  • reset search button

  • option to show inactive PHCPB

  • contribution plan bundle search (contribution_fe ?)

  • DateValidFrom (Today by default)

  • DateValidTo

PolicyHolder Contribution plan bundle result columns

  • (CPB data) contribution_fe CPB module, Dropdown for new and value for existing

  • (calculation data) contribution_fe "calculation/rules" module, (inputs fields, if any)

  • replace, edit and Delete button (TBC)

  • DateValidFrom

  • DateValidTo

It should be possible to sort the result per column in ASC or DESC order

PolicyHolder PHCPB create

  • All fields could be changed but the PH which is define by the parent page

    • CPB*

    • DateValidFrom*

    • DateValidTo

PolicyHolder PHCPB replace

  • All fields could be changed but the PH which is define by the parent page

    • CPB*

    • DateValidFrom*

    • DateValidTo

PolicyHolder PHCPB edit

  • Only dateValidTo can be changed

An empty line at the top of the list with the (plus) add button in place of delete, once filled, new empty line should be displayeddisplayed.>
Or a button will be on the top right of the table + a popup to add the PHCPB.

The material (Save) UI button will save all the changes made on the list.

PolicyHolder Contribution plan bundle

This page/section will link the CPB to PolicyHolder, only CPB part of that list will selectable on the PHuser page/section

This page or section could be in different form:

  • a tab in the Policyholder card

  • a dedicated page, access from the PolicyHolder card via a link that prefill PolicyHolder search criteria

  • a new "menu" that have the name of the PolicyHolder

PolicyHolder Contribution plan bundle search criteria

  • option to show inactive PHCPB

  • contribution plan bundle search (contribution_fe ?)

PolicyHolder Contribution plan bundle result columns

  • (CPB data) contribution_fe CPB module, Dropdown for new and value for existing

  • (calculation data) contribution_fe "calculation/rules" module, (inputs fields, if any)

  • replace and Delete button (TBC)

An empty line at the top of the list with the (plus) add button in place of delete, once filled, new empty line should be displayed.

The material (Save) UI button will save all the changes made on the list.all the changes made on the list.

PolicyHolder payment

Same filter As payment, only an addtionnal filter that will be hidden to have only payment with payment details that are linked to PHCPD when a Payment Query $

NTG done: PHPayment tab in PH

tab showed if the user have the PHPayment rights or the PHPortalPayment right + link to PH in PHUser

Solution

Idea to make this additionnal filter within the payment module (i.e the payment tab could be a contribution from payment)

  1. implement “Dynamic“ parameter in the Query

    1. adapt the payment payment query to be able take “dynamic“ filters (I hope this is possible), but don’t use it in the payment module BUT enable the “pre_query“ signals to add filters in the query set

    2. in PH be module, register a signal on the payment “pre_query“, check if there is an PH uuid on the mutation “dynamic“ params, if it is the case and if the user have either the Payment right or (the payment portal right + have a link to PH in PH user table ) then add the filters to retrieve only payment with payment details that are linked to CPD link to PH contracts

    3. the Payment module, should block the query if the user have no right or if there is no additional filter on the query

    4. (Nice to have)in the contract be module, register a signal on the payment “pre_query“, check if there is a contract uuid on the query “dynamic“ params, if it is the case and if the user have either the Payment right or (the payment portal right + have a link to contract PH in PH user table ) then add the filters to retrieve only payment with payment details that are linked to CPD

...

Link to other entities

  • place holder for other tab / link to search pages → those should be added by contribution_fe

    • 1 tab from the contract module

      • a simple pre-filtered for the contract search → select/double click will lead to contract pages (in the contract scope)shows the contract for the PH

    • 1 tab form the payment module (should haveNTHD):

      • a simple pre-filtered for shows the payment search → select/double click will lead to contribution pages (made by Bluesquare) TBD

       2
      • related to the contract

    •  3 tab from the policy module (Nice to have):

      • a simple pre-filtered tab for the contribution search → select/double click will lead to contribution pages (made by Bluesquare) TBDa simple pre-filtered for the policy search → select/double click will lead to contribution pages (made by Bluesquare) TBD

      • a tab for the policy search

      • a tab for the insureePolicy

Frontend Configuration

  • Get Backend Configuration for the dropdown/enums or duplicate it

  • configurable Regex for validation/constraint for the phone and FAX (Nice to haveNTHD)

    • plus message when the constraint is not respected (in different languages)

  • configurable Regex for validation/constraint for AccountancyAccount (Nice to have)

    • plus message when the constraint is not respected (in different languages)

  • configurable Regex for validation/constraint PaymentReference (Nice to have)

    • plus message when the constraint is not respected (in different languages)

...