Skip to Content
DocumentationBackendDynamic Insurer API

Dynamic Insurer Configuration API

Overview

This API allows clients to dynamically configure insurers and their settings without modifying the codebase. Instead of hardcoded entities for each insurer, the system now uses a flexible configuration approach.

Key Features

  • ✅ Dynamic insurer configuration
  • ✅ Client-specific plan configurations
  • ✅ Flexible data table structure
  • ✅ Validation against configuration
  • ✅ Bulk operations support
  • ✅ Migration from existing hardcoded data

API Endpoints

Configuration Management

Get Insurer Configurations

GET /api/v1/private/dynamic/insurer/{insurerId}/configurations?configType=civil_status

Create Insurer Configuration

POST /api/v1/private/dynamic/insurer/{insurerId}/configurations Content-Type: application/json { "configType": "civil_status", "configName": "Single", "configValue": "Single", "configMetadata": { "description": "Single marital status", "isActive": true }, "sortOrder": 1 }

Update Configuration

PUT /api/v1/private/dynamic/insurer/configurations/{configUuid} Content-Type: application/json { "configName": "Updated Name", "configValue": "Updated Value" }

Delete Configuration

DELETE /api/v1/private/dynamic/insurer/configurations/{configUuid}

Get Configuration Schema

GET /api/v1/private/dynamic/insurer/{insurerId}/schema

Bulk Create Configurations

POST /api/v1/private/dynamic/insurer/{insurerId}/configurations/bulk Content-Type: application/json { "configurations": [ { "configType": "civil_status", "configName": "Single", "configValue": "Single", "sortOrder": 1 }, { "configType": "civil_status", "configName": "Married", "configValue": "Married", "sortOrder": 2 } ] }

Data Table Management

Get Data Table Entries

GET /api/v1/private/dynamic/insurer/company/{companyUuid}/data-table?insurerId=maxicare&page=1&pageSize=10&search=john

Create Data Table Entry

POST /api/v1/private/dynamic/insurer/company/{companyUuid}/data-table Content-Type: application/json { "insurerId": "maxicare", "empNo": "EMP001", "lastName": "Doe", "firstName": "John", "middleName": "M", "email": "john.doe@example.com", "mobileNumber": "09123456789", "memberType": "Principal", "civilStatus": "Single", "planType": "Individual", "planLevel": "Basic", "relationCode": "Self", "memberStatus": "Active", "dynamicConfig": { "customField1": "value1", "customField2": "value2" } }

Update Data Table Entry

PUT /api/v1/private/dynamic/insurer/data-table/{dataTableUuid} Content-Type: application/json { "memberStatus": "Inactive", "planType": "Family" }

Delete Data Table Entry

DELETE /api/v1/private/dynamic/insurer/data-table/{dataTableUuid}

Bulk Upload Data Table Entries

POST /api/v1/private/dynamic/insurer/company/{companyUuid}/insurer/{insurerId}/data-table/bulk-upload Content-Type: application/json { "entries": [ { "empNo": "EMP001", "lastName": "Doe", "firstName": "John", "email": "john.doe@example.com", "memberType": "Principal", "civilStatus": "Single" }, { "empNo": "EMP002", "lastName": "Smith", "firstName": "Jane", "email": "jane.smith@example.com", "memberType": "Dependent", "civilStatus": "Married" } ] }

Get Data Table Statistics

GET /api/v1/private/dynamic/insurer/company/{companyUuid}/data-table/statistics?insurerId=maxicare

Get Available Configurations

GET /api/v1/private/dynamic/insurer/{insurerId}/available-configurations

Configuration Types

Standard Configuration Types

  • civil_status - Marital status options
  • plan_type - Insurance plan types
  • member_type - Member categories (Principal, Dependent, etc.)
  • plan_level - Plan levels (Basic, Standard, Premium, etc.)
  • relation_code - Relationship codes (Spouse, Child, Parent, etc.)
  • member_status - Member status (Active, Inactive, Suspended, etc.)
  • branch_name - Branch locations
  • site_name - Site locations
  • sub_group - Sub-group classifications
  • rank - Employee ranks
  • life_rider - Life insurance riders
  • limit - Coverage limits
  • room_board - Room and board options
  • class_number - Class numbers
  • class_description - Class descriptions
  • transaction_type - Transaction types
  • mbl - Maximum Benefit Limits

Custom Configuration Types

You can create any custom configuration type by using the configType field with any string value.

Data Table Fields

Core Fields (Always Present)

  • empNo - Employee number
  • lastName - Last name
  • firstName - First name
  • middleName - Middle name
  • extension - Name extension
  • email - Email address
  • mobileNumber - Mobile number
  • gender - Gender
  • age - Age
  • pwd - PWD status

Dynamic Fields (Based on Configuration)

  • civilStatus - Civil status
  • planType - Plan type
  • planLevel - Plan level
  • memberType - Member type
  • relationCode - Relation code
  • memberStatus - Member status
  • branchName - Branch name
  • siteName - Site name
  • subGroup - Sub group
  • rank - Rank
  • lifeRider - Life rider
  • limit - Limit
  • roomBoard - Room and board
  • classNumber - Class number
  • classDescription - Class description
  • transactionType - Transaction type
  • mbl - MBL

TAT Fields

  • accountNumberTat - Account number TAT
  • membershipCardTat - Membership card TAT
  • accountNumberEta - Account number ETA
  • membershipCardEta - Membership card ETA
  • labelAccountNumber - Account number label
  • labelMembershipCard - Membership card label

Flexible Configuration

  • dynamicConfig - JSON field for any custom configuration data

Migration from Existing Data

Running Migration

import { InsurerMigrationService } from './src/utils/migrateToDynamicInsurer'; const migrationService = new InsurerMigrationService(); await migrationService.runAllMigrations();

Migration Process

  1. Creates dynamic configurations for existing insurers (Maxicare, Icare, Intellicare)
  2. Migrates existing hardcoded data to dynamic structure
  3. Maintains data integrity and relationships
  4. Preserves existing functionality

Benefits

For Developers

  • ✅ No need to create new entities for each insurer
  • ✅ Single data table structure for all insurers
  • ✅ Flexible configuration system
  • ✅ Easy to add new insurers
  • ✅ Maintainable codebase

For Clients

  • ✅ Self-service configuration
  • ✅ Custom field support
  • ✅ Flexible plan management
  • ✅ Easy data management
  • ✅ Scalable solution

For Business

  • ✅ Faster time to market for new insurers
  • ✅ Reduced development costs
  • ✅ Better client satisfaction
  • ✅ Scalable architecture
  • ✅ Future-proof solution

Example Usage

Adding a New Insurer

  1. Create insurance provider in the system
  2. Configure the insurer using the API
  3. Set up company-specific plans
  4. Start using the dynamic data table

Client Configuration

  1. Client logs into the system
  2. Navigates to insurer configuration
  3. Sets up their specific plan options
  4. Configures validation rules
  5. Manages their data through the API

This dynamic system provides a flexible, scalable solution that eliminates the need for hardcoded insurer entities while maintaining all existing functionality.

Last updated on