def get_device(self, dbsession: "SqlASession") -> "Device": dummy_device_name = "dummy_device" device = Device.get_device_by_name(dbsession, dummy_device_name) if device is None: device = Device() device.name = dummy_device_name device.friendly_name = "Dummy tablet device" device.registered_by_user = User.get_system_user(dbsession) device.when_registered_utc = pendulum.DateTime.utcnow() device.camcops_version = CAMCOPS_SERVER_VERSION dbsession.add(device) dbsession.flush() # So that we can use the PK elsewhere return device
def setUp(self) -> None: super().setUp() from cardinal_pythonlib.datetimefunc import ( convert_datetime_to_utc, format_datetime, ) from camcops_server.cc_modules.cc_blob import Blob from camcops_server.cc_modules.cc_constants import DateFormat from camcops_server.cc_modules.cc_device import Device from camcops_server.cc_modules.cc_group import Group from camcops_server.cc_modules.cc_patient import Patient from camcops_server.cc_modules.cc_patientidnum import PatientIdNum from camcops_server.cc_modules.cc_task import Task from camcops_server.cc_modules.cc_user import User from camcops_server.tasks.photo import Photo Base.metadata.create_all(self.engine) self.era_time = pendulum.parse("2010-07-07T13:40+0100") self.era_time_utc = convert_datetime_to_utc(self.era_time) self.era = format_datetime(self.era_time, DateFormat.ISO8601) # Set up groups, users, etc. # ... ID number definitions iddef1 = IdNumDefinition(which_idnum=1, description="NHS number", short_description="NHS#", hl7_assigning_authority="NHS", hl7_id_type="NHSN") self.dbsession.add(iddef1) iddef2 = IdNumDefinition(which_idnum=2, description="RiO number", short_description="RiO", hl7_assigning_authority="CPFT", hl7_id_type="CPFT_RiO") self.dbsession.add(iddef2) # ... group self.group = Group() self.group.name = "testgroup" self.group.description = "Test group" self.group.upload_policy = "sex AND anyidnum" self.group.finalize_policy = "sex AND idnum1" self.dbsession.add(self.group) self.dbsession.flush() # sets PK fields # ... users self.user = User.get_system_user(self.dbsession) self.user.upload_group_id = self.group.id self.req._debugging_user = self.user # improve our debugging user # ... devices self.server_device = Device.get_server_device(self.dbsession) self.other_device = Device() self.other_device.name = "other_device" self.other_device.friendly_name = "Test device that may upload" self.other_device.registered_by_user = self.user self.other_device.when_registered_utc = self.era_time_utc self.other_device.camcops_version = CAMCOPS_SERVER_VERSION self.dbsession.add(self.other_device) self.dbsession.flush() # sets PK fields # Populate database with two of everything p1 = Patient() p1.id = 1 self._apply_standard_db_fields(p1) p1.forename = "Forename1" p1.surname = "Surname1" p1.dob = pendulum.parse("1950-01-01") self.dbsession.add(p1) p1_idnum1 = PatientIdNum() p1_idnum1.id = 1 self._apply_standard_db_fields(p1_idnum1) p1_idnum1.patient_id = p1.id p1_idnum1.which_idnum = iddef1.which_idnum p1_idnum1.idnum_value = 333 self.dbsession.add(p1_idnum1) p1_idnum2 = PatientIdNum() p1_idnum2.id = 2 self._apply_standard_db_fields(p1_idnum2) p1_idnum2.patient_id = p1.id p1_idnum2.which_idnum = iddef2.which_idnum p1_idnum2.idnum_value = 444 self.dbsession.add(p1_idnum2) p2 = Patient() p2.id = 2 self._apply_standard_db_fields(p2) p2.forename = "Forename2" p2.surname = "Surname2" p2.dob = pendulum.parse("1975-12-12") self.dbsession.add(p2) p2_idnum1 = PatientIdNum() p2_idnum1.id = 3 self._apply_standard_db_fields(p2_idnum1) p2_idnum1.patient_id = p2.id p2_idnum1.which_idnum = iddef1.which_idnum p2_idnum1.idnum_value = 555 self.dbsession.add(p2_idnum1) self.dbsession.flush() for cls in Task.all_subclasses_by_tablename(): t1 = cls() t1.id = 1 self._apply_standard_task_fields(t1) if t1.has_patient: t1.patient_id = p1.id if isinstance(t1, Photo): b = Blob() b.id = 1 self._apply_standard_db_fields(b) b.tablename = t1.tablename b.tablepk = t1.id b.fieldname = 'photo_blobid' b.filename = "some_picture.png" b.mimetype = MimeType.PNG b.image_rotation_deg_cw = 0 b.theblob = DEMO_PNG_BYTES self.dbsession.add(b) t1.photo_blobid = b.id self.dbsession.add(t1) t2 = cls() t2.id = 2 self._apply_standard_task_fields(t2) if t2.has_patient: t2.patient_id = p2.id self.dbsession.add(t2) self.dbsession.commit()
def setUp(self) -> None: super().setUp() self.set_era("2010-07-07T13:40+0100") # Set up groups, users, etc. # ... ID number definitions idnum_type_nhs = 1 idnum_type_rio = 2 idnum_type_study = 3 self.nhs_iddef = IdNumDefinition( which_idnum=idnum_type_nhs, description="NHS number", short_description="NHS#", hl7_assigning_authority="NHS", hl7_id_type="NHSN", ) self.dbsession.add(self.nhs_iddef) self.rio_iddef = IdNumDefinition( which_idnum=idnum_type_rio, description="RiO number", short_description="RiO", hl7_assigning_authority="CPFT", hl7_id_type="CPRiO", ) self.dbsession.add(self.rio_iddef) self.study_iddef = IdNumDefinition( which_idnum=idnum_type_study, description="Study number", short_description="Study", ) self.dbsession.add(self.study_iddef) # ... group self.group = Group() self.group.name = "testgroup" self.group.description = "Test group" self.group.upload_policy = "sex AND anyidnum" self.group.finalize_policy = "sex AND idnum1" self.group.ip_use = IpUse() self.dbsession.add(self.group) self.dbsession.flush() # sets PK fields # ... users self.user = User.get_system_user(self.dbsession) self.user.upload_group_id = self.group.id self.req._debugging_user = self.user # improve our debugging user # ... devices self.server_device = Device.get_server_device(self.dbsession) self.other_device = Device() self.other_device.name = "other_device" self.other_device.friendly_name = "Test device that may upload" self.other_device.registered_by_user = self.user self.other_device.when_registered_utc = self.era_time_utc self.other_device.camcops_version = CAMCOPS_SERVER_VERSION self.dbsession.add(self.other_device) # ... export recipient definition (the minimum) self.recipdef.primary_idnum = idnum_type_nhs self.dbsession.flush() # sets PK fields self.create_tasks()