diff --git a/flux_sdk/insurance_broker/__init__.py b/flux_sdk/insurance_broker/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/flux_sdk/insurance_broker/capabilities/__init__.py b/flux_sdk/insurance_broker/capabilities/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/flux_sdk/insurance_broker/capabilities/upload_census_data/BUILD b/flux_sdk/insurance_broker/capabilities/upload_census_data/BUILD new file mode 100644 index 0000000..db46e8d --- /dev/null +++ b/flux_sdk/insurance_broker/capabilities/upload_census_data/BUILD @@ -0,0 +1 @@ +python_sources() diff --git a/flux_sdk/insurance_broker/capabilities/upload_census_data/__init__.py b/flux_sdk/insurance_broker/capabilities/upload_census_data/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/flux_sdk/insurance_broker/capabilities/upload_census_data/data_models.py b/flux_sdk/insurance_broker/capabilities/upload_census_data/data_models.py new file mode 100644 index 0000000..2e5dbbd --- /dev/null +++ b/flux_sdk/insurance_broker/capabilities/upload_census_data/data_models.py @@ -0,0 +1,42 @@ +from typing import Optional + + +class MemberData: + company_name: str + company_id: str + company_ein: str + first_name: str + middle_name: str + last_name: str + subscriber_email: Optional[str] + employee_ssn: str + relationship: str + gender: str + dob: str + member_ssn: str + employee_cell_phone: Optional[str] + address_line_1: str + address_line_2: str + city: str + state: str + zip: str + hire_date: Optional[str] + title: Optional[str] + employment_type: Optional[str] + hours: Optional[str] + earnings: Optional[str] + salary: Optional[str] + work_location: Optional[str] + employee_class: Optional[str] + pay_cycle: Optional[str] + plan_type: str + carrier_name: str + plan_name: str + plan_enrollment_date: str + coverage_tier: str + coverage_details: str + action: str + employee_rate: str + employer_rate: str + total_rate: str + smoker: str diff --git a/flux_sdk/insurance_broker/capabilities/upload_census_data/interface.py b/flux_sdk/insurance_broker/capabilities/upload_census_data/interface.py new file mode 100644 index 0000000..ac2133e --- /dev/null +++ b/flux_sdk/insurance_broker/capabilities/upload_census_data/interface.py @@ -0,0 +1,28 @@ +from abc import ABC, abstractmethod + +from flux_sdk.flux_core.data_models import AppContext, CompanyInfo, File +from flux_sdk.insurance_broker.capabilities.upload_census_data.data_models import MemberData + + +class UploadCensusData(ABC): + """ + This class represents the "upload census data" capability. The developer is supposed to implement + get_formatted_census_file in their implementation. For further details regarding their + implementation details, check their documentation. + + An instance of this class cannot be initiated unless this method is implemented. + """ + + @staticmethod + @abstractmethod + def get_formatted_census_file(company_info: CompanyInfo, member_census: list[MemberData], + app_context: AppContext) -> list[File]: + """A function that converts member census data to formatted census file. + + This method receives company information and a list of MemberData objects. The developer is expected to + return the app specific list of formatted census files. + :param company_info: + :param member_census: + :param app_context: + :return: + """