def get_scoring()

in microservices/validation_service/src/utils/validation.py [0:0]


def get_scoring(data, merge_query, documentlabel, entity):
  '''
  Fire the Rules on BQ table and calculate the Validation Scores
  input:
  data : Rules dict
  merge_query : the addtional query part with case id and uid appended
  documentlabel: Document type
  output:
  validation score
  '''
  l2 = []
  validation_score = 0
  validation_rule = data.get(documentlabel)

  assert validation_rule, f"Unable to find validation rule for document type: {documentlabel}"

  for i in data[documentlabel]:
    query = data[documentlabel][i] + merge_query
    query = query.replace("project_table", VALIDATION_TABLE)
    dict1 = get_individual_dict(query)
    try:
      query_results = bigquery_client.query((query))
      df = query_results.to_dataframe()
    except Exception as e:  # pylint: disable=broad-except
      Logger.error(e)
      df = pd.DataFrame()
    df = df.drop_duplicates()
    validation_score = validation_score + len(df)
    for key in dict1.copy():
      dict1[key] = len(df)
    l2.append(dict1)
  validation_score = validation_score / len(data[documentlabel])
  final_dict = get_final_scores(l2, entity)
  return validation_score, final_dict