def post(self, args, pk=None, category=None, **kwargs): old = models.Episode.objects.get(pk=pk) new = models.Episode(patient=old.patient, category=category, date_of_admission=old.date_of_admission) new.save() for sub in episode_subrecords(): if sub._is_singleton: continue for item in sub.objects.filter(episode=old): item.id = None item.episode = new item.save() serialised = new.to_dict(self.request.user) glossolalia.admit(serialised) return _build_json_response(serialised)
def test_admit_calls_send_upstream(self, sender): with patch('opal.core.glossolalia.INTEGRATING', new=True): admit = glossolalia.admit({}) self.assertEqual('admit', sender.call_args[0][0]) self.assertEqual({}, json.loads( sender.call_args[0][1]['data'])['episode'])
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)
def test_admit_not_integratng(self, sender): with patch('opal.core.glossolalia.INTEGRATING', new=False): admit = glossolalia.admit(None) self.assertEqual( None, admit) # Mostly a proxy for "Does this stacktrace?" self.assertFalse(sender.called)
def test_admit_calls_send_upstream(self, sender): with patch('opal.core.glossolalia.INTEGRATING', new=True): admit = glossolalia.admit({}) self.assertEqual('admit', sender.call_args[0][0]) self.assertEqual({}, json.loads(sender.call_args[0][1]['data'])['episode'])
def test_admit_not_integratng(self, sender): with patch('opal.core.glossolalia.INTEGRATING', new=False): admit = glossolalia.admit(None) self.assertEqual(None, admit) # Mostly a proxy for "Does this stacktrace?" self.assertFalse(sender.called)