From 1149914c999680ded0f419c2294b6452ed386192 Mon Sep 17 00:00:00 2001 From: rithviknishad Date: Mon, 10 Jul 2023 20:55:39 +0530 Subject: [PATCH] load to in-mem using ORM's `values_list` --- care/facility/static_data/medibase.py | 37 ++++++++++++++++++--------- 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/care/facility/static_data/medibase.py b/care/facility/static_data/medibase.py index 12c071a367..fb5718c3df 100644 --- a/care/facility/static_data/medibase.py +++ b/care/facility/static_data/medibase.py @@ -1,20 +1,33 @@ +from django.db.models import CharField, TextField, Value +from django.db.models.functions import Coalesce + from care.facility.models.prescription import MedibaseMedicine def load_medibase_in_memory(): - medibase_objects = MedibaseMedicine.objects.all() - return tuple( - ( - obj.external_id, - obj.name, - obj.type, - obj.generic or "", - obj.company or "", - obj.contents or "", - obj.cims_class or "", - obj.atc_classification or "", + return ( + MedibaseMedicine.objects.all() + .annotate( + generic_pretty=Coalesce("generic", Value(""), output_field=CharField()), + company_pretty=Coalesce("company", Value(""), output_field=CharField()), + contents_pretty=Coalesce("contents", Value(""), output_field=TextField()), + cims_class_pretty=Coalesce( + "cims_class", Value(""), output_field=CharField() + ), + atc_classification_pretty=Coalesce( + "atc_classification", Value(""), output_field=TextField() + ), + ) + .values_list( + "external_id", + "name", + "type", + "generic_pretty", + "company_pretty", + "contents_pretty", + "cims_class_pretty", + "atc_classification_pretty", ) - for obj in medibase_objects )