Beispiel #1
0
 def setUp(self):
     super().setUp()
     self.log_in_master_admin()
     biotronic = ManufacturerFactory(name='Biotronic')
     medtronik = ManufacturerFactory(name='Medtronik')
     ClientFactory(name='Children Hospital')
     ClientFactory(name='Central hospital')
     category = CategoryFactory(name='Balloons', specialty=SpecialtyFactory(name='Accessories'))
     ProductFactory(name='Entrisa', manufacturer=medtronik,
                    category=CategoryFactory(name='DDD pacemaker', specialty=SpecialtyFactory(name='CRD')))
     ProductFactory(name='Apex', manufacturer=medtronik, category=category)
     ProductFactory(name='NC Quantum', manufacturer=biotronic, category=category)
Beispiel #2
0
 def setUp(self):
     self.client = ClientFactory(name='UVMC')
     manufacturer = ManufacturerFactory(name='Medtronic')
     self.product = ProductFactory(model_number='SESR01',
                                   manufacturer=manufacturer)
     client_price = ClientPriceFactory(product=self.product,
                                       client=self.client)
     self.bulk_discount = DiscountFactory(name='Bulk',
                                          client_price=client_price,
                                          apply_type=PRE_DOCTOR_ORDER,
                                          cost_type=UNIT_COST,
                                          discount_type=PERCENT_DISCOUNT,
                                          percent=10,
                                          value=0,
                                          order=1)
     self.discount_2 = DiscountFactory(client_price=client_price,
                                       apply_type=ON_DOCTOR_ORDER,
                                       cost_type=SYSTEM_COST)
     self.device = self.product.device_set.get(client=self.client)
     self.device.hospital_number = '70669'
     self.device.save()
     self.item = ItemFactory(device=self.device,
                             serial_number='PJN7204267',
                             cost_type=SYSTEM_COST,
                             discounts=[self.discount_2])
     self.xls_file_path = os.path.join(FIXTURE_DIR, 'items.xls')
     self._prepare_xls_file()
Beispiel #3
0
 def setUp(self):
     self.client_1, self.client_2 = ClientFactory.create_batch(2)
     manufacturer = ManufacturerFactory(image=ImageField(
         filename='biotronik.jpg'))
     product = ProductFactory(manufacturer=manufacturer)
     self.item_1 = ItemFactory(cost=randint(110, 150),
                               cost_type=UNIT_COST,
                               device=DeviceFactory(client=self.client_1,
                                                    product=product))
     self.item_2 = ItemFactory(cost=randint(210, 290),
                               cost_type=UNIT_COST,
                               device=DeviceFactory(client=self.client_1))
     self.item_3 = ItemFactory(cost=randint(400, 500),
                               device=DeviceFactory(client=self.client_2))
     self.item_4 = ItemFactory(cost=1000,
                               cost_type=UNIT_COST,
                               device=DeviceFactory(
                                   client=self.client_1,
                                   product=ProductFactory(
                                       manufacturer=manufacturer,
                                       category=product.category)))
     physician_role = RoleFactory(priority=RolePriority.PHYSICIAN.value)
     self.physician_1 = AccountFactory(client=self.client_1,
                                       role=physician_role)
     self.physician_2 = AccountFactory(client=self.client_2,
                                       role=physician_role,
                                       user=self.physician_1.user)
     self.physician_3 = AccountFactory(client=self.client_1,
                                       role=physician_role)
Beispiel #4
0
 def setUp(self):
     super().setUp()
     self.client_1 = ClientFactory()
     self.today = datetime.utcnow().date()
     self.manufacturer_1, self.manufacturer_2 = ManufacturerFactory.create_batch(2)
     self.physician = AccountFactory(client=self.client_1, role=RoleFactory(priority=RolePriority.PHYSICIAN.value),
                                     user=self.user)
     self.path = reverse('api:hospital:device:marketshare', args=(self.client_1.id,))
Beispiel #5
0
class ManufacturerTestCase(TestCase):
    def setUp(self):
        self.manufacturer = ManufacturerFactory()

    def test_manufacturer_to_string(self):
        self.assertEqual(str(self.manufacturer), self.manufacturer.name)

    def test_rebatable_items(self):
        for model_name in ['product', 'category', 'specialty']:
            self.assertCountEqual(
                self.manufacturer.rebatable_items(model_name), [])

        specialty_1, specialty_2 = SpecialtyFactory.create_batch(2)
        category_1 = CategoryFactory(specialty=specialty_1)
        category_2, category_3 = CategoryFactory.create_batch(
            2, specialty=specialty_2)
        product_1 = ProductFactory(category=category_1,
                                   manufacturer=self.manufacturer)
        product_2 = ProductFactory(category=category_2,
                                   manufacturer=self.manufacturer)
        product_3 = ProductFactory(category=category_3,
                                   manufacturer=self.manufacturer)
        product_4 = ProductFactory(category=category_1,
                                   manufacturer=self.manufacturer)
        ProductFactory(category=category_3)

        self.assertCountEqual(self.manufacturer.rebatable_items('specialty'),
                              [specialty_1, specialty_2])
        self.assertCountEqual(self.manufacturer.rebatable_items('category'),
                              [category_1, category_2, category_3])
        self.assertCountEqual(self.manufacturer.rebatable_items('product'),
                              [product_1, product_2, product_3, product_4])
        self.assertCountEqual(
            self.manufacturer.rebatable_items('manufacturer'), [])

    def test_display_name(self):
        self.assertIsNone(self.manufacturer.short_name)
        self.assertEqual(self.manufacturer.display_name,
                         self.manufacturer.name)

        self.manufacturer.short_name = 'MDT'
        self.assertEqual(self.manufacturer.display_name, 'MDT')
Beispiel #6
0
    def setUp(self):
        super().setUp()
        specialty = SpecialtyFactory()
        self.account = AccountFactory.create(
            role=RoleFactory(priority=RolePriority.PHYSICIAN.value),
            user=self.user,
            specialties=(specialty, ))

        self.category_1 = CategoryFactory(specialty=specialty)
        self.category_2 = CategoryFactory(specialty=specialty)
        self.manufacturer_1 = ManufacturerFactory(image=ImageField(
            filename='Abbott.jpg'))
        self.manufacturer_2 = ManufacturerFactory(image=ImageField(
            filename='Simon.jpg'))
        self.product_1 = ProductFactory(category=self.category_1,
                                        manufacturer=self.manufacturer_1)
        self.product_2 = ProductFactory(category=self.category_2,
                                        manufacturer=self.manufacturer_2)
        self.product_3 = ProductFactory(category=self.category_1,
                                        manufacturer=self.manufacturer_2)

        faker = Faker()
        self.product_1_orders = faker.random_int(min=1, max=5)
        self.category_2_orders = faker.random_int(min=1, max=4)
        self.other_orders = faker.random_int(min=1, max=3)
        self.total_num_orders = self.product_1_orders + self.category_2_orders + self.other_orders
        OrderFactory.create_batch(self.product_1_orders,
                                  physician=self.account,
                                  product=self.product_1)
        OrderFactory.create_batch(self.category_2_orders,
                                  physician=self.account,
                                  product=self.product_2)
        OrderFactory.create_batch(
            self.other_orders,
            physician=AccountFactory(client=self.account.client),
            product=self.product_3)
        self.path = reverse('api:hospital:order:ordersummary_by_category',
                            args=(self.account.client.id, self.category_1.id))
    def setUp(self):
        super().setUp()
        self.log_in_master_admin()

        self.client = ClientFactory(name='NSINC')
        self.product_1 = ProductFactory(
            name='Accolade VR',
            manufacturer=ManufacturerFactory(short_name='MDT'))
        self.product_2 = ProductFactory(
            name='Evera MRI XT',
            manufacturer=ManufacturerFactory(short_name='BIO'))
        ClientPriceFactory(client=self.client,
                           product=self.product_1,
                           system_cost=100,
                           discounts=[
                               DiscountFactory(name='CCO',
                                               cost_type=SYSTEM_COST,
                                               discount_type=PERCENT_DISCOUNT,
                                               percent=20,
                                               order=2,
                                               apply_type=ON_DOCTOR_ORDER),
                               DiscountFactory(name='Repless',
                                               cost_type=SYSTEM_COST,
                                               discount_type=VALUE_DISCOUNT,
                                               value=20,
                                               order=1,
                                               apply_type=ON_DOCTOR_ORDER),
                           ])

        bulk_discount = DiscountFactory(name='Bulk',
                                        cost_type=UNIT_COST,
                                        discount_type=VALUE_DISCOUNT,
                                        value=50,
                                        order=1,
                                        apply_type=PRE_DOCTOR_ORDER)
        ClientPriceFactory(client=self.client,
                           product=self.product_2,
                           unit_cost=200,
                           discounts=[
                               DiscountFactory(name='Repless',
                                               cost_type=UNIT_COST,
                                               percent=10,
                                               order=1,
                                               apply_type=ON_DOCTOR_ORDER),
                               bulk_discount
                           ])
        device = Device.objects.get(client=self.client, product=self.product_2)
        item = ItemFactory(device=device,
                           is_used=False,
                           serial_number='SER1234',
                           discounts=[bulk_discount],
                           cost_type=UNIT_COST,
                           purchased_date=date(2018, 1, 1))
        self.assertEqual(item.cost, 150)

        physician = AccountFactory(
            role=RoleFactory(priority=RolePriority.PHYSICIAN.value),
            client=self.client)
        self.rep_case = RepCaseFactory(client=self.client,
                                       owners=[physician],
                                       physician=physician,
                                       procedure_date=date(2018, 9, 10))
        self.visit_reverse('admin:tracker_repcase_change', self.rep_case.id)
        self.wait_for_element_contains_text('#content h1', 'Change rep case')
Beispiel #8
0
 def test_get_method_returns_physician_app_on_used_devices(self):
     manufacturer = ManufacturerFactory(
         image=ImageField(filename='medtronic.png'), short_name='MDT')
     entry_device_1 = DeviceFactory(client=self.client_1,
                                    product=ProductFactory(
                                        category=self.category,
                                        level=ProductLevel.ENTRY.value,
                                        manufacturer=manufacturer))
     entry_device_2 = DeviceFactory(client=self.client_1,
                                    product=ProductFactory(
                                        category=self.category,
                                        level=ProductLevel.ENTRY.value))
     advanced_device = DeviceFactory(client=self.client_1,
                                     product=ProductFactory(
                                         category=self.category,
                                         level=ProductLevel.ADVANCED.value))
     today = datetime.utcnow().date()
     RepCaseFactory(physician=self.physician,
                    client=self.client_1,
                    procedure_date=today,
                    items=[
                        ItemFactory(is_used=True,
                                    device=entry_device_1,
                                    cost_type=UNIT_COST,
                                    cost=100),
                        ItemFactory(is_used=True,
                                    device=advanced_device,
                                    cost_type=UNIT_COST,
                                    cost=200),
                        ItemFactory(is_used=True,
                                    device=entry_device_2,
                                    cost_type=UNIT_COST,
                                    cost=350),
                        ItemFactory(is_used=True,
                                    device=advanced_device,
                                    cost_type=SYSTEM_COST,
                                    cost=470),
                    ])
     RepCaseFactory(client=self.client_1,
                    procedure_date=today,
                    items=[
                        ItemFactory(is_used=True,
                                    device=entry_device_1,
                                    cost_type=UNIT_COST,
                                    cost=90),
                        ItemFactory(is_used=True,
                                    device=advanced_device,
                                    cost_type=SYSTEM_COST,
                                    cost=430),
                    ])
     response = self.authorized_client.get(self.path)
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     self.assertCountEqual(
         response.data.pop('manufacturers'),
         [{
             'id': manufacturer.id,
             'name': 'MDT',
             'app': '100.00',
             'image': 'manufacturers/medtronic.png'
         }, {
             'id': entry_device_2.product.manufacturer.id,
             'name': entry_device_2.product.manufacturer.display_name,
             'app': '350.00',
             'image': None
         }])
     self.assertDictEqual(
         response.data, {
             'client': {
                 'id': self.client_1.id,
                 'name': self.client_1.name,
                 'min': '90.00',
                 'max': '350.00',
                 'app': '180.00',
             },
             'physician': {
                 'id': self.physician.id,
                 'name': self.physician.user.name,
                 'app': '225.00',
             },
         })
     rmtree(settings.MEDIA_ROOT)
Beispiel #9
0
 def setUp(self):
     super().setUp()
     self.manufacturer = ManufacturerFactory()
     self.path = reverse('api:staff:rebatable_items', args=(self.manufacturer.id, 'product'))
Beispiel #10
0
 def setUp(self):
     self.manufacturer = ManufacturerFactory()