Commit pre-refactor for code cleanup.

This commit is contained in:
Landon Wark
2023-02-10 10:22:39 -06:00
parent c3db706e7c
commit a9ce9514fc
11 changed files with 400 additions and 272 deletions

View File

@@ -7,6 +7,7 @@ import re
import numpy as np
from datetime import date
import uuid
from frontend.functions import check_not_nan
logger = logging.getLogger(f"submissions.{__name__}")
@@ -59,7 +60,8 @@ class SheetParser(object):
def _parse_unknown(self) -> None:
"""
Dummy function to handle unknown excel structures
"""
"""
logger.error(f"Unknown excel workbook structure. Cannot parse.")
self.sub = None
@@ -96,11 +98,11 @@ class SheetParser(object):
if ii == 11:
continue
logger.debug(f"Running reagent parse for {row[1]} with type {type(row[1])} and value: {row[2]} with type {type(row[2])}")
try:
check = not np.isnan(row[1])
except TypeError:
check = True
if not isinstance(row[2], float) and check:
# try:
# check = not np.isnan(row[1])
# except TypeError:
# check = True
if not isinstance(row[2], float) and check_not_nan(row[1]):
# must be prefixed with 'lot_' to be recognized by gui
try:
reagent_type = row[1].replace(' ', '_').lower().strip()
@@ -114,7 +116,18 @@ class SheetParser(object):
logger.debug(f"Couldn't upperize {row[2]}, must be a number")
output_var = row[2]
logger.debug(f"Output variable is {output_var}")
self.sub[f"lot_{reagent_type}"] = output_var
# self.sub[f"lot_{reagent_type}"] = output_var
# update 2023-02-10 to above allowing generation of expiry date in adding reagent to db.
logger.debug(f"Expiry date for imported reagent: {row[3]}")
try:
check = not np.isnan(row[3])
except TypeError:
check = True
if check:
expiry = row[3].date()
else:
expiry = date.today()
self.sub[f"lot_{reagent_type}"] = {'lot':output_var, 'exp':expiry}
submission_info = self._parse_generic("Sample List")
# iloc is [row][column] and the first row is set as header row so -2

View File

@@ -33,7 +33,9 @@ def make_report_xlsx(records:list[dict]) -> DataFrame:
# put submissions with the same lab together
df = df.sort_values("Submitting Lab")
# aggregate cost and sample count columns
df2 = df.groupby(["Submitting Lab", "Extraction Kit"]).agg({'Cost': ['sum', 'count'], 'Sample Count':['sum']})
df2 = df.groupby(["Submitting Lab", "Extraction Kit"]).agg({'Extraction Kit':'count', 'Cost': 'sum', 'Sample Count':'sum'})
df2 = df2.rename(columns={"Extraction Kit": 'Kit Count'})
logger.debug(f"Output daftaframe for xlsx: {df2.columns}")
# apply formating to cost column
# df2.iloc[:, (df2.columns.get_level_values(1)=='sum') & (df2.columns.get_level_values(0)=='Cost')] = df2.iloc[:, (df2.columns.get_level_values(1)=='sum') & (df2.columns.get_level_values(0)=='Cost')].applymap('${:,.2f}'.format)
return df2
@@ -54,11 +56,14 @@ def make_report_html(df:DataFrame, start_date:date, end_date:date) -> str:
"""
old_lab = ""
output = []
logger.debug(f"Report DataFrame: {df}")
for ii, row in enumerate(df.iterrows()):
row = [item for item in row]
logger.debug(f"Row: {row}")
lab = row[0][0]
logger.debug(f"Old lab: {old_lab}, Current lab: {lab}")
kit = dict(name=row[0][1], cost=row[1][('Cost', 'sum')], plate_count=int(row[1][('Cost', 'count')]), sample_count=int(row[1][('Sample Count', 'sum')]))
kit = dict(name=row[0][1], cost=row[1]['Cost'], plate_count=int(row[1]['Kit Count']), sample_count=int(row[1]['Sample Count']))
if lab == old_lab:
output[ii-1]['kits'].append(kit)
output[ii-1]['total_cost'] += kit['cost']