示例#1
0
    def create(self, request, **kwargs):
        # actually saves the pathway
        pathway = Pathway.get(self.name)()
        data = _get_request_data(request)

        before_patient = None
        before_episode = None

        if self.episode_id:
            before_episode = Episode.objects.get(id=self.episode_id)

        if self.patient_id:
            before_patient = Patient.objects.get(id=self.patient_id)
        patient, episode = pathway.save(data,
                                        user=request.user,
                                        patient=before_patient,
                                        episode=before_episode)
        redirect = pathway.redirect_url(user=request.user,
                                        patient=patient,
                                        episode=episode)

        episode_id = None

        if episode:
            episode_id = episode.id

        return json_response({
            "episode_id": episode_id,
            "patient_id": patient.id,
            "redirect_url": redirect
        })
示例#2
0
文件: api.py 项目: mattstibbs/opal
    def create(self, request, **kwargs):
        # actually saves the pathway
        pathway = Pathway.get(self.name)()
        data = _get_request_data(request)

        before_patient = None
        before_episode = None

        if self.episode_id:
            before_episode = Episode.objects.get(id=self.episode_id)

        if self.patient_id:
            before_patient = Patient.objects.get(id=self.patient_id)
        patient, episode = pathway.save(
            data,
            user=request.user,
            patient=before_patient,
            episode=before_episode
        )
        redirect = pathway.redirect_url(
            user=request.user, patient=patient, episode=episode
        )

        episode_id = None

        if episode:
            episode_id = episode.id

        return json_response({
            "episode_id": episode_id,
            "patient_id": patient.id,
            "redirect_url": redirect
        })
示例#3
0
 def create(self, request, **kwargs):
     pathway = Pathway.get(self.name)(episode_id=self.episode_id,
                                      patient_id=self.patient_id)
     data = _get_request_data(request)
     patient = pathway.save(data, request.user)
     redirect = pathway.redirect_url(patient)
     return Response({
         "episode_id": patient.episode_set.last().id,
         "patient_id": patient.id,
         "redirect_url": redirect
     })
示例#4
0
 def post(self, *args, **kwargs):
     """
     Expects PATIENT, EPISODE, TARGET
     """
     data = _get_request_data(self.request)
     episode = Episode.objects.get(pk=data['episode'])
     current_tags = episode.get_tag_names(None)
     if not data['target'] in current_tags:
         current_tags.append(data['target'])
         episode.set_tag_names(current_tags, None)
     resp = {'ok': 'Got your referral just fine - thanks!'}
     return _build_json_response(resp)
示例#5
0
 def create(self, request, **kwargs):
     pathway = Pathway.get(self.name)(
         episode_id=self.episode_id,
         patient_id=self.patient_id
     )
     data = _get_request_data(request)
     patient = pathway.save(data, request.user)
     redirect = pathway.redirect_url(patient)
     return Response({
         "episode_id": patient.episode_set.last().id,
         "patient_id": patient.id,
         "redirect_url": redirect
     })
示例#6
0
    def post(self, *args, **kwargs):
        request_data = _get_request_data(self.request)
        page_number = 1

        if "page_number" in request_data[0]:
            page_number = request_data[0].pop("page_number", 1)

        query = queries.SearchBackend(
            self.request.user,
            request_data,
        )
        eps = query.get_patient_summaries()

        return _build_json_response(_add_pagination(eps, page_number))
示例#7
0
文件: api.py 项目: anukat2015/opal-1
    def post(self, *args, **kwargs):
        """
        Expects PATIENT, EPISODE, TARGET
        """
        from opal.models import Episode

        data = _get_request_data(self.request)
        episode = Episode.objects.get(pk=data['episode'])
        current_tags = episode.get_tag_names(None)
        if not data['target'] in current_tags:
            current_tags.append(data['target'])
            episode.set_tag_names(current_tags, None)
        resp = {'ok': 'Got your referral just fine - thanks!'}
        return _build_json_response(resp)
示例#8
0
    def post(self, *args, **kwargs):
        request_data = _get_request_data(self.request)
        page_number = 1

        if "page_number" in request_data[0]:
            page_number = request_data[0].pop("page_number", 1)

        query = queries.create_query(
            self.request.user,
            request_data,
        )
        eps = query.get_patient_summaries()

        return _build_json_response(_add_pagination(eps, page_number))
示例#9
0
文件: views.py 项目: shalomz/opal
    def post(self, *args, **kwargs):
        if getattr(settings, 'EXTRACT_ASYNC', None):
            criteria = _get_request_data(self.request)['criteria']
            extract_id = async_extract(self.request.user, json.loads(criteria))
            return json_response({'extract_id': extract_id})

        query = queries.create_query(self.request.user,
                                     json.loads(self.request.POST['criteria']))
        episodes = query.get_episodes()
        fname = zip_archive(episodes, query.description(), self.request.user)
        resp = HttpResponse(open(fname, 'rb').read())
        disp = 'attachment; filename="{0}extract{1}.zip"'.format(
            settings.OPAL_BRAND_NAME,
            datetime.datetime.now().isoformat())
        resp['Content-Disposition'] = disp
        return resp
示例#10
0
    def post(self, *args, **kwargs):
        request_data = _get_request_data(self.request)
        page_number = 1

        if not request_data:
            return json_response(dict(error="No search criteria provied"),
                                 status_code=status.HTTP_400_BAD_REQUEST)

        if "page_number" in request_data[0]:
            page_number = request_data[0].pop("page_number", 1)

        query = queries.create_query(
            self.request.user,
            request_data,
        )
        patient_summaries = query.get_patient_summaries()

        return json_response(_add_pagination(patient_summaries, page_number))
示例#11
0
    def post(self, *args, **kwargs):
        if getattr(settings, 'EXTRACT_ASYNC', None):
            criteria = _get_request_data(self.request)['criteria']
            extract_id = async_extract(
                self.request.user,
                json.loads(criteria)
            )
            return _build_json_response({'extract_id': extract_id})

        query = queries.SearchBackend(
            self.request.user, json.loads(self.request.POST['criteria'])
        )
        episodes = query.get_episodes()
        fname = zip_archive(episodes, query.description(), self.request.user)
        resp = HttpResponse(open(fname, 'rb').read())
        disp = 'attachment; filename="{0}extract{1}.zip"'.format(
            settings.OPAL_BRAND_NAME, datetime.datetime.now().isoformat())
        resp['Content-Disposition'] = disp
        return resp
示例#12
0
def episode_detail_view(request, pk):
    try:
        episode = models.Episode.objects.get(pk=pk)
    except models.Episode.DoesNotExist:
        return HttpResponseNotFound()

    if request.method == 'GET':
        serialized = episode.to_dict(request.user)
        return _build_json_response(serialized)

    data = _get_request_data(request)

    try:
        pre = episode.to_dict(request.user)
        episode.update_from_dict(data, request.user)
        post = episode.to_dict(request.user)
        glossolalia.change(pre, post)
        return _build_json_response(episode.to_dict(request.user, shallow=True))
    except exceptions.ConsistencyError:
        return _build_json_response({'error': 'Item has changed'}, 409)
示例#13
0
    def post(self, *args, **kwargs):
        request_data = _get_request_data(self.request)
        page_number = 1

        if not request_data:
            return json_response(
                dict(error="No search criteria provied"),
                status_code=status.HTTP_400_BAD_REQUEST
            )

        if "page_number" in request_data[0]:
            page_number = request_data[0].pop("page_number", 1)

        query = queries.create_query(
            self.request.user,
            request_data,
        )
        patient_summaries = query.get_patient_summaries()

        return json_response(_add_pagination(patient_summaries, page_number))
示例#14
0
def episode_detail_view(request, pk):
    try:
        episode = models.Episode.objects.get(pk=pk)
    except models.Episode.DoesNotExist:
        return HttpResponseNotFound()

    if request.method == 'GET':
        serialized = episode.to_dict(request.user)
        return _build_json_response(serialized)

    data = _get_request_data(request)

    try:
        pre = episode.to_dict(request.user)
        episode.update_from_dict(data, request.user)
        post = episode.to_dict(request.user)
        glossolalia.change(pre, post)
        return _build_json_response(episode.to_dict(request.user,
                                                    shallow=True))
    except exceptions.ConsistencyError:
        return _build_json_response({'error': 'Item has changed'}, 409)
示例#15
0
def episode_list_and_create_view(request):
    if request.method == 'GET':
        serialised = models.Episode.objects.serialised_active(request.user)
        return _build_json_response(serialised)

    elif request.method == 'POST':
        data = _get_request_data(request)
        hospital_number = data['demographics'].get('hospital_number')
        if hospital_number:
            patient, _ = models.Patient.objects.get_or_create(
                demographics__hospital_number=hospital_number)
        else:
            patient = models.Patient.objects.create()

        patient.update_from_demographics_dict(data['demographics'],
                                              request.user)
        try:
            episode = patient.create_episode()
            episode_fields = models.Episode._get_fieldnames_to_serialize()
            episode_data = {}
            for fname in episode_fields:
                if fname in data:
                    episode_data[fname] = data[fname]
            episode.update_from_dict(episode_data, request.user)

        except exceptions.APIError:
            return _build_json_response(
                {'error': 'Patient already has active episode'}, 400)

        location = episode.location_set.get()
        location.update_from_dict(data['location'], request.user)
        if 'tagging' in data:
            tag_names = [n for n, v in data['tagging'][0].items() if v]
            episode.set_tag_names(tag_names, request.user)

        serialised = episode.to_dict(request.user)
        glossolalia.admit(serialised)
        return _build_json_response(serialised, 201)
示例#16
0
def episode_list_and_create_view(request):
    if request.method == 'GET':
        serialised = models.Episode.objects.serialised_active(request.user)
        return _build_json_response(serialised)

    elif request.method == 'POST':
        data = _get_request_data(request)
        hospital_number = data['demographics'].get('hospital_number')
        if hospital_number:
            patient, _ = models.Patient.objects.get_or_create(
                demographics__hospital_number=hospital_number)
        else:
            patient = models.Patient.objects.create()

        patient.update_from_demographics_dict(data['demographics'], request.user)
        try:
            episode = patient.create_episode()
            episode_fields = models.Episode._get_fieldnames_to_serialize()
            episode_data = {}
            for fname in episode_fields:
                if fname in data:
                    episode_data[fname] = data[fname]
            episode.update_from_dict(episode_data, request.user)

        except exceptions.APIError:
            return _build_json_response(
                {'error': 'Patient already has active episode'}, 400)

        location = episode.location_set.get()
        location.update_from_dict(data['location'], request.user)
        if 'tagging' in data:
            tag_names = [n for n, v in data['tagging'][0].items() if v]
            episode.set_tag_names(tag_names, request.user)

        serialised = episode.to_dict(request.user)
        glossolalia.admit(serialised)
        return _build_json_response(serialised, 201)
示例#17
0
 def post(self, *args, **kwargs):
     data = _get_request_data(self.request)
     self.filter = models.Filter(user=self.request.user)
     self.filter.update_from_dict(data)
     return _build_json_response(self.filter.to_dict())
示例#18
0
 def post(self, *args, **kwargs):
     data = _get_request_data(self.request)
     resp = {'ok': 'Got your admission just fine - thanks!'}
     return _build_json_response(resp)
示例#19
0
 def put(self, *args, **kwargs):
     data = _get_request_data(self.request)
     self.filter.update_from_dict(data)
     return _build_json_response(self.filter.to_dict())
示例#20
0
 def post(self, *args, **kwargs):
     data = _get_request_data(self.request)
     self.filter = models.Filter(user=self.request.user)
     self.filter.update_from_dict(data)
     return _build_json_response(self.filter.to_dict())
示例#21
0
文件: api.py 项目: anukat2015/opal-1
 def post(self, *args, **kwargs):
     data = _get_request_data(self.request)
     resp = {'ok': 'Got your admission just fine - thanks!'}
     return _build_json_response(resp)
示例#22
0
 def put(self, *args, **kwargs):
     data = _get_request_data(self.request)
     self.filter.update_from_dict(data)
     return _build_json_response(self.filter.to_dict())