コード例 #1
0
    def handle(self, *args, **options):
        data = collections.defaultdict(dict)

        for model in lookuplists.lookuplists():
            content_type = ContentType.objects.get_for_model(model)
            items = []
            for item in model.objects.all():
                synonyms = [
                    s.name
                    for s in Synonym.objects.filter(content_type=content_type,
                                                    object_id=item.id)
                ]
                entry = {'name': item.name, 'synonyms': synonyms}
                if item.code and item.system:
                    entry['coding'] = {
                        'code': item.code,
                        'system': item.system
                    }
                items.append(entry)
            data[model.__name__.lower()] = items

        if options.get('many_files', False):
            self.write_to_many_files(data)
        else:
            self._to_json(data)
        return
コード例 #2
0
 def test_includes_subclasses_of_abstract_lookuplists(self):
     """
     make sure we include things that don't
     directly inherit from lookup lists
     """
     all_lists = list(lookuplists())
     self.assertIn(GhostHat, all_lists)
コード例 #3
0
    def delete(self):
        write('Deleting Synonyms')

        for item in Synonym.objects.all():
            item.delete()

        write('Deleting Lookuplists')
        for model in lookuplists.lookuplists():
            for item in model.objects.all():
                item.delete()
コード例 #4
0
 def from_component(self, component):
     # Start with the initial lookuplists.json
     filename = ffs.Path(LOOKUPLIST_LOCATION.format(component.directory()))
     self.load(self.from_path(filename))
     # then work throught the lookuplists we know about
     for lookuplist in lookuplists.lookuplists():
         path = ffs.Path(
             os.path.join(component.directory(), 'data', 'lookuplists',
                          '{}.json'.format(lookuplist.get_api_name())))
         self.load(self.from_path(path))
コード例 #5
0
 def from_component(self, component):
     # Start with the initial lookuplists.json
     filename = ffs.Path(LOOKUPLIST_LOCATION.format(component.directory()))
     self.load(self.from_path(filename))
     # then work throught the lookuplists we know about
     for lookuplist in lookuplists.lookuplists():
         path = ffs.Path(os.path.join(
             component.directory(),
             'data',
             'lookuplists',
             '{}.json'.format(lookuplist.get_api_name())
         ))
         self.load(self.from_path(path))
コード例 #6
0
ファイル: api.py プロジェクト: timothykimemia/opal
    def list(self, request):
        data = {}
        subclasses = list(lookuplists.lookuplists())
        for model in subclasses:
            options = list(model.objects.all().values_list("name", flat=True))
            data[model.get_api_name()] = options

        model_to_ct = ContentType.objects.get_for_models(*subclasses)

        for model, ct in model_to_ct.items():
            synonyms = Synonym.objects.filter(content_type=ct).values_list(
                "name", flat=True)
            data[model.get_api_name()].extend(synonyms)

        for name in data:
            data[name].sort()
        return json_response(data)
コード例 #7
0
ファイル: api.py プロジェクト: timothykimemia/opal
    def retrieve(self, request, pk=None):
        the_list = None
        for lookuplist in lookuplists.lookuplists():
            if lookuplist.get_api_name() == pk:
                the_list = lookuplist
                break
        if the_list:
            values = list(the_list.objects.all().values_list('name',
                                                             flat=True))
            ct = ContentType.objects.get_for_model(the_list)
            synonyms = Synonym.objects.filter(content_type=ct).values_list(
                'name', flat=True)
            values += list(synonyms)
            return json_response(values)

        return json_response({'error': 'Item does not exist'},
                             status_code=status.HTTP_404_NOT_FOUND)
コード例 #8
0
ファイル: api.py プロジェクト: openhealthcare/opal
    def list(self, request):
        data = {}
        subclasses = list(lookuplists.lookuplists())
        for model in subclasses:
            options = list(model.objects.all().values_list("name", flat=True))
            data[model.get_api_name()] = options

        model_to_ct = ContentType.objects.get_for_models(
            *subclasses
        )

        for model, ct in model_to_ct.items():
            synonyms = Synonym.objects.filter(content_type=ct).values_list(
                "name", flat=True
            )
            data[model.get_api_name()].extend(synonyms)

        for name in data:
            data[name].sort()
        return json_response(data)
コード例 #9
0
ファイル: api.py プロジェクト: openhealthcare/opal
    def retrieve(self, request, pk=None):
        the_list = None
        for lookuplist in lookuplists.lookuplists():
            if lookuplist.get_api_name() == pk:
                the_list = lookuplist
                break
        if the_list:
            values = list(
                the_list.objects.all().values_list('name', flat=True)
            )
            ct = ContentType.objects.get_for_model(the_list)
            synonyms = Synonym.objects.filter(content_type=ct).values_list(
                'name', flat=True
            )
            values += list(synonyms)
            return json_response(values)

        return json_response(
            {'error': 'Item does not exist'},
            status_code=status.HTTP_404_NOT_FOUND
        )
コード例 #10
0
    def handle(self, *args, **options):
        data = collections.defaultdict(dict)

        for model in lookuplists.lookuplists():
            content_type = ContentType.objects.get_for_model(model)
            items = []
            for item in model.objects.all():
                synonyms = [s.name for s in
                            Synonym.objects.filter(content_type=content_type,
                                                   object_id=item.id)]
                entry = {'name': item.name, 'synonyms': synonyms}
                if item.code and item.system:
                    entry['coding'] = {
                        'code'  : item.code,
                        'system': item.system
                    }
                items.append(entry)
            data[model.__name__.lower()] = items

        if options.get('many_files', False):
            self.write_to_many_files(data)
        else:
            self._to_json(data)
        return
コード例 #11
0
        object_class = self.instance.__class__
        name = self.cleaned_data["name"]
        if synonym_exists(object_class, name):
            raise ValidationError("A synonym of that name already exists")

        return self.cleaned_data["name"]


class OptionAdmin(admin.ModelAdmin):
    form = LookupListForm
    ordering = ['name']
    search_fields = ['name']
    inlines = [SynonymInline]


for model in lookuplists():
    admin.site.register(model, OptionAdmin)

admin.site.register(User, UserProfileAdmin)
admin.site.register(models.Patient, PatientAdmin)
admin.site.register(models.Episode, EpisodeAdmin)
admin.site.register(models.Tagging, TaggingAdmin)

for subclass in patient_subrecords():
    if not subclass._meta.abstract and not getattr(subclass, "_no_admin",
                                                   False):
        admin.site.register(subclass, PatientSubrecordAdmin)

for subclass in episode_subrecords():
    if not subclass._meta.abstract and not getattr(subclass, "_no_admin",
                                                   False):
コード例 #12
0
ファイル: admin.py プロジェクト: openhealthcare/opal
        if synonym_exists(object_class, name):
            raise ValidationError(
                "A synonym of that name already exists"
            )

        return self.cleaned_data["name"]


class OptionAdmin(admin.ModelAdmin):
    form = LookupListForm
    ordering = ['name']
    search_fields = ['name']
    inlines = [SynonymInline]


for model in lookuplists():
    admin.site.register(model, OptionAdmin)

admin.site.register(User, UserProfileAdmin)
admin.site.register(models.Patient, PatientAdmin)
admin.site.register(models.Episode, EpisodeAdmin)
admin.site.register(models.Tagging, TaggingAdmin)


for subclass in patient_subrecords():
    if not subclass._meta.abstract and not getattr(
            subclass, "_no_admin", False):
        admin.site.register(subclass, PatientSubrecordAdmin)

for subclass in episode_subrecords():
    if not subclass._meta.abstract and not getattr(
コード例 #13
0
 def test_ignores_abstract(self):
     """
     ignore models where meta.abstract == true
     """
     all_lists = list(lookuplists())
     self.assertNotIn(EtherialHat, all_lists)
コード例 #14
0
 def test_lookuplists(self):
     all_lists = list(lookuplists())
     self.assertIn(Hat, all_lists)