Skip to content

Commit

Permalink
task/WP-293: Renewal Registration Form (#233)
Browse files Browse the repository at this point in the history
* On registration form page, add ability to load in record info (view + databsse function updates)

* Prevent pre-fill of entity coverage estimates if registration renewal

* Move data formatting for registrations to separate file for use in multiple places
  • Loading branch information
edmondsgarrett authored Oct 25, 2023
1 parent 927a3ce commit 0ee18f6
Show file tree
Hide file tree
Showing 5 changed files with 165 additions and 152 deletions.
138 changes: 1 addition & 137 deletions apcd-cms/src/apps/admin_regis_table/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from apps.utils.apcd_database import get_registrations, get_registration_contacts, get_registration_entities, create_submitter, update_registration, update_registration_contact, update_registration_entity
from apps.utils.apcd_groups import is_apcd_admin
from apps.utils.utils import table_filter
from apps.utils.registrations_data_formatting import _set_registration
from apps.components.paginator.paginator import paginator
import logging
from dateutil import parser
Expand Down Expand Up @@ -83,143 +84,6 @@ def dispatch(self, request, *args, **kwargs):
def get_context_data(self, registrations_content, registrations_entities, registrations_contacts, *args, **kwargs):
context = super(RegistrationsTable, self).get_context_data(*args, **kwargs)

def _set_registration(reg, reg_ents, reg_conts):
org_types = {
'carrier': 'Insurance Carrier',
'tpa_aso': 'Plan Administrator¹ (TPA/ASO)',
'pbm': 'Pharmacy Benefit Manager (PBM)'
}
return {
'biz_name': reg[7],
'type': org_types[reg[6]] if (reg[6] and reg[6] in org_types.keys()) else None,
'location': '{city}, {state}'.format
(
city=reg[9],
state=reg[10]
),
'reg_status': reg[5].title(),
'reg_id': reg[0],
'view_modal_content': _set_modal_content(reg, reg_ents, reg_conts, org_types)
}
def _set_entities(reg_ent):
return {
'claim_val': reg_ent[0],
'ent_id': reg_ent[3],
'claim_and_enc_vol': reg_ent[2],
'license': reg_ent[4] if reg_ent[4] else None,
'naic': reg_ent[5] if reg_ent[5] else None,
'no_covered': reg_ent[6],
'ent_name': reg_ent[7],
'fein': reg_ent[8] if reg_ent[8] else None,
'plans_type': {
"Commercial": reg_ent[9],
"Medicare": reg_ent[10],
"Medicaid": reg_ent[11],
},
'files_type': {
"Eligibility/Enrollment": reg_ent[12],
"Provider": reg_ent[13],
"Medical": reg_ent[14],
"Pharmacy": reg_ent[15],
"Dental": reg_ent[16]
}
}
def _set_contacts(reg_cont):

def format_phone_number(num):
formatted_num_list = list(reversed(num))
last_four_digits = 3
last_seven_digits = 7
all_ten_digits = 11
placement_corrector = 1 #To add formatting chars in correct places
for curr_position in range(len(formatted_num_list) + 1):
placement_position = curr_position + placement_corrector
if curr_position == last_four_digits or curr_position == last_seven_digits:
formatted_num_list.insert(placement_position,'-')
if curr_position == all_ten_digits and len(num) > 10:
formatted_num_list.insert(placement_position,' ')
formatted_num_list.append('+')
return ''.join(reversed(formatted_num_list))

return {
'cont_id': reg_cont[0],
'notif': reg_cont[2],
'role': reg_cont[3],
'name': reg_cont[4],
'phone': format_phone_number(reg_cont[5]),
'email': reg_cont[6],
}
def _set_modal_content(reg, reg_ent, reg_cont, org_types):
return {
'biz_name': reg[7],
'type': org_types[reg[6]] if (reg[6] and reg[6] in org_types.keys()) else None,
'city': reg[9],
'state': reg[10],
'address': reg[8],
'zip': reg[11],
'for_self': reg[4],
'entities': [_set_entities(ent) for ent in reg_ent],
'contacts': [_set_contacts(cont) for cont in reg_cont],
'org_types': org_types,
'us_state_list': [
'AL - Alabama',
'AK - Alaska',
'AS - American Samoa',
'AR - Arkansas',
'AZ - Arizona',
'CA - California',
'CO - Colorado',
'CT - Connecticut',
'DE - Delaware',
'DC - District of Columbia',
'FL - Florida',
'GA - Georgia',
'GU - Guam',
'HI - Hawaii',
'ID - Idaho',
'IL - Illinois',
'IN - Indiana',
'IA - Iowa',
'KS - Kansas',
'KY - Kentucky',
'LA - Louisiana',
'ME - Maine',
'MD - Maryland',
'MA - Massachusetts',
'MI - Michigan',
'MN - Minnesota',
'MS - Mississippi',
'MO - Missouri',
'MT - Montana',
'NE - Nebraska',
'NH - New Hampshire',
'NJ - New Jersey',
'NM - New Mexico',
'NV - Nevada',
'NY - New York',
'NC - North Carolina',
'ND - North Dakota',
'MP - Northern Mariana Islands',
'OH - Ohio',
'OK - Oklahoma',
'OR - Oregon',
'PA - Pennsylvania',
'RI - Rhode Island',
'SC - South Carolina',
'SD - South Dakota',
'TN - Tennessee',
'TX - Texas',
'UT - Utah',
'VT - Vermont',
'VA - Virginia',
'VI - Virgin Islands',
'WA - Washington',
'WV - West Virginia',
'WI - Wisconsin',
'WY - Wyoming'
],
}

context['header'] = ['Business Name', 'Type', 'Location', 'Registration Status', 'Actions']
context['status_options'] = ['All', 'Received', 'Processing', 'Complete']
context['org_options'] = ['All']
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -423,7 +423,7 @@ <h6>
inputmode="numeric"
min="1"
step="1"
value="{{ entity.no_covered }}"
value="{% if not renew %}{{ entity.no_covered }}{% endif %}"
/>
</div>

Expand All @@ -442,7 +442,7 @@ <h6>
id="claims_encounters_volume_{{ent_no}}_{{r.reg_id}}"
inputmode="numeric"
min="1"
value="{{ entity.claim_and_enc_vol }}"
value="{% if not renew %}{{ entity.claim_and_enc_vol }}{% endif %}"
/>
</div>

Expand All @@ -463,7 +463,7 @@ <h6>
inputmode="numeric"
step="0.01"
min="0.01"
value="{{ entity.claim_val }}"
value="{% if not renew %}{{ entity.claim_val }}{% endif %}"
/>
</div>
</div>
Expand Down
19 changes: 16 additions & 3 deletions apcd-cms/src/apps/registrations/views.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from apps.utils import apcd_database
from apps.utils.apcd_groups import has_apcd_group
from apps.utils.registrations_data_formatting import _set_registration
from django.conf import settings
from django.http import HttpResponse, HttpResponseRedirect
from django.template import loader
Expand All @@ -18,14 +19,26 @@

class SubmissionFormView(View):
def get(self, request):
formatted_reg_data = []
renew = False
if 'reg_id' in request.GET:
reg_id = request.GET.get('reg_id')
renew = True
registration_content = apcd_database.get_registrations(reg_id)[0]
registration_entities = apcd_database.get_registration_entities(reg_id)
registration_contacts = apcd_database.get_registration_contacts(reg_id)
formatted_reg_data = _set_registration(registration_content, registration_entities, registration_contacts)
if (request.user.is_authenticated and has_apcd_group(request.user)):
template = loader.get_template('submission_form/submission_form.html')
return HttpResponse(template.render({}, request))
return HttpResponse(template.render({'r': formatted_reg_data, 'renew': renew}, request))
return HttpResponseRedirect('/')


def post(self, request):
form = request.POST.copy()
old_reg_id = None
if 'reg_id' in form:
old_reg_id = form['reg_id']
errors = []

if (request.user.is_authenticated):
Expand All @@ -39,8 +52,8 @@ def post(self, request):
reg_resp = apcd_database.create_registration(form)
if not _err_msg(reg_resp) and type(reg_resp) == int:
for iteration in range(1,6):
contact_resp = apcd_database.create_registration_contact(form, reg_resp, iteration)
entity_resp = apcd_database.create_registration_entity(form, reg_resp, iteration)
contact_resp = apcd_database.create_registration_contact(form, reg_resp, iteration, old_reg_id=old_reg_id)
entity_resp = apcd_database.create_registration_entity(form, reg_resp, iteration, old_reg_id=old_reg_id)
if _err_msg(contact_resp):
errors.append(_err_msg(contact_resp))
if _err_msg(entity_resp):
Expand Down
18 changes: 9 additions & 9 deletions apcd-cms/src/apps/utils/apcd_database.py
Original file line number Diff line number Diff line change
Expand Up @@ -317,14 +317,14 @@ def get_registration_entities(reg_id=None):
conn.close()


def create_registration_entity(form, reg_id, iteration, from_update_reg=None):
def create_registration_entity(form, reg_id, iteration, from_update_reg=None, old_reg_id=None):
cur = None
conn = None
values = ()
try:
if not _acceptable_entity(form, iteration, reg_id if from_update_reg else None):
if not _acceptable_entity(form, iteration, reg_id if from_update_reg else (old_reg_id if old_reg_id else None)):
return
str_end = f'{iteration}{ f"_{reg_id}" if from_update_reg else "" }'
str_end = f'{iteration}{ f"_{reg_id}" if from_update_reg else (f"_{old_reg_id}" if old_reg_id else "") }'
values = (
reg_id,
float(form['total_claims_value_{}'.format(str_end)]),
Expand Down Expand Up @@ -397,7 +397,7 @@ def update_registration_entity(form, reg_id, iteration, no_entities):
return delete_registration_entity(reg_id, form['ent_id_{}'.format(str_end)])
return
if iteration > no_entities: # entity is in form but not in original list -> need to create
return create_registration_entity(form, reg_id, iteration, True)
return create_registration_entity(form, reg_id, iteration, from_update_reg=True)
values = (
float(form['total_claims_value_{}'.format(str_end)]),
_set_int(form['claims_encounters_volume_{}'.format(str_end)]),
Expand Down Expand Up @@ -527,15 +527,15 @@ def get_registration_contacts(reg_id=None):
conn.close()


def create_registration_contact(form, reg_id, iteration, from_update_reg=None):
def create_registration_contact(form, reg_id, iteration, from_update_reg=None, old_reg_id=None):
cur = None
conn = None
values = ()
try:
if iteration > 1:
if not _acceptable_contact(form, iteration, reg_id if from_update_reg else None):
if not _acceptable_contact(form, iteration, reg_id if from_update_reg else (old_reg_id if old_reg_id else None)):
return
str_end = f'{iteration}{ f"_{reg_id}" if from_update_reg else "" }'
str_end = f'{iteration}{ f"_{reg_id}" if from_update_reg else (f"_{old_reg_id}" if old_reg_id else "") }'
values = (
reg_id,
True if 'contact_notifications_{}'.format(str_end) in form else False,
Expand All @@ -545,7 +545,7 @@ def create_registration_contact(form, reg_id, iteration, from_update_reg=None):
_clean_email(form['contact_email_{}'.format(str_end)])
)
else:
str_end = f'_{iteration}_{reg_id}' if from_update_reg else ''
str_end = f'_{iteration}_{reg_id}' if from_update_reg else (f"_{iteration}_{old_reg_id}" if old_reg_id else "")
values = (
reg_id,
True if f'contact_notifications{str_end}' in form else False,
Expand Down Expand Up @@ -597,7 +597,7 @@ def update_registration_contact(form, reg_id, iteration, no_contacts):
return delete_registration_contact(reg_id, form[f'cont_id_{iteration}'])
return
if iteration > no_contacts: # contact is in form but not in original list -> need to create
return create_registration_contact(form, reg_id, iteration, True)
return create_registration_contact(form, reg_id, iteration, from_update_reg=True)
str_end = f'{iteration}_{reg_id}'
values = (
True if 'contact_notifications_{}'.format(str_end) in form else False,
Expand Down
Loading

0 comments on commit 0ee18f6

Please sign in to comment.