Skip to content

Commit

Permalink
fix(fhir): PPM-722 - Removed unecessary processing of old EXAMPLE eli…
Browse files Browse the repository at this point in the history
…gibility questionnaire
  • Loading branch information
b32147 committed Sep 16, 2021
1 parent 5cebbd8 commit 4b3a982
Showing 1 changed file with 0 additions and 102 deletions.
102 changes: 0 additions & 102 deletions ppmutils/fhir.py
Original file line number Diff line number Diff line change
Expand Up @@ -5204,108 +5204,6 @@ def _flatten_example_participant(bundle, ppm_id, eligibility_questionnaire_id=No
values = {}
study_values = {}

# Get questionnaire answers
questionnaire_response = next(
(
q
for q in FHIR._find_resources(bundle, "QuestionnaireResponse")
if q["questionnaire"]["reference"] == f"Questionnaire/{PPM.Questionnaire.EXAMPLEQuestionnaire.value}"
),
None,
)
if questionnaire_response and questionnaire_response.get("item"):
logger.debug(f"PPM/{ppm_id}/FHIR: Flattening QuestionnaireResponse/" f'{questionnaire_response["id"]}')

# Map linkIds to keys
text_answers = {
"question-8": "diagnosis",
"question-20": "pcp",
"question-21": "oncologist",
}

date_answers = {
"question-1": "birthdate",
"question-10": "date_diagnosis",
}

# Iterate items
for link_id, key in text_answers.items():
try:
# Get the answer
answer = next(
i["answer"][0]["valueString"] for i in questionnaire_response["item"] if i["linkId"] == link_id
)

# Assign it
study_values[key] = answer
except Exception as e:
logger.exception(
f"PPM/{ppm_id}/Questionnaire/{link_id}: {e}",
exc_info=True,
extra={
"ppm_id": ppm_id,
"link_id": link_id,
"key": key,
"questionnaire_response": f"QuestionnaireResponse/" f'{questionnaire_response["id"]}',
"item": next(
(i for i in questionnaire_response["item"] if i["linkId"] == link_id),
"",
),
},
)

# Assign default value
study_values[key] = "---"

# Iterate date items and attempt to parse dates, otherwise treat as text
for link_id, key in date_answers.items():

try:
# Get the answer
answer = next(i["answer"][0] for i in questionnaire_response["item"] if i["linkId"] == link_id)

try:
# Check type
if answer.get("valueDate") or answer.get("valueDateTime"):
# Date is already a date object, assign it
study_values[key] = answer.get("valueDate", answer.get("valueDateTime"))

elif answer.get("valueString"):

# Attempt to parse it
answer_date = parse(answer.get("valueString"))

# Assign it
study_values[key] = answer_date.isoformat()

else:
logger.error(f"PPM/{ppm_id}/Questionnaire/{link_id}: Unhandled answer type: {answer}")

except ValueError:
logger.debug(f"PPM/{ppm_id}/Questionnaire/{link_id}: Invalid date: {answer}")

# Assign the raw value
study_values[key] = answer

except Exception as e:
logger.exception(
f"PPM/{ppm_id}/Questionnaire/{link_id}: Missing response: {e}",
exc_info=True,
extra={
"ppm_id": ppm_id,
"link_id": link_id,
"key": key,
"questionnaire_response": f"QuestionnaireResponse/" f'{questionnaire_response["id"]}',
"item": next(
(i for i in questionnaire_response["item"] if i["linkId"] == link_id),
"",
),
},
)

# Assign default value
study_values[key] = "---"

# Check for points of care questionnaire
questionnaire_response = next(
(
Expand Down

0 comments on commit 4b3a982

Please sign in to comment.