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_statusCreate 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}/schemaBulk 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=johnCreate 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=maxicareGet Available Configurations
GET /api/v1/private/dynamic/insurer/{insurerId}/available-configurationsConfiguration Types
Standard Configuration Types
civil_status- Marital status optionsplan_type- Insurance plan typesmember_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 locationssite_name- Site locationssub_group- Sub-group classificationsrank- Employee rankslife_rider- Life insurance riderslimit- Coverage limitsroom_board- Room and board optionsclass_number- Class numbersclass_description- Class descriptionstransaction_type- Transaction typesmbl- 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 numberlastName- Last namefirstName- First namemiddleName- Middle nameextension- Name extensionemail- Email addressmobileNumber- Mobile numbergender- Genderage- Agepwd- PWD status
Dynamic Fields (Based on Configuration)
civilStatus- Civil statusplanType- Plan typeplanLevel- Plan levelmemberType- Member typerelationCode- Relation codememberStatus- Member statusbranchName- Branch namesiteName- Site namesubGroup- Sub grouprank- RanklifeRider- Life riderlimit- LimitroomBoard- Room and boardclassNumber- Class numberclassDescription- Class descriptiontransactionType- Transaction typembl- MBL
TAT Fields
accountNumberTat- Account number TATmembershipCardTat- Membership card TATaccountNumberEta- Account number ETAmembershipCardEta- Membership card ETAlabelAccountNumber- Account number labellabelMembershipCard- 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
- Creates dynamic configurations for existing insurers (Maxicare, Icare, Intellicare)
- Migrates existing hardcoded data to dynamic structure
- Maintains data integrity and relationships
- 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
- Create insurance provider in the system
- Configure the insurer using the API
- Set up company-specific plans
- Start using the dynamic data table
Client Configuration
- Client logs into the system
- Navigates to insurer configuration
- Sets up their specific plan options
- Configures validation rules
- 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