示例#1
0
 def prepare_jsons(self, user_id=None, center_icu=None, level='dept'):
     # TODO(olivier): all the icus on map ? or restrict somehow ?
     tree = icu_tree.ICUTree()
     tree.add_many(self.db.get_icus(), self.db.get_latest_bed_counts())
     data = self.to_map_data(tree, level)
     anchor = center_icu if center_icu is not None else tree
     center = {'lat': anchor.lat, 'lng': anchor.long}
     return json.dumps(data), json.dumps(center)
示例#2
0
 def test_as_dict(self):
     tree = icu_tree.ICUTree(level='region')
     tree.label = 'label'
     tree.occ = 12
     tree.free = 4
     node_dict = tree.as_dict()
     self.assertIsInstance(node_dict, dict)
     self.assertEqual(node_dict['free'], tree.free)
示例#3
0
 def test_extract_below(self):
     tree = icu_tree.ICUTree()
     tree.add_many(self.icus, self.db.get_latest_bed_counts())
     level = 'dept'
     nodes = tree.extract_below(level)
     self.assertEqual(len(nodes), 5)
     self.assertIsInstance(nodes[0], tuple)
     self.assertEqual(nodes[0][0].level, level)
     self.assertFalse(nodes[0][0].is_leaf)
     self.assertIsInstance(nodes[0][1], list)
     self.assertTrue(nodes[0][1][0].is_leaf)
示例#4
0
文件: home.py 项目: sfehlandt/icubam
def build_data(icus, bedcounts, num_users):
    tree = icu_tree.ICUTree(level='icu')  # No clustering
    tree.add_many(icus, bedcounts)
    result = []
    result.append(make_info(len(icus), 'icus', 'hospital-symbol', 'primary'))
    result.append(make_info(num_users, 'users', 'user-md', 'secondary'))

    keys = ['occ', 'free', 'death', 'healed']
    labels = ['Occupied', 'Free', 'deceased', 'Healed']
    icons = ['bed', 'check', 'times', 'chart-line']
    colors = ['info', 'success', 'danger', 'warning']
    for key, lab, i, c in zip(keys, labels, icons, colors):
        result.append(make_info(getattr(tree, key, 0), lab, i, c))
    return result
示例#5
0
    def test_add(self):
        example = self.icus[7]
        insert_time = self.insert_time + datetime.timedelta(seconds=1)
        self.db.update_bed_count_for_icu(
            self.admin_id,
            store.BedCount(icu_id=self.icus[1].icu_id,
                           n_covid_occ=12,
                           n_covid_free=4,
                           create_date=insert_time))
        self.db.update_bed_count_for_icu(
            self.admin_id,
            store.BedCount(icu_id=example.icu_id,
                           n_covid_occ=1,
                           n_covid_free=19,
                           create_date=insert_time))

        tree = icu_tree.ICUTree()
        icus = self.db.get_icus()
        bedcounts = self.db.get_latest_bed_counts()
        tree.add_many(icus, bedcounts)

        self.assertEqual(tree.level, 'country')
        self.assertGreater(len(tree.children), 0)
        self.assertIn(example.region.name, tree.children)
        self.assertEqual(tree.occ, 13)
        self.assertEqual(tree.free, 23)
        self.assertEqual(tree.total, 36)
        self.assertFalse(tree.is_leaf)

        idf = tree.children[example.region.name]
        self.assertEqual(len(idf.children), 4)
        self.assertFalse(idf.is_leaf)
        self.assertIn(example.dept, idf.children)

        vdm = idf.children[example.dept]
        self.assertEqual(len(vdm.children), 2)
        self.assertFalse(vdm.is_leaf)
        self.assertIn(example.city, vdm.children)

        creteil = vdm.children[example.city]
        self.assertEqual(len(creteil.children), 2)
        self.assertFalse(creteil.is_leaf)
        self.assertIn(example.name, creteil.children)

        icu8_node = creteil.children[example.name]
        self.assertTrue(icu8_node.is_leaf)
        self.assertEqual(icu8_node.total, 20)
示例#6
0
    def prepare_jsons(
        self,
        user_id: Optional[int] = None,
        center_icu: Optional[store.ICU] = None,
        regions: Optional[List[int]] = None,
        level: str = 'dept',
    ):
        data = {}
        center = {
            'lat': center_icu.lat,
            'lng': center_icu.long
        } if center_icu else None
        for covid in [True, False]:
            tree = icu_tree.ICUTree(covid=covid)
            icus = self.db.get_icus()
            if regions:
                icus = [icu for icu in icus if icu.region_id in regions]
            tree.add_many(icus, self.db.get_latest_bed_counts())
            data[covid] = self.to_map_data(tree, level)
            if center is None:
                center = {'lat': tree.lat, 'lng': tree.long}

        return json.dumps(data), json.dumps(center)
示例#7
0
    def test_extract_below(self):
        tree = icu_tree.ICUTree()
        tree.add_many(self.icus, self.db.get_latest_bed_counts())
        level = 'dept'
        nodes = tree.extract_below(level, keep_empty=True)
        self.assertEqual(len(nodes), 5)
        self.assertIsInstance(nodes[0], tuple)
        self.assertEqual(nodes[0][0].level, level)
        self.assertFalse(nodes[0][0].is_leaf)
        self.assertIsInstance(nodes[0][1], list)
        self.assertTrue(nodes[0][1][0].is_leaf)

        nodes = tree.extract_below(level, keep_empty=False)
        self.assertEmpty(nodes[0][1])

        # Only two regions in our data
        nodes = tree.extract_below('region', keep_empty=True, max_nodes=40)
        self.assertEqual(len(nodes), 2)

        # If we limit the number of nodes, this will split the Paris region into
        # depts (4 of them)
        nodes = tree.extract_below('region', keep_empty=True, max_nodes=5)
        self.assertEqual(len(nodes), 5)
示例#8
0
 def test_set_basic_information(self):
     icu = self.icus[0]
     tree = icu_tree.ICUTree()
     tree.set_basic_information(icu)
     self.assertEqual(tree.label, icu.name)
示例#9
0
 def test_account_for_beds(self):
     tree = icu_tree.ICUTree()
     bd = store.BedCount(n_covid_occ=34, n_covid_free=6)
     tree.account_for_beds(bd)
     self.assertEqual(tree.total, 40)
示例#10
0
 def test_level_name(self):
     icu = self.icus[0]
     self.assertEqual(icu.region_id, self.regions[0].region_id)
     tree = icu_tree.ICUTree(level='region')
     self.assertEqual(tree.get_level_name(icu), self.regions[0].name)
示例#11
0
 def test_get_next_level(self):
     tree = icu_tree.ICUTree(level='region')
     self.assertEqual(tree.get_next_level(), 'dept')
     tree = icu_tree.ICUTree(level='icu')
     self.assertIsNone(tree.get_next_level())
示例#12
0
 def test_get_leaves(self):
     tree = icu_tree.ICUTree()
     tree.add_many(self.icus, self.db.get_latest_bed_counts())
     nodes = tree.get_leaves()
     self.assertEqual(len(nodes), 9)