Enrollment & Eligibility
Libraries covered: enroll (member enrollment maintenance, quick enrollment, HIPAA certificates, QMCSO, HB1, eligibility export), enrollutils (mass termination / re-enrollment, FSA notices), enrolaud (enrollment audit log), enrolrpt (census, annual statements, dependent-eligibility audit, error reports).
Purpose
This domain maintains the population that all claims, billing and ID-card processing depend on: who is a member, which group/division they belong to, for what date range they are eligible, and which benefit coverages they elected. It supports full-screen enrollment maintenance (enroll/w_enrollment_maintenance), a streamlined "Quick Enrollment" intake (enroll/w_quick_enroll_main), group-level mass termination and re-enrollment (enrollutils/u_terminate, enrollutils/w_reenroll), a member-level audit log (enrolaud/w_enrollment_log), and an enrollment reporting catalog (enrolrpt).
Actors
Grounded in window titles, menus and security joins (no explicit role model exists in these libraries):
- Enrollment clerk / plan administrator staff — operates member select, enrollment maintenance and quick enrollment screens (
enroll/w_group_member_select"HOMER - Member Select",enroll/w_enrollment_maintenance"HOMER - Member Enrollment Maintenance"). - Supervisory / utility user — runs group-level termination and re-enrollment (
enrollutils/w_term,enrollutils/w_reenroll) and eligibility export (enroll/w_enroll_group_export). - Auditor — reviews change history in the Enrollment Audit Log (
enrolaud/w_enrollment_log). - System (MIS) — referenced in error messages ("Please contact the MIS Dept.",
enroll/w_enrollment_maintenanceue_set_new_row); maintains group options that drive screen behavior. - Access to master groups is restricted per user via security tables (
enroll/d_enroll_master_group_idsjoinssecurity_user_class_user/security_user_grouponuser_id).
Key workflows
New enrollment (full maintenance)
enroll/w_group_member_select ("HOMER - Member Select") is documented as the "First screen for member enrollment. Allows a user to Add/Delete/Modify/View a member". It opens w_master_group_select, the member-search popups, and enroll/w_enrollment_maintenance, which carries an open mode (add / change / remove / detail) that drives field editability (wf_dw_edit_status).
w_enrollment_maintenance is a tabbed sheet over one subscriber family:
- Subscriber Eligibility tab — demographics (
d_enroll_member_demographics), phone, address, subscriber eligibility periods (d_enroll_subscriber_eligibility_period), subscriber categories (d_enroll_member_subscriber_categories), waiting periods (d_enroll_wait_pd). - Dependents tab — dependent list (
d_enroll_member_dependents), per-dependent eligibility periods (d_enroll_dependent_eligibility_period), categories, address, student info (d_enroll_dependent_student_info), dependent waiting periods. - Coverage tab — coverage elections (
d_enroll_dependent_coverage_electionsoverelections), member coverages (d_enroll_subscriber_member_coverageoverelection_coverages), coverage riders (d_enroll_subscriber_coverage_riders). - PCP tab — primary care physician assignment via
enroll/n_enroll_member_pcpandenroll/w_enroll_pcp_search.
Saving is a single transaction: ue_update saves member detail → dependents → family rows → subscriber eligibility → categories → dependent tab → elections → member coverages → riders → COB datastores → PCP → COBRA non-qual events, then commits; any failure rolls the whole save back (enroll/w_enrollment_maintenance event ue_update on tab_subscriber). After a successful save the window checks for ID-card requests (wf_request_id_cards → global f_submit_mem_id_req) and prescription-plan transfers (wf_request_prescription_tsfr).
Quick Enrollment
enroll/w_quick_enroll_main ("Homer - Quick Enrollment") is a one-screen intake for a new subscriber family: subscriber demographics (d_quick_enroll_subscriber), dependents (d_quick_enroll_dep), group/category assignment (d_enroll_category, d_quick_enroll_all_cat), subscriber eligibility and waiting period (d_quick_enroll_sub_eligible_pd, d_quick_enroll_sub_wait_pd), and coverage elections (d_quick_enroll_sub_cov_elect, d_quick_enroll_covg_elect). Popups collect dependent address (w_quick_enroll_dep_addr), dependent categories (w_quick_enroll_dep_cat), student info (w_quick_enroll_dep_student) and coordination of benefits (w_enrollment_cob_maint).
Save order (subscriber → dependents → family → eligibilities → categories → dependent categories → students → COB) is enforced in enroll/w_quick_enroll_main event ue_save, with distinct error codes per failed store.
Life events / changes
Changes are made in w_enrollment_maintenance in change mode. Evidenced life-event mechanics:
- Expiring an eligibility period — entering
exp_dtplus a reason (dep_exp_cd) cascades expiration into elections and election coverages (wf_expire_coverage,wf_expire_dep_coverages) and evaluates COBRA consequences (wf_non_qual_event). - Clearing an expiration date — clears the reason code and retracts any pending COBRA non-qualifying event (event
itemchangedon the eligibility DataWindow). - Division transfer —
ue_move_mem_divmoves a saved eligibility period's elections/coverages to a sibling division; the target division is picked inenroll/w_enroll_trans_div. Changes must be saved first ("This function can only transfer data that has been Saved to the Database"). - Drug plan changes — expiring or changing a
Drugselection sets a flag that triggers the prescription-transfer dialog after save (wf_expire_coveragesetsib_drug_processing;wf_request_prescription_tsfropensw_drugplan_member_maint).
Terminations
- Member-level — via expiration date + reason on the eligibility period, with the cascade above.
- Group-level mass termination —
enrollutils/u_terminate(hosted byenrollutils/w_term) takes a group, a termination date and a termination code, validates them, and callsenrollutils/n_term_enroll, which collects affected subscriber keys (d_term_keys: eligibilities active on the term date) and issues batched SQL updates:ELECTION_COVERAGES.MEMBER_ELECT_EXP_DT/_EXP_CD,ELECTIONS.ELECT_EXP_DT/ELECT_EXP_CD,MEMBER_ELIGIBILITIES.EXP_DT, andMEMBERS.MBR_TERM_DT, each restricted to records effective on and not already expired before the termination date. Errors are shown inenrollutils/w_term_errors`. Checkboxes let the operator choose scope (coverages / elections / eligibilities / members / all). - Re-enrollment —
enrollutils/w_reenrollreverses a mass termination for selected divisions and coverages: it validates the new period against group coverage periods (wf_check_group_covr) and group periods (wf_checkperiods), then callsof_termenroll_eligibilities/_elections/_coverage/_categoriesinn_term_enrollto create follow-on periods for members whose latest eligibility was expired with the matching code (d_reenroll_elig). - Termination letters —
enroll/w_enroll_custom_term_add_members,w_enroll_custom_term_generateandw_enroll_custom_term_printmaintain acustom_term_transactionsqueue and generate/print letters stored inreport_hist(blobreport_data).
Quick facts evidenced elsewhere
- HIPAA certificates of creditable coverage —
enroll/w_enroll_hipaa_add_membersqueues members intohipaa_transactions;w_enroll_hipaa_generatebuilds certificates intoreport_histand marks queue rowsPROCESSED;w_enroll_hipaa_printprints/reprints;w_hipaa_dead_filelogs undeliverable certificates; history is kept as member notes with keysHIPAA Cert/HIPAA Dead File(d_hipaa_history). - QMCSO — eligibility rows carry
qmcso_flg;enroll/w_enroll_qmcso_maintmaintains orders and custodians (qmcso_custodians,qmcso_guardians), andelection_coveragescarriesqmcso_order_no.
Business rules
All statements below are grounded in the cited object; wording is technology-agnostic.
| ID | Requirement | Source |
|---|---|---|
| ENR-1 | The system shall represent every enrolled person as a member record and link members into families; the subscriber is the family row whose subscriber key equals its dependent key. | enroll/d_enroll_member_demographics (subquery on family with sub_member_sys_key = dep_member_sys_key), enroll/d_enroll_member_dependents |
| ENR-2 | The system shall record eligibility as date-bounded periods per member per group/division, keyed by subscriber key, dependent key, group and effective date, with optional expiration date and expiration reason code. | enroll/d_enroll_subscriber_eligibility_period, enroll/d_enroll_dependent_eligibility_period (member_eligibilities) |
| ENR-3 | The system shall reject a new or changed eligibility period whose date range overlaps another period for the same member and key values; open-ended periods conflict with any later period. | enroll/f_verify_dates_outside_range, enroll/w_enrollment_maintenance event ue_validate_new_date_range |
| ENR-4 | The system shall require that a dependent's eligibility dates fall inside some eligibility period of the subscriber (and validate subscriber/dependent effective dates on entry). | enroll/w_enrollment_maintenance wf_check_mem_elig, wf_validate_sub_elig_eff, wf_validate_dep_eff_dt |
| ENR-5 | The system shall not accept an eligibility expiration reason without an expiration date, and shall clear the reason when the expiration date is cleared. | enroll/w_enrollment_maintenance eligibility DW event itemchanged (cases exp_dt, dep_exp_cd; message exp_cd_no_date) |
| ENR-6 | When an eligibility period is expired with a reason, the system shall cascade that expiration date and reason to all elections and member coverages effective on or before that date whose expiration is later or open. | enroll/w_enrollment_maintenance wf_expire_coverage, wf_expire_dep_coverages |
| ENR-7 | The system shall classify a coverage termination as COBRA-qualifying when the coverage type is COBRA-eligible and the expiration reason is in the COBRA reason code set; for COBRA-administered groups, a non-qualifying termination of COBRA-type coverage shall offer generation of a COBRA "Unavailability of Coverage" letter. | enroll/w_enrollment_maintenance wf_check_cobra (coverages.cobra_elig_flg, code key MBREXPCOBR), wf_non_qual_event (code key MBEXPNCOBR, group_enroll_opts.enroll_opt_cd = 'CobraADM', group_coverages.cobra_type_cd <> 'NOCOBRA') |
| ENR-8 | On save, the system shall remove incomplete COBRA event records that correspond to eligibility expirations recorded as non-qualifying events. | enroll/w_enrollment_maintenance event ue_update (delete from cobra_event where status_cd = 'INCOMPLETE') |
| ENR-9 | The system shall compute a waiting-period end date from a start date, a unit code and a length, where units are: none, calendar days, months (rolling the year; lengths over 11 months treated as 0), years, and work days (5-day weeks converted to calendar days). | enroll/w_enrollment_maintenance wf_add_elapsed_days |
| ENR-10 | The system shall store member waiting periods as date-bounded records with a waiting-period start date, maintainable for subscriber and dependents. | enroll/d_enroll_wait_pd, enroll/d_enroll_dependent_wait (member_waiting_periods), enroll/w_enroll_view_wait_period |
| ENR-11 | The system shall generate internal member keys from a database sequence at row creation. | enroll/w_enrollment_maintenance ue_set_new_row (gnv_app.inv_sql.uf_next_member_seq()); enroll/w_quick_enroll_main validates a generated key is present |
| ENR-12 | The system shall default the external member ID according to the group's MEMBER_ID option: NONE (manual), SOC (SSN), SOC+LETTER (SSN plus suffix letter), or SYSKEY (9-digit zero-padded system key plus suffix letter); the subscriber suffix is "A" and dependents are lettered sequentially B through Z based on the prior dependent's suffix. | enroll/w_enrollment_maintenance ue_set_new_row, member-ID itemchanged case, wf_get_member_suffix (both overloads); option read from group_option_vals via d_enroll_group_option_vals |
| ENR-13 | The system shall validate member-ID uniqueness within the master group before accepting a defaulted or entered member ID. | enroll/w_enrollment_maintenance (gnv_app.inv_sql.uf_validate_mem_id(ls_memid, is_master_group_id)) |
| ENR-14 | The system shall require subscriber SSN (exactly 9 characters), member ID, master group, gender and last name before saving a subscriber; birth date must not be later than the current date. | enroll/w_quick_enroll_main ue_validate; enroll/w_enrollment_maintenance SSN length check and birth_dt itemchanged |
| ENR-15 | The system shall support group-level enrollment options that alter entry behavior, including an SSN option ("SSNo") that is checked per group. | enroll/w_enrollment_maintenance wf_check_ssno_enroll_opt, wf_check_subssnoltr_enroll_opt (group_enroll_opts) |
| ENR-16 | The system shall record benefit elections per subscriber, coverage type, coverage plan and sequence number, with effective/expiration dates, status, expiration reason, COBRA flag, coverage level (tier), benefit amount and beneficiary name. | enroll/d_quick_enroll_sub_cov_elect, enroll/d_enroll_dependent_coverage_elections (elections) |
| ENR-17 | The system shall record which family members are covered by each election as member-coverage rows keyed by the election identifiers plus the covered member, with their own effective/expiration dates, status and QMCSO order reference. | enroll/d_enroll_subscriber_member_coverage, enroll/d_quick_enroll_covg_elect (election_coverages) |
| ENR-18 | The system shall define coverage levels (tiers) in the ELECTLEVEL code table; known values include Single, Family, SpouseOnly, DepsOnly and Emp+Spo+1, with additional extended levels permitted. | enrolrpt/d_coverage_levels (CODES where CODE_KEY = 'ELECTLEVEL') |
| ENR-19 | For salary-based benefit coverages, the system shall compute the benefit amount as the group's default amount plus salary times the group multiplier, rounded to the group's rounding increment using the group's rounding style (nearest, up, down), then clamped to the group's minimum/maximum; the salary comes from the member's SALARY category value. | enroll/w_enrollment_maintenance wf_calc_benefit_amount, wf_round_amount, wf_get_salary_amount (group_coverages) |
| ENR-20 | The system shall validate that a member coverage's effective date is consistent with the member's eligibility and the parent election before acceptance. | enroll/w_enrollment_maintenance wf_valid_eff_mem_covg, wf_check_mem_elig |
| ENR-21 | The system shall standardize member and dependent addresses through the address-standardization service before saving; when standardization fails, the operator shall be asked whether to save the address anyway, and declining aborts the save. | enroll/w_enrollment_maintenance wf_stand_addr, enroll/w_quick_enroll_main wf_stand_addr (invo_mailers.of_standardize_address, of_save_address) |
| ENR-22 | Addresses shall be stored as shared records referenced by number; when a changed address has multiple references, the standardization service is invoked without forcing an update in place. | enroll/w_enrollment_maintenance wf_stand_addr (single_ref / force_update handling), addresses.addr_no usage across DataWindows |
| ENR-23 | Saving enrollment changes shall be atomic: all member, family, eligibility, category, election, coverage, rider, COB and PCP changes commit together or roll back together. | enroll/w_enrollment_maintenance event ue_update; enroll/w_quick_enroll_main event ue_save |
| ENR-24 | After a successful save, when subscriber or coverage information changed for coverages whose group configuration requires ID cards, the system shall ask the operator whether to request new ID cards and submit a request per qualifying coverage. | enroll/w_enrollment_maintenance wf_request_id_cards, wf_check_id_card_print, global f_submit_mem_id_req |
| ENR-25 | After a save that expires or changes a drug election, the system shall prompt for a prescription-plan transfer and open the drug-plan member maintenance function. | enroll/w_enrollment_maintenance wf_expire_coverage (sets drug-processing flag), wf_request_prescription_tsfr |
| ENR-26 | The system shall allow moving a saved eligibility period's elections and coverages from one division to another division of the same parent group; unsaved changes must be saved or the transfer is cancelled. | enroll/w_enrollment_maintenance event ue_move_mem_div, enroll/w_enroll_trans_div |
| ENR-27 | Group-level termination shall expire, as of the entered date and with the entered reason code, all member coverages, elections and eligibilities effective on and not already expired before that date for subscribers of the selected group, and set the member termination date; scope (members / eligibilities / elections / coverages) is operator-selectable. | enrollutils/u_terminate, enrollutils/n_term_enroll of_term_elections / of_term_eligibilities / of_term_members / of_term_coverage, enrollutils/d_term_keys |
| ENR-28 | Group-level re-enrollment shall create follow-on eligibility, election, coverage and category records for members whose most recent eligibility was expired with the specified termination code, after validating the new period against the group's coverage periods and group periods. | enrollutils/w_reenroll, enrollutils/n_term_enroll of_termenroll_* / of_create_*, enrollutils/d_reenroll_elig |
| ENR-29 | The system shall maintain per-dependent student records (student/spouse indicator, school, status code, effective/expiration dates, school address, phone, other-insurance indicator). | enroll/d_enroll_dependent_student_info, enroll/d_quick_enroll_dep_student (students) |
| ENR-30 | The system shall maintain coordination-of-benefits records per member and coverage type (carrier, policy, plan type, status and reason, other-subscriber and employer details with addresses). | enroll/d_qe_cob_detail (coord_of_bens), enroll/w_enrollment_cob_maint |
| ENR-31 | The system shall flag eligibility periods subject to a QMCSO and maintain QMCSO orders with custodian/guardian parties; member coverages may reference a QMCSO order number. | enroll/d_enroll_dependent_eligibility_period (qmcso_flg Y/N), enroll/w_enroll_qmcso_maint, enroll/d_qmcso_custodian_info, election_coverages.qmcso_order_no |
| ENR-32 | The dependent-eligibility audit shall, for groups opted in via the DEPAUDIT group option, generate first and second request letters, track response state in a DEPAUDIT member category value (e.g. No, 2ndLetter), and on the second letter suspend non-responding dependents by expiring their eligibility with reason Suspended and closing their waiting periods. | enrolrpt/w_dep_audit, enrolrpt/d_dep_audit_group_list (group_option_vals option DEPAUDIT) |
| ENR-33 | The system shall restrict master-group selection to groups the signed-on user is authorized for, and resolve divisions through the group parent hierarchy. | enroll/d_enroll_master_group_ids (security joins), hierarchical CONNECT BY prior group_id = parent_group_id queries in enroll/d_enroll_group_option_vals, enroll/w_enroll_group_export |
| ENR-34 | The system shall support export of a master group's eligibility (subscribers and dependents, with relationship, demographics, address, coverage type/level/plan and coverage dates) to a flat file named <group>-<yyyymmdd>, at a configurable path, for members active as of the entered date. | enroll/w_enroll_group_export (cursor cur_recs, enrolldump_path INI setting) |
| ENR-35 | The system shall record HB1 members separately with coverage type, monthly premium and date-bounded periods, and record HB1 payments with received date, paid-through date, check number and amount. | enroll/d_hb1_member_detail (hb1_members), enroll/d_hb1_payment_detail (hb1_payments), enroll/w_hb1_maintenance |
| ENR-36 | Every enrollment change to member, eligibility, election, coverage, category, address, COB, student and waiting-period data shall be viewable per family in an audit log combining current rows with recorded audit events (who, when, insert/update/delete, changed values). | enrolaud/w_enrollment_log, enrolaud/d_audit_trail_enrollment (aud_trail_mbr) |
Data
Core tables and how the enrollment libraries touch them (CRUD derived from _re/analysis/schema.json):
| Table | Role | enroll | enrollutils | enrolaud | enrolrpt |
|---|---|---|---|---|---|
members | One row per person (subscriber or dependent): names, SSN, member_id, master_group_id, birth/hire dates, gender, life status, mbr_term_dt, addr_no | CRUD | RU | CRUD* | CRUD* |
family | Links subscriber to family members (sub_member_sys_key, dep_member_sys_key); subscriber row has sub = dep | CRUD | R | CRUD* | R |
member_eligibilities | Date-bounded eligibility per member per group/division (eff_dt, exp_dt, dep_exp_cd, qmcso_flg, cobra_rights_sent_dt) | CRUD | CRUD | R | RU |
elections | Benefit election per subscriber + coverage type + plan + sequence (dates, status, level/tier, COBRA flag, benefit amount, beneficiary) | CRUD | CRUD | R | R |
election_coverages | Covered members per election (dep_member_sys_key, member_elect_eff_dt/exp_dt/status/exp_cd, qmcso_order_no) | CRUD | CRUD | R | R |
addresses | Shared, reference-counted addresses (addr_no, std_addr_flg) | CRUD | — | R | R |
member_waiting_periods | Waiting-period spans per member | CRUD | — | R | — |
member_cat_val | Member category values (SALARY, RELATIONS, DEPAUDIT, …) | CRUD | — | R | CRU |
students | Dependent student records | CUD | — | R | — |
coord_of_bens | Coordination of benefits | CRUD | — | R | R |
aud_trail_mbr | Enrollment audit events | — | — | R | — |
hipaa_transactions | HIPAA certificate work queue | CRUD | — | — | — |
hb1_members / hb1_payments | HB1 enrollment and premium payments | CRUD | — | — | R (payments) |
Subscriber vs dependent pattern. Everywhere in this domain, sub_member_sys_key identifies the subscriber and dep_member_sys_key the person the row is about; the subscriber's own rows have sub_member_sys_key = dep_member_sys_key (subscriber eligibility filter in enroll/d_enroll_subscriber_eligibility_period; dependent filter sub <> dep in enroll/d_quick_enroll_dep; enrollutils/d_term_keys). elections hang off the subscriber only; election_coverages fan out to each covered member.
member_accums. The accumulator table shares the same sub/dep key pattern (member_accums.sub_member_sys_key / dep_member_sys_key, from_dt/thru_dt) but per schema.json used_by it is read/written only by claims libraries (claims, clmsproc, clmutils, clmrpt, homersys) — no enrollment library touches it. Migration must nevertheless preserve key compatibility, since accumulators are joined to members enrolled here. See Open questions.
Enrollment audit subsystem (enrolaud)
enrolaud/w_enrollment_log ("Enrollment Audit Log") shows change history for one family:
- Operator finds a member by last name (
w_member_select_by_last_name) or SSN (w_homer_social_search); the window resolves the subscriber viafamilyand gathers all dependent keys (eventue_retrieve). - The audit source is table
aud_trail_mbrwith columnsdep_member_sys_key,sub_member_sys_key,audit_dt,tbl_name,tbl_key(a tilde-delimited snapshot of key/values, up to 500 chars),audit_activity(3-char action),audit_user_id,chg_descandchg_comment(2000 chars each) (enrolaud/d_audit_trail_enrollment). - Per-table tabs (members, member_eligibilities, elections, election_coverages, member_cat_val, addresses, coord_of_bens, students, member_waiting_periods) merge two sources: the current base-table rows, rendered as an "Insert … by create_user_id on create_dt" baseline (each
d_audit_trail_*DataWindow selects from the live table with literal action'Insert'), plus decoded audit rows, which the window parses out oftbl_name/tbl_keywithwf_get_token(tilde-delimited) and date-format conversionwf_cvt_string_date, then appends via thewf_set_*functions. - A "deleted" checkbox (
cbx_deleted) toggles inclusion of deleted-record events. - Each tab renders a sentence per event: "On <date> user <id> <action>d this record" (compute in
enrolaud/d_audit_trail_members).
The writer of aud_trail_mbr is not in these four libraries (no INSERT into it found here); it is presumed populated by database triggers or shared services. Flagged in Open questions.
PBM / carrier eligibility feeds
Searched all four libraries for mmo_enrollment_work, ppo_enrollment_work, sp_aetna_enrollment, and "aetna"/"melissa": none are referenced from these libraries. What these libraries do evidence:
- MMO audit report (
enrolrpt/w_mmo_audit,enrolrpt/d_mmo_audit) — an audit/export of repriced claims for MMO-affiliated groups: it derives the MMO group and section numbers per master group from database functionSFPIDBA.F_GET_GROUP_MMO_INFO(master_group_id, 'MMOBASEGRP'|'MMOSECTION'), restricted to claims whoseclaim_idstartsEMMO, and sumsREPRICE_DISCOUNT_AMTas "MMO Pricing"; the window offers Retrieve and Export over a date range. - Flat-file eligibility export (
enroll/w_enroll_group_export) — the generic outbound eligibility feed described under ENR-34. - Drug-plan transfer hand-off (
enroll/w_enrollment_maintenancewf_request_prescription_tsfr) — opens the drug-plan module's member maintenance for PBM-side changes; the PBM file production itself lives outside these libraries (drugplanlibrary).
Any mmo_enrollment_work / ppo_enrollment_work / sp_aetna_enrollment processing must live in another library or in the database — see Open questions.
Reports (enrolrpt catalog)
| Purpose | Windows / DataWindows |
|---|---|
| Annual employee statements — per-group benefit statement with coverages, dependents, beneficiary; group-level options control salary, partner, all-coverage inclusion, custom instructions; receipt is recorded per member by date | w_annlstmt, w_annlstmt_option_maintenance (annual_statement_options), w_annlstmt_report_date ("Receive Annual Statements"), d_annlstmt_* |
Census reports — parameterized member listings selected from the batch_reports table (report_type = 'census'); variants by name, birth date, city/state, state, zip, eligibility period, hire date, coverage-with-dependents, PCP, life/AD&D, flex, sales summary | w_census_rpt_args_sheet, w_census_rpt_display, dddw_rpt_select, d_census_* |
| Medicare-age censuses — members with Medicare COB, and members over age 65 (age computed from birth date as of a report date, with coverage level/plan) | d_census_medicare_with_cob, d_census_over_65 |
| Dependents over age — dependents older than a threshold as of a date, with subscriber info | w_enrollrpt_deps_over_age, d_enrollrpt_deps_age |
| Enrollment error reports — members with elections but no member coverages ("members without coverages") and single members enrolled in multi-person coverage levels | w_enrollrpt_error_rpts, d_enrollrpt_nocov, d_enrollrpt_single_in_multi |
| Dependent eligibility audit — first letter, second letter, final report and reprints for DEPAUDIT groups (see ENR-32); final report exportable to text | w_dep_audit, d_dep_audit_* |
| MMO audit — see feeds section | w_mmo_audit, d_mmo_audit |
| HB1 member/payment report | w_hb1_report, d_rpt_hb1_payment |
HIPAA notes report (in enroll) — HIPAA-related notes by member/group/all | enroll/w_notes_hipaa_report_view, d_notes_hipaa_report_* |
FSA notices & dependent-care tax statements (in enrollutils) — flexible spending account notices, summary listings, and end-of-year dependent-care tax reports by filing period | enrollutils/w_fsa_notices, w_fsa_depcare_tax_statements, d_fsa_* |
Migration notes
- Effective-dating is the backbone. Nearly every entity (
member_eligibilities,elections,election_coverages,member_waiting_periods,students,member_cat_val, group config) is a date-bounded span with null = open-ended. The overlap rule (ENR-3) and the containment rules (ENR-4, ENR-20) are enforced client-side only (PowerScript loops over DataWindow rows, e.g.f_verify_dates_outside_range); a migrated system should enforce them server-side. - Cascades are client-side too. Expiration cascade (ENR-6), COBRA event generation (ENR-7/8), ID-card requests (ENR-24) and drug transfer (ENR-25) all run in window code after user prompts; batch termination (ENR-27) builds dynamic SQL strings with 1000-key IN-lists and commits per batch (
enrollutils/n_term_enroll) — no single transaction, and interrupted runs can leave partial terminations. - Member ID scheme is group-configurable (ENR-12); dependent letter suffixes cap at 25 dependents (B–Z,
wf_get_member_suffix). SSNs are stored raw aschar(9)and widely used as identifiers (exports, annual statement matching by SSN inenrolrpt/w_annlstmt_member_select) — a privacy/redesign concern. - Shared address book with reference counting via the Mailers service (ENR-21/22). The standardization vendor call is a COM/DLL-style non-visual object (
invo_mailers); equivalent functionality (CASS-style standardization with user override) must be provided. - Audit trail duplication:
aud_trail_mbrstores tilde-delimited snapshots parsed by UI string code, with two date formats in the wild (wf_cvt_string_datehandles both). Migrate to structured audit rows; the log view expects per-table before/after visibility including deletes. - Hard-coded literals to externalize: code keys
ELECTLEVEL,MBREXPCOBR,MBEXPNCOBR; category codesSALARY,RELATIONS,DEPAUDIT; group optionsMEMBER_ID,DEPAUDIT,CobraADM,SSNo; sentinel dates12/31/2049,12/31/2050,01/01/1900used as "open" markers in SQL. - Oracle-specific SQL throughout (
CONNECT BYgroup hierarchies, outer-join(+),DECODE,SYSDATE,TO_DATE); dynamic SQL via EXECUTE IMMEDIATE in termination;rownumused for grouping in audit DataWindows. - Legacy/dead code:
w_quick_enroll_cobis marked "** OLD **";w_enrollment_cob_maintandd_qe_cob_detailare commented "NOT REGISTERED"; large commented blocks exist in save paths. Confirm scope before porting.
Open questions
- Who writes
aud_trail_mbr? No inserts exist in these libraries; presumed database triggers or a shared service. The trigger set and the exacttbl_key/chg_descencodings must be recovered from the database before the audit log can be re-implemented. - Where do
mmo_enrollment_work,ppo_enrollment_workandsp_aetna_enrollmentrun? Not referenced inenroll/enrollutils/enrolaud/enrolrpt. Locate the owning library or database jobs; only the MMO claims-audit report and the generic eligibility export exist here. member_accumsinterplay — accumulators are claims-owned; is any enrollment action (termination, re-enrollment, division transfer) expected to reset or carry over accumulators? No such code exists in these libraries.- Retroactivity policy — the code validates overlaps and containment but nowhere restricts how far back an effective/expiration date may be set; retro changes silently cascade (ENR-6) with no billing-adjustment hook visible in these libraries. Confirm intended retroactivity limits and downstream billing behavior.
uf_validate_mem_id/uf_next_member_seqsemantics live in a shared non-visual object (gnv_app.inv_sql, outside these libraries); exact uniqueness scope and sequence source need confirmation fromhomersys/systemlibraries.- Medicare handling — only reporting evidence exists (
d_census_medicare_with_cob,d_census_over_65); no Medicare status field maintenance was found in the enrollment screens. Confirm whether Medicare status is tracked via COB records only. - HB1 meaning —
hb1_members/hb1_paymentsmodel premium-paying members ("HB1 Member Maintenance", monthly_premium, paid_thru_dt) but the business meaning of "HB1" is not stated in code or comments. - Mailers service contract —
str_mailers_addressfields (standardized flag,single_ref, new address arrays) imply a specific DLL contract; the vendor product and version are not identified in these libraries. w_enroll_cobra_dependent_address_syncexists (response window overd_enroll_cobra_dependent_address_sync) suggesting COBRA dependent addresses can be synchronized with subscriber addresses; the triggering conditions were not fully traced.- Dead/disabled code — subscriber-address saves are commented out inside
ue_update(address saved via the Mailers path instead); confirm the authoritative address save path before migration.