Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions core/utils/rest_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,26 @@ def get_sample_project_fields_data(project):
return data["data"]


def get_sample_project_field_display_map(project):
"""Return a map from project field key to its preferred display label."""
if isinstance(project, dict):
project = project.get("value")
if not project:
return {}
project_fields = get_sample_project_fields_data(project)
if not project_fields or "ERROR" in project_fields:
return {}
display_map = {}
for field in project_fields:
field_name = field.get("sample_project_field_name")
if not field_name:
continue
display_map[field_name] = (
field.get("sample_project_field_description") or field_name
)
return display_map


def get_summarize_data(param_data):
"""Send API request to iSkyLIMS to get the summarize data options"""
iskylims_server = core.utils.generic_functions.get_configuration_value(
Expand Down
12 changes: 11 additions & 1 deletion core/utils/samples.py
Original file line number Diff line number Diff line change
Expand Up @@ -572,10 +572,20 @@ def get_sample_display_data(sample_id, user):
s_data["iskylims_p_data"] = []
# iskylims_data is a list with one element. Then get the first element
iskylims_data = iskylims_data[0]
project_field_display_map = (
core.utils.rest_api.get_sample_project_field_display_map(
iskylims_data.get("sample_project")
)
)
for key, i_data in iskylims_data.items():
if key == "Project values":
for p_key, p_data in iskylims_data["Project values"].items():
s_data["iskylims_p_data"].append([p_key, p_data])
s_data["iskylims_p_data"].append(
[
project_field_display_map.get(p_key, p_key),
p_data,
]
)
else:
s_data["iskylims_basic"].append([key, i_data])
s_data["iskylims_project"] = iskylims_data.get("sample_project")
Expand Down
7 changes: 6 additions & 1 deletion dashboard/utils/met_index.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,9 @@ def schema_fields_utilization():
util_data["ERROR"] = lims_fields["ERROR"]
else:
f_values = []
lims_field_display_map = (
core.utils.rest_api.get_sample_project_field_display_map("Relecov")
)
for value in lims_fields["fields_norm"].values():
f_values.append(value)

Expand All @@ -67,7 +70,9 @@ def schema_fields_utilization():
# get the maximum to make the percentage of filled
max_value = max(set(lims_fields["fields_value"].values()))
for key, val in lims_fields["fields_value"].items():
util_data["field_detail_data"]["field_name"].append(key)
util_data["field_detail_data"]["field_name"].append(
lims_field_display_map.get(key, key)
)
util_data["field_detail_data"]["field_value"].append(val)
util_data["field_detail_data"]["percent"].append(max_value)
util_data["num_lab_fields"] = len(lims_fields["fields_value"])
Expand Down
Loading