1111from django .shortcuts import render
1212from django .utils import timezone
1313from django_filters import rest_framework as drf
14+ from medcat .utils .cdb_utils import ch2pt_from_pt2ch , get_all_ch , snomed_ct_concept_path
1415from rest_framework import viewsets
1516from rest_framework .decorators import api_view
1617from rest_framework .response import Response
1920from .admin import download_projects_with_text , download_projects_without_text , \
2021 import_concepts_from_cdb
2122from .data_utils import upload_projects_export
22- from .medcat_utils import ch2pt_from_pt2ch , get_all_ch , dedupe_preserve_order , snomed_ct_concept_path
2323from .metrics import calculate_metrics
2424from .model_cache import get_medcat , get_cached_cdb , VOCAB_MAP , clear_cached_medcat , CAT_MAP , CDB_MAP , is_model_loaded
2525from .permissions import *
@@ -858,11 +858,11 @@ def cdb_cui_children(request, cdb_id):
858858
859859 # currently assumes this is using the SNOMED CT terminology
860860 try :
861- root_term = {'cui' : '138875005' , 'pretty_name' : cdb .cui2preferred_name ['138875005' ]}
861+ root_term = {'cui' : '138875005' , 'pretty_name' : cdb .cui2info ['138875005' ][ 'preferred_name ' ]}
862862 if parent_cui is None :
863863 return Response ({'results' : [root_term ]})
864864 else :
865- child_concepts = [{'cui' : cui , 'pretty_name' : cdb .cui2preferred_name [cui ]}
865+ child_concepts = [{'cui' : cui , 'pretty_name' : cdb .cui2info [cui ][ 'preferred_name' ]}
866866 for cui in cdb .addl_info .get ('pt2ch' )[parent_cui ]]
867867 return Response ({'results' : child_concepts })
868868 except KeyError :
@@ -894,7 +894,7 @@ def generate_concept_filter_flat_json(request):
894894 for cui in cuis :
895895 ch_nodes = get_all_ch (cui , cdb )
896896 final_filter += [n for n in ch_nodes if n not in excluded_nodes ]
897- final_filter = dedupe_preserve_order ( final_filter )
897+ final_filter = { cui : 1 for cui in final_filter }. keys ( )
898898 filter_json = json .dumps (final_filter )
899899 response = HttpResponse (filter_json , content_type = 'application/json' )
900900 response ['Content-Disposition' ] = 'attachment; filename=filter.json'
@@ -911,8 +911,8 @@ def generate_concept_filter(request):
911911 # get all children from 'parent' concepts above.
912912 final_filter = {}
913913 for cui in cuis :
914- final_filter [cui ] = [{'cui' : c , 'pretty_name' : cdb .cui2preferred_name [ c ]} for c in get_all_ch (cui , cdb )
915- if c in cdb .cui2preferred_name and c != cui ]
914+ final_filter [cui ] = [{'cui' : c , 'pretty_name' : cdb .cui2info [ cui ][ 'preferred_name' ]} for c in get_all_ch (cui , cdb )
915+ if c in cdb .cui2info [ cui ][ 'preferred_name' ] and c != cui ]
916916 resp = {'filter_len' : sum (len (f ) for f in final_filter .values ()) + len (final_filter .keys ())}
917917 if resp ['filter_len' ] < 10000 :
918918 # only send across concept filters that are small enough to render
@@ -928,12 +928,12 @@ def cuis_to_concepts(request):
928928 if cdb_id is not None :
929929 if cuis is not None :
930930 cdb = get_cached_cdb (cdb_id , CDB_MAP )
931- concept_list = [{'cui' : cui , 'name' : cdb .cui2preferred_name [cui ]} for cui in cuis ]
931+ concept_list = [{'cui' : cui , 'name' : cdb .cui2info [cui ][ 'preferred_name' ]} for cui in cuis ]
932932 resp = {'concept_list' : concept_list }
933933 return Response (resp )
934934 else :
935935 cdb = get_cached_cdb (cdb_id , CDB_MAP )
936- concept_list = [{'cui' : cui , 'name' : cdb .cui2preferred_name [cui ]} for cui in cdb .cui2preferred_name .keys ()]
936+ concept_list = [{'cui' : cui , 'name' : cdb .cui2info [cui ][ 'preferred_name' ] } for cui in cdb .cui2info .keys ()]
937937 resp = {'concept_list' : concept_list }
938938 return Response (resp )
939939 return HttpResponseBadRequest ('Missing either cuis or cdb_id param. Cannot produce concept list.' )
0 commit comments