text:
from iam_syncr.errors import SyncrError, BadConfiguration, DuplicateItem, ConflictingConfiguration, InvalidConfiguration
from iam_syncr.amazon.base import Amazon
from iam_syncr.syncer import Sync

from noseOfYeti.tokeniser.support import noy_sup_setUp
import six

from tests.helpers import TestCase

if six.PY2:
    import mock
else:
    from unittest import mock

describe TestCase, "Sync":
    before_each:
        self.amazon = mock.create_autospec(spec=Amazon, instance=True, spec_set=True)
        self.sync = Sync(self.amazon)
        self.sync.templates = mock.Mock(name="templates")
        self.templates = self.sync.templates

    it "takes in an amazon object and inits types and configurations":
        amazon = mock.Mock(name="amazon")
        sync = Sync(amazon)

        self.assertIs(sync.amazon, amazon)
        self.assertEqual(sync.types, {})
        self.assertEqual(sync.configurations, {})

        # It's a default dict of list
        self.assertEqual(sync.configurations["roles"], [])

    describe "Syncing":
        it "creates, setups, and resolves things in combined that are in types":
            roles = mock.Mock(name="roles")
            other = mock.Mock(name="other")
            things = mock.Mock(name="things")
            combined = {"roles": roles, "other": other}
            self.sync.register_type("roles", dict, mock.Mock(name="kls"))

            self.assertEqual(list(self.sync.types.keys()), ["roles"])

            fake_create_things = mock.Mock(name="create_things")
            fake_create_things.return_value = things
            fake_setup_and_resolve = mock.Mock(name="setup_and_resolve")

            with mock.patch.multiple(self.sync, create_things=fake_create_things, setup_and_resolve=fake_setup_and_resolve):
                self.sync.sync(combined)

            fake_create_things.assert_called_once_with(roles, "roles")
            fake_setup_and_resolve.called_once_with(things)

    describe "Registering a type":
        it "just adds it to types":
            kls = mock.Mock(name="kls")
            self.assertEqual(self.sync.types, {})
            self.sync.register_type("roles", dict, kls)
            self.assertEqual(self.sync.types, {"roles": (dict, None, kls)})

        it "puts key_conflicts_with in a list if not already in one":
            kls = mock.Mock(name="kls")
            self.assertEqual(self.sync.types, {})
            self.sync.register_type("roles", dict, kls, key_conflicts_with="blah")
            self.assertEqual(self.sync.types, {"roles": (dict, ["blah"], kls)})

        it "adds key_conflicts_with as is if a list":
            kls = mock.Mock(name="kls")
            self.assertEqual(self.sync.types, {})
            self.sync.register_type("roles", dict, kls, key_conflicts_with=["other"])
            self.assertEqual(self.sync.types, {"roles": (dict, ["other"], kls)})

    describe "Creating things":
        it "instantiates the kls with just thing if a list":
            called = []
            created = {
                  "one": mock.Mock(name="one")
                , "two": mock.Mock(name="two")
                , "three": mock.Mock(name="three")
                }

            kls = mock.Mock(name="kls")
            def instantiate(thing, amazon, templates):
                called.append((thing, amazon, templates))
                return created[thing]
            kls.side_effect = instantiate

            self.sync.register_type("blah", list, kls)
            things = ["one", "two", "three"]

            self.assertEqual(self.sync.create_things(things, "blah"), [created["one"], created["two"], created["three"]])
            self.assertEqual(called, [("one", self.amazon, self.templates), ("two", self.amazon, self.templates), ("three", self.amazon, self.templates)])

        it "instantiates the kls with thing and value if a dict":
            called = []
            created = {
                  "one": mock.Mock(name="one")
                , "two": mock.Mock(name="two")
                , "three": mock.Mock(name="three")
                }

            kls = mock.Mock(name="kls")
            def instantiate(thing, val, amazon, templates):
                called.append((thing, val, amazon, templates))
                return created[thing]
            kls.side_effect = instantiate

            self.sync.register_type("blah", dict, kls)
            things = {"one": "one_val", "two": "two_val", "three": "three_val"}

            self.assertEqual(set(self.sync.create_things(things, "blah")), set([created["one"], created["two"], created["three"]]))
            self.assertEqual(set(called), set([("one", "one_val", self.amazon, self.templates), ("two", "two_val", self.amazon, self.templates), ("three", "three_val", self.amazon, self.templates)]))

    describe "setup and resolve":
        it "calls setup on all the things and then calls resolve on all the things":
            called = []
            things = []
            def make_mock(name):
                nxt = mock.Mock(name=name)
                nxt.setup.side_effect = lambda: called.append(("setup", name))
                nxt.resolve.side_effect = lambda: called.append(("resolve", name))
                return nxt

            for thing in ["thing1", "thing2", "thing3"]:
                things.append(make_mock(thing))

            self.sync.setup_and_resolve(things)
            self.assertEqual(called
                , [ ("setup", "thing1")
                  , ("setup", "thing2")
                  , ("setup", "thing3")
                  , ("resolve", "thing1")
                  , ("resolve", "thing2")
                  , ("resolve", "thing3")
                  ]
                )

    describe "Adding configuration":
        it "complains if types is empty":
            self.assertEqual(self.sync.types, {})
            with self.fuzzyAssertRaisesError(SyncrError, "Syncr doesn't know about anything, try syncr.register_default_types\(\) first"):
                self.sync.add(mock.Mock(name="configuration"), "somewhere")

        it "complains if the configuration isn't a dictionary":
            self.sync.register_default_types()
            for conf in (0, 1, True, False, None, [], [1], lambda: None, mock.Mock(name="conf")):
                with self.fuzzyAssertRaisesError(SyncrError, "Configuration needs to be a dict"):
                    self.sync.add(conf, "somewhere")

        it "Adds to self.configuration what is found in the configuration for each known type":
            location = mock.Mock(name="location")
            blah_conf = mock.Mock(name="blah_conf")
            other_conf = mock.Mock(name="other_conf")
            stuff_conf = mock.Mock(name="stuff_conf")

            self.sync.register_type("blah", dict, mock.Mock(name="kls"))
            self.sync.register_type("other", dict, mock.Mock(name="kls"))

            configuration = {"blah": blah_conf, "other": other_conf, "stuff": stuff_conf}
            self.assertEqual(self.sync.configurations, {})

            self.sync.add(configuration, location)
            self.assertEqual(self.sync.configurations, {"blah": [(location, blah_conf)], "other": [(location, other_conf)]})

        it "only adds the configurations in only_consider if specified":
            location = mock.Mock(name="location")
            blah_conf = mock.Mock(name="blah_conf")
            other_conf = mock.Mock(name="other_conf")
            stuff_conf = mock.Mock(name="stuff_conf")

            self.sync.register_type("blah", dict, mock.Mock(name="kls"))
            self.sync.register_type("other", dict, mock.Mock(name="kls"))

            configuration = {"blah": blah_conf, "other": other_conf, "stuff": stuff_conf}
            self.assertEqual(self.sync.configurations, {})

            self.sync.add(configuration, location, only_consider=["blah"])
            self.assertEqual(self.sync.configurations, {"blah": [(location, blah_conf)]})

    describe "Combining configurations":
        it "raises BadConfiguration with collection of errors from calling add_to_combined if any":
            self.sync.register_type("blah", dict, mock.Mock(name="blahkls"))
            self.sync.register_type("other", dict, mock.Mock(name="otherkls"))

            err1, err2, err3 = mock.Mock(name="err1"), mock.Mock(name="err2"), mock.Mock(name="err3")
            err4, err5 = mock.Mock(name="err4"), mock.Mock(name="err5")
            errors = {
                  "blah": [err1, err2]
                , "other": [err3]
                }

            conflicting = [err4, err5]
            fake_find_conflicting = mock.Mock(name="find_conflicting")
            fake_find_conflicting.return_value = conflicting

            fake_add_to_combined = mock.Mock(name="add_to_combined")
            fake_add_to_combined.side_effect = lambda combined, name, *args: errors[name]

            self.sync.add({"blah": {"one": {}, "two": {}}, "other": {"three": {}, "four": {}}, "stuff": ["hmm"]}, "somewhere")

            found = None
            with mock.patch.multiple(self.sync, add_to_combined=fake_add_to_combined, find_conflicting=fake_find_conflicting):
                try:
                    self.sync.combine_configurations()
                    assert False, "Should have raised an error!"
                except BadConfiguration as error:
                    found = error.kwargs["errors"]

            if not found:
                assert False, "Ummm, this isn't right...."

            self.assertEqual(set(found), set([err1, err2, err3, err4, err5]))

        it "Returns merged of combined values":
            self.sync.register_type("blah", dict, mock.Mock(name="blahkls"), key_conflicts_with=["other"])
            self.sync.register_type("other", dict, mock.Mock(name="otherkls"), key_conflicts_with=["blah"])
            self.sync.register_type("stuff", list, mock.Mock(name="sutffkls"))

            self.sync.add({"blah": {"one": {}, "two": {}}, "other": {"three": {}, "four": {}}, "stuff": ["hmm"]}, "somewhere")
            self.sync.add({"blah": {"six": {}}, "other": {"seven": {}}, "stuff": ["yeap"]}, "somewhere2")

            merged = mock.Mock(name="merged")
            fake_merge_combined = mock.Mock("merge_combined")
            fake_merge_combined.return_value = merged

            with mock.patch.object(self.sync, "merge_combined", fake_merge_combined):
                self.assertIs(self.sync.combine_configurations(), merged)

            fake_merge_combined.assert_called_once_with(
                { "blah":
                  { "one": [("somewhere", {})]
                  , "two": [("somewhere", {})]
                  , "six": [("somewhere2", {})]
                  }
                , "other":
                  { "four": [("somewhere", {})]
                  , "three": [("somewhere", {})]
                  , "seven": [("somewhere2", {})]
                  }
                , "stuff":
                  { "hmm": [("somewhere", )]
                  , "yeap": [("somewhere2", )]
                  }
                }
            )

    describe "Merging combined":
        it "removes locations":
            combined = {
                "roles":
                  { "one": [("somewhere", {1: 2})]
                  , "two": [("somewhere", {3: 4})]
                  , "six": [("somewhere2", {5: 6})]
                  }
              , "remove_roles":
                  { "hmm": [("somewhere", )]
                  , "yeap": [("somewhere2", )]
                  }
              }

            merged = {
                "roles":
                  { "one": {1: 2}
                  , "two": {3: 4}
                  , "six": {5: 6}
                  }
              , "remove_roles": sorted(["hmm", "yeap"])
              }

            self.sync.register_default_types()
            result = self.sync.merge_combined(combined)
            result["remove_roles"] = sorted(result["remove_roles"])
            self.assertEqual(result, merged)

    describe "Finding conflicting items":
        it "complains about values that are defined multiple places":
            combined = {"key": {"one": [("somewhere", {}), ("somewhere2", {})], "two": [("somewhere", {})]}}
            errors = self.sync.find_conflicting(combined)
            self.assertEqual(len(errors), 1)
            self.assertEqual(errors, [DuplicateItem(key="key", name="one", found=["somewhere", "somewhere2"])])

        it "does not complain about values in list defined in multiple places":
            combined = {"key": {"one": [("somewhere", ), ("somewhere2", )], "two": [("somewhere", )]}}
            self.assertEqual(self.sync.find_conflicting(combined), [])

        it "complains about things that are defined under conflicting keys":
            self.sync.register_type("key", dict, mock.Mock(name="kls"), key_conflicts_with=["key2", "key3"])
            self.sync.register_type("key2", dict, mock.Mock(name="kls"), key_conflicts_with=["key"])
            self.sync.register_type("key3", dict, mock.Mock(name="kls"), key_conflicts_with=["key"])

            combined = {
                  "key":
                  { "one": [("somewhere", {})]
                  , "two": [("somewhere", {})]
                  , "three": [("somewhere3", {})]
                  }
                , "key2":
                  { "one": [("somewhere2", {})]
                  , "three": [("somewhere3", {})]
                  }
                , "key3":
                  { "three": [("somewhere3", {})]
                  }
                }

            errors = self.sync.find_conflicting(combined)
            self.assertSortedEqual(errors
                , [ ConflictingConfiguration("Found item in conflicting specifications", conflicting="one", found_in="somewhere(key); somewhere2(key2)")
                  , ConflictingConfiguration("Found item in conflicting specifications", conflicting="three", found_in="somewhere3(key, key2, key3)")
                  ]
                )

    describe "Adding to combined":
        it "says InvalidConfiguration if the configuration is not the expected type":
            combined = {}
            errors = self.sync.add_to_combined(combined, "key", dict, [1], "somewhere")
            self.assertEqual(errors, [InvalidConfiguration("Expected configuration of a different type", key="key", expected_type=dict, found=list, location="somewhere")])
            self.assertEqual(combined, {})

            errors = self.sync.add_to_combined(combined, "key2", list, {1:2}, "somewhere2")
            self.assertEqual(errors, [InvalidConfiguration("Expected configuration of a different type", key="key2", expected_type=list, found=dict, location="somewhere2")])
            self.assertEqual(combined, {})

        it "complains about duplicates in a list":
            combined = {}
            errors = self.sync.add_to_combined(combined, "key2", list, ["one", "two", "one", "three", "four", "four"], "somewhere2")
            self.assertEqual(errors, [InvalidConfiguration("Found duplicates in a list", key="key2", location="somewhere2", duplicates=set(["one", "four"]))])
            self.assertEqual(combined, {"key2": {}})

        it "records list as a dict of {<thing>: (<location>, )}":
            combined = {}
            errors = self.sync.add_to_combined(combined, "key2", list, ["one", "two", "three", "four"], "somewhere")
            self.assertEqual(errors, [])

            errors = self.sync.add_to_combined(combined, "key2", list, ["one", "five"], "somewhere3")
            self.assertEqual(errors, [])

            self.assertEqual(combined
                , { "key2":
                    { "one": [("somewhere", ), ("somewhere3", )]
                    , "two": [("somewhere", )]
                    , "three": [("somewhere", )]
                    , "four": [("somewhere", )]
                    , "five": [("somewhere3", )]
                    }
                  }
                )

        it "records dict as a dict of {<thing>: (<location>, <val>)}":
            combined = {}
            val1, val2, val3 = mock.Mock(name="val1"), mock.Mock(name="val2"), mock.Mock(name="val3")
            val4, val5, val6 = mock.Mock(name="val4"), mock.Mock(name="val5"), mock.Mock(name="val6")

            errors = self.sync.add_to_combined(combined, "key2", dict, {"one":val1, "two":val2, "three":val3, "four":val4}, "somewhere")
            self.assertEqual(errors, [])

            errors = self.sync.add_to_combined(combined, "key2", dict, {"one":val5, "five":val6}, "somewhere3")
            self.assertEqual(errors, [])

            self.assertEqual(combined
                , { "key2":
                    { "one": [("somewhere", val1), ("somewhere3", val5)]
                    , "two": [("somewhere", val2)]
                    , "three": [("somewhere", val3)]
                    , "four": [("somewhere", val4)]
                    , "five": [("somewhere3", val6)]
                    }
                  }
                )


text:
Home > Blog > First African American Flight Attendant Takes Flight from ITH
In December 1957, Mohawk Airlines hired Ruth Carol Taylor as the first African American flight attendant in the United States.
Born in Boston, MA, on December 27, 1931, she and her family moved to upstate New York at a young age, where they lived on a farm in the Finger Lakes Region. Taylor grew up on her farm and graduated from Trumansburg High School.
Taylor continued her education by attending Elmira College in upstate New York and went on to graduate from Bellevue School of Nursing in New York City in 1955, beginning her career as a registered nurse at just 24 years old. She would spend the next few years in New York working as a nurse before making aviation history.
Taylor applied to be a flight attendant for Trans World Airlines (TWA) in 1957, with a goal to become the first African American flight attendant and break the color barrier within the industry; Taylor was rejected due to the color of her skin. She filed a complaint against TWA with the New York State Commission of Discrimination. While TWA faced no consequences, other airlines began to reconsider their discriminatory hiring policies, with some expressing interest in hiring minority flight attendants. In December of 1957, Taylor was hired by Mohawk Airlines, where she was selected out of a competitive pool of 800 applicants.
Within a few months, Taylor completed her training, and on February 11, 1958, she made history as the first African American flight attendant. Her first flight on the job took off right here at the Ithaca Tompkins International Airport (ITH), heading to JFK Airport in New York, NY. Taylor worked as a flight attendant for six months until another discriminatory rule led to the end of her career. Flight attendants were not allowed to be married, and Taylor was soon to be wed, which forced her to resign from the airline industry.
Taylor returned to New York in 1977 to resume her work as a nurse. She continued to fight for equality after her resignation, co-founding the Institute for Inter-Racial Harmony and later publishing her book, "The Little African American Book: African American Male Survival In America." Reflecting on her time as a flight attendant, Taylor admitted she did not have aspirations to work for an airline; rather she was driven by the desire to break racial barriers: "It irked me that people were not allowing people of color to apply… Anything like that sets my teeth to grinding."
Fifty years after becoming the first African American flight attendant in the United States, Taylor's accomplishment was formally recognized by the New York State Assembly. Today, Taylor is 90 years old and resides in Brooklyn, NY.
We are proud to be a part of Taylor's inspirational story, which we know will continue to inspire future generations.

redpajama_set_name: RedPajamaCommonCrawl


Outdoor timber must be protected from the elements otherwise it will deteriorate. There is an incorrect assumption that treated timber (H3 pine), or hardwoods such as kwila or vitex, will last forever. New Zealand's climate is such that any timber will turn grey due to UV, and absorb moisture resulting in mildew and lichen growth. The only way to prevent this from happening is to regularly apply a UV and water repelling stain.
This Auckland deck is typical of what Deck&FencePro comes across. First thoughts are that the decking surface needs to be replaced, however under the layer of mildew and grey weathering there is still good timber.
Our restoration process removed this layer revealing the good timber. We were then able to apply two coats of linseel oil stain in the homewowner's choice of colour. The result is nothing short of amazing.


text:
Bama Stakeholders Appeal To PCNI To Implement Bama Initiatives
By Ahmed Abu, The Nigerian Voice, Maiduguri
The Borno State government has appealed to the Presidential Committee on the North East Initiatives (PCNI) to commence the implementation of Bama Initiative that outlined multi billion naira reconstruction and rehabilitation plans of basic infrastructural facilities and amenities.
Others include residenrial development structures of Bama town that were destroyed by the boko haram insurgents in Bama town and its environs , as about 120,000 Internally Displaced Persons (IDPs) screened are set to return back to their original communities beginning from 2nd April, 2018.
Addressing journalists in Maiduguri, the Secretary to the State Government, SSG, Alhaji Usman Jiddah Shuwa who led other stakeholders from Bama, said facilities in Bama town and its environs, particularly the road networks within the town need to be reconnected to other areas.
According to him, Federal Ministry of Finance was said to have released some funds to that effect but uptil now the plan has not been implemented nor started.
It will be recalled hat the Chairman, PCNI , General Theophulus Yakubu Danjuma retired had in strong terms condemned the Bama Initiative to the extent that he threatened to resign his appointment as the Chairman of the PCNI if the proposed Bama Initiative was going to be implemented by the federal government.
He explained that there was no need for the Bama Initiative proposal with the PCNI on ground and in existence physically implementing it's terms of reference on rebuilding of the destroyed north east by the boko Haram insurgents where Bama Town is part and parcel of the north east and a lot of resources and capital have been pumped into the reconstruction, rehabilitation and resettlement process of the Bama town.
He also disclosed that, the State Security Council meeting held last Thursday 15th March 2018 approved the first phase return of all IDPs from Bama.
"This is after careful and meticulous assessment of the overall security situation in Bama town and its surrounding communities, as well as the massive reconstruction efforts by the state government which resolved that the time is ripe and the atmosphere is favourable for the IDPs to go back to their homes in phases.
"It would interest you to know that Governor Kashim Shettima has committed billions of naira despite its meagre resources to the reconstruction of virtually all institutional structures and most of the private residential buildings callously destroyed by the insurgents in Bama town and other communities, so most of our IDPs are guaranteed to a decent accommodation upon their return," Shuwa said.
"However, in the first phase as I said earlier, a special template is being designed to capture the essential personal data of prospective returnees for the purpose of easy identification and security clearance," Usman added..
"All IDPs who have been shortlisted to return would be accompanied by their respective district and ward heads, and adequate security not only our conventional security agencies like the police, DSS and army, but also by vigilance groups and hunters", Shuwa said.


text:
Endovascular therapy for stroke due to basilar-artery occlusion
BASICS Study Group
TechMed Centre
BACKGROUND The effectiveness of endovascular therapy in patients with stroke caused by basilarartery occlusion has not been well studied.
METHODS We randomly assigned patients within 6 hours after the estimated time of onset of a stroke due to basilar-artery occlusion, in a 1:1 ratio, to receive endovascular therapy or standard medical care. The primary outcome was a favorable functional outcome, defined as a score of 0 to 3 on the modified Rankin scale (range, 0 to 6, with 0 indicating no disability, 3 indicating moderate disability, and 6 indicating death) at 90 days. The primary safety outcomes were symptomatic intracranial hemorrhage within 3 days after the initiation of treatment and mortality at 90 days.
RESULTS A total of 300 patients were enrolled (154 in the endovascular therapy group and 146 in the medical care group). Intravenous thrombolysis was used in 78.6% of the patients in the endovascular group and in 79.5% of those in the medical group. Endovascular treatment was initiated at a median of 4.4 hours after stroke onset. A favorable functional outcome occurred in 68 of 154 patients (44.2%) in the endovascular group and 55 of 146 patients (37.7%) in the medical care group (risk ratio, 1.18; 95% confidence interval [CI], 0.92 to 1.50). Symptomatic intracranial hemorrhage occurred in 4.5% of the patients after endovascular therapy and in 0.7% of those after medical therapy (risk ratio, 6.9; 95% CI, 0.9 to 53.0); mortality at 90 days was 38.3% and 43.2%, respectively (risk ratio, 0.87; 95% CI, 0.68 to 1.12).
CONCLUSIONS Among patients with stroke from basilar-artery occlusion, endovascular therapy and medical therapy did not differ significantly with respect to a favorable functional outcome, but, as reflected by the wide confidence interval for the primary outcome, the results of this trial may not exclude a substantial benefit of endovascular therapy. Larger trials are needed to determine the efficacy and safety of endovascular therapy for basilar-artery occlusion. (Funded by the Dutch Heart Foundation and others;
BASICS ClinicalTrials.gov number, NCT01717755; Netherlands Trial Register number, NL2500.).
https://doi.org/10.1056/NEJMoa2030297
10.1056/NEJMoa2030297
nejmoa2030297Final published version, 585 KB
Dive into the research topics of 'Endovascular therapy for stroke due to basilar-artery occlusion'. Together they form a unique fingerprint.
Intracranial Hemorrhages Medicine & Life Sciences 18%
Safety Medicine & Life Sciences 9%
Group Psychotherapy Medicine & Life Sciences 8%
BASICS Study Group (2021). Endovascular therapy for stroke due to basilar-artery occlusion. New England journal of medicine, 384(20), 1910-1920. https://doi.org/10.1056/NEJMoa2030297
BASICS Study Group. / Endovascular therapy for stroke due to basilar-artery occlusion. In: New England journal of medicine. 2021 ; Vol. 384, No. 20. pp. 1910-1920.
@article{a7f2a0b3a5a7431ebcc82a5b09c51f08,
title = "Endovascular therapy for stroke due to basilar-artery occlusion",
abstract = "BACKGROUND The effectiveness of endovascular therapy in patients with stroke caused by basilarartery occlusion has not been well studied.METHODS We randomly assigned patients within 6 hours after the estimated time of onset of a stroke due to basilar-artery occlusion, in a 1:1 ratio, to receive endovascular therapy or standard medical care. The primary outcome was a favorable functional outcome, defined as a score of 0 to 3 on the modified Rankin scale (range, 0 to 6, with 0 indicating no disability, 3 indicating moderate disability, and 6 indicating death) at 90 days. The primary safety outcomes were symptomatic intracranial hemorrhage within 3 days after the initiation of treatment and mortality at 90 days.RESULTS A total of 300 patients were enrolled (154 in the endovascular therapy group and 146 in the medical care group). Intravenous thrombolysis was used in 78.6% of the patients in the endovascular group and in 79.5% of those in the medical group. Endovascular treatment was initiated at a median of 4.4 hours after stroke onset. A favorable functional outcome occurred in 68 of 154 patients (44.2%) in the endovascular group and 55 of 146 patients (37.7%) in the medical care group (risk ratio, 1.18; 95% confidence interval [CI], 0.92 to 1.50). Symptomatic intracranial hemorrhage occurred in 4.5% of the patients after endovascular therapy and in 0.7% of those after medical therapy (risk ratio, 6.9; 95% CI, 0.9 to 53.0); mortality at 90 days was 38.3% and 43.2%, respectively (risk ratio, 0.87; 95% CI, 0.68 to 1.12).CONCLUSIONS Among patients with stroke from basilar-artery occlusion, endovascular therapy and medical therapy did not differ significantly with respect to a favorable functional outcome, but, as reflected by the wide confidence interval for the primary outcome, the results of this trial may not exclude a substantial benefit of endovascular therapy. Larger trials are needed to determine the efficacy and safety of endovascular therapy for basilar-artery occlusion. (Funded by the Dutch Heart Foundation and others;BASICS ClinicalTrials.gov number, NCT01717755; Netherlands Trial Register number, NL2500.).",
author = "Langezaal, {Lucianne C.M.} and {van der Hoeven}, {Erik J.R.J.} and Mont'Alverne, {Francisco J.A.} and {de Carvalho}, {Jo{\~a}o J.F.} and Lima, {Fabr{\'i}cio O.} and Dippel, {Diederik W.J.} and {van der Lugt}, Aad and Lo, {Rob T.H.} and Jelis Boiten and {Lycklama {\`a} Nijeholt}, {Geert J.} and Julie Staals and {van Zwam}, {Wim H.} and Nederkoorn, {Paul J.} and Majoie, {Charles B.L.M.} and Gerber, {Johannes C.} and Mikael Mazighi and Michel Piotin and Andrea Zini and Stefano Vallone and Jeannette Hofmeijer and Martins, {Sheila O.} and Nolte, {Christian H.} and Kristina Szabo and Dias, {Francisco A.} and Abud, {Daniel G.} and Wermer, {Marieke J.H.} and Remmers, {Michel J.M.} and Hauke Schneider and Rueckert, {Christina M.} and {de Laat}, {Karlijn F.} and Yoo, {Albert J.} and {van Doormaal}, {Pieter Jan} and {van Es}, {Adriaan C.G.M.} and Emmer, {Bart J.} and Patrik Michel and Volker Puetz and Audebert, {Heinrich J.} and Pontes-Neto, {Octavio M.} and Jan-Albert Vos and Kappelle, {L. Jaap} and Ale Algra and Schonewille, {Wouter J.} and {BASICS Study Group}",
note = "Funding Information: Supported by the Dutch Heart Foundation, the Swiss Heart Foundation, the S{\~a}o Paulo Research Foundation, the National Council for Scientific and Technological Development in Brazil, the University Medical Center Utrecht, and St. Antonius Hospital Nieuwegein. Publisher Copyright: Copyright {\textcopyright} 2021 Massachusetts Medical Society.",
doi = "10.1056/NEJMoa2030297",
BASICS Study Group 2021, 'Endovascular therapy for stroke due to basilar-artery occlusion', New England journal of medicine, vol. 384, no. 20, pp. 1910-1920. https://doi.org/10.1056/NEJMoa2030297
Endovascular therapy for stroke due to basilar-artery occlusion. / BASICS Study Group.
In: New England journal of medicine, Vol. 384, No. 20, 20.05.2021, p. 1910-1920.
T1 - Endovascular therapy for stroke due to basilar-artery occlusion
AU - Langezaal, Lucianne C.M.
AU - van der Hoeven, Erik J.R.J.
AU - Mont'Alverne, Francisco J.A.
AU - de Carvalho, João J.F.
AU - Lima, Fabrício O.
AU - Dippel, Diederik W.J.
AU - van der Lugt, Aad
AU - Lo, Rob T.H.
AU - Boiten, Jelis
AU - Lycklama à Nijeholt, Geert J.
AU - Staals, Julie
AU - van Zwam, Wim H.
AU - Nederkoorn, Paul J.
AU - Majoie, Charles B.L.M.
AU - Gerber, Johannes C.
AU - Mazighi, Mikael
AU - Piotin, Michel
AU - Zini, Andrea
AU - Vallone, Stefano
AU - Hofmeijer, Jeannette
AU - Martins, Sheila O.
AU - Nolte, Christian H.
AU - Szabo, Kristina
AU - Dias, Francisco A.
AU - Abud, Daniel G.
AU - Wermer, Marieke J.H.
AU - Remmers, Michel J.M.
AU - Schneider, Hauke
AU - Rueckert, Christina M.
AU - de Laat, Karlijn F.
AU - Yoo, Albert J.
AU - van Doormaal, Pieter Jan
AU - van Es, Adriaan C.G.M.
AU - Emmer, Bart J.
AU - Michel, Patrik
AU - Puetz, Volker
AU - Audebert, Heinrich J.
AU - Pontes-Neto, Octavio M.
AU - Vos, Jan-Albert
AU - Kappelle, L. Jaap
AU - Algra, Ale
AU - Schonewille, Wouter J.
AU - BASICS Study Group
N1 - Funding Information: Supported by the Dutch Heart Foundation, the Swiss Heart Foundation, the São Paulo Research Foundation, the National Council for Scientific and Technological Development in Brazil, the University Medical Center Utrecht, and St. Antonius Hospital Nieuwegein. Publisher Copyright: Copyright © 2021 Massachusetts Medical Society.
N2 - BACKGROUND The effectiveness of endovascular therapy in patients with stroke caused by basilarartery occlusion has not been well studied.METHODS We randomly assigned patients within 6 hours after the estimated time of onset of a stroke due to basilar-artery occlusion, in a 1:1 ratio, to receive endovascular therapy or standard medical care. The primary outcome was a favorable functional outcome, defined as a score of 0 to 3 on the modified Rankin scale (range, 0 to 6, with 0 indicating no disability, 3 indicating moderate disability, and 6 indicating death) at 90 days. The primary safety outcomes were symptomatic intracranial hemorrhage within 3 days after the initiation of treatment and mortality at 90 days.RESULTS A total of 300 patients were enrolled (154 in the endovascular therapy group and 146 in the medical care group). Intravenous thrombolysis was used in 78.6% of the patients in the endovascular group and in 79.5% of those in the medical group. Endovascular treatment was initiated at a median of 4.4 hours after stroke onset. A favorable functional outcome occurred in 68 of 154 patients (44.2%) in the endovascular group and 55 of 146 patients (37.7%) in the medical care group (risk ratio, 1.18; 95% confidence interval [CI], 0.92 to 1.50). Symptomatic intracranial hemorrhage occurred in 4.5% of the patients after endovascular therapy and in 0.7% of those after medical therapy (risk ratio, 6.9; 95% CI, 0.9 to 53.0); mortality at 90 days was 38.3% and 43.2%, respectively (risk ratio, 0.87; 95% CI, 0.68 to 1.12).CONCLUSIONS Among patients with stroke from basilar-artery occlusion, endovascular therapy and medical therapy did not differ significantly with respect to a favorable functional outcome, but, as reflected by the wide confidence interval for the primary outcome, the results of this trial may not exclude a substantial benefit of endovascular therapy. Larger trials are needed to determine the efficacy and safety of endovascular therapy for basilar-artery occlusion. (Funded by the Dutch Heart Foundation and others;BASICS ClinicalTrials.gov number, NCT01717755; Netherlands Trial Register number, NL2500.).
AB - BACKGROUND The effectiveness of endovascular therapy in patients with stroke caused by basilarartery occlusion has not been well studied.METHODS We randomly assigned patients within 6 hours after the estimated time of onset of a stroke due to basilar-artery occlusion, in a 1:1 ratio, to receive endovascular therapy or standard medical care. The primary outcome was a favorable functional outcome, defined as a score of 0 to 3 on the modified Rankin scale (range, 0 to 6, with 0 indicating no disability, 3 indicating moderate disability, and 6 indicating death) at 90 days. The primary safety outcomes were symptomatic intracranial hemorrhage within 3 days after the initiation of treatment and mortality at 90 days.RESULTS A total of 300 patients were enrolled (154 in the endovascular therapy group and 146 in the medical care group). Intravenous thrombolysis was used in 78.6% of the patients in the endovascular group and in 79.5% of those in the medical group. Endovascular treatment was initiated at a median of 4.4 hours after stroke onset. A favorable functional outcome occurred in 68 of 154 patients (44.2%) in the endovascular group and 55 of 146 patients (37.7%) in the medical care group (risk ratio, 1.18; 95% confidence interval [CI], 0.92 to 1.50). Symptomatic intracranial hemorrhage occurred in 4.5% of the patients after endovascular therapy and in 0.7% of those after medical therapy (risk ratio, 6.9; 95% CI, 0.9 to 53.0); mortality at 90 days was 38.3% and 43.2%, respectively (risk ratio, 0.87; 95% CI, 0.68 to 1.12).CONCLUSIONS Among patients with stroke from basilar-artery occlusion, endovascular therapy and medical therapy did not differ significantly with respect to a favorable functional outcome, but, as reflected by the wide confidence interval for the primary outcome, the results of this trial may not exclude a substantial benefit of endovascular therapy. Larger trials are needed to determine the efficacy and safety of endovascular therapy for basilar-artery occlusion. (Funded by the Dutch Heart Foundation and others;BASICS ClinicalTrials.gov number, NCT01717755; Netherlands Trial Register number, NL2500.).
U2 - 10.1056/NEJMoa2030297
DO - 10.1056/NEJMoa2030297
BASICS Study Group. Endovascular therapy for stroke due to basilar-artery occlusion. New England journal of medicine. 2021 May 20;384(20):1910-1920. doi: 10.1056/NEJMoa2030297


Bask in the splendor and romance with 3-night stays in each of Europe's Imperial Cities – Prague, Vienna and Budapest. In Prague, walk the Golden Lane, a delightful neighborhood of tiny, medieval houses; then visit a private castle for a tour, lunch and a concert. You choose your dining experience: dinner with a folklore show including a chance to meet the dancers and have a lesson, or dinner and a tour at one of Prague's most famous brewery restaurants. Delight in the Baroque marvels of Vienna's Schoenbrunn Palace, the summer retreat of the Habsburg dynasty for more than 200 years. Indulge in an unforgettable Classical music performance in Vienna. Visit a 14th-century Hungarian castle where knights recreate the days of chivalry. Spend time at a school in Budapest and meet the students. Soak up the culture of the region with included guided city excursions and through your own explorations on your days at leisure. Cruise the Danube River through the beautiful scenery of the Wachau Valley to the famous Abbey at Melk.


text:
Book Reviews | Gordon Campbell | Scoop News | Wellington Scoop | Community Scoop | Search
Scoop  Top Scoops
Winning project pictures life with Tuberculosis
Tuesday, 21 December 2010, 10:30 am
Article: Babs Verblackt
by Babs Verblackt – CNS
The TB Photovoice Project, the winner of the 2010 TB Survival Prize, started as a one man's way to deal with the loss of his beloved ones to tuberculosis (TB). By now, it is touching the lives of many people around the world, helping – through pictures and narratives – to empower and raise the voices of persons and communities affected by the disease.
The Tuberculosis Survival Prize is given each year by the Tuberculosis Survival Project, with support from the Lilly MDR-TB Partnership. The prize, an annual award of USD 2000, is awarded in recognition of innovation in TB/MDR-TB advocacy and social mobilization by individuals, groups or NGOs working in the field of HIV/TB or TB/MDR-TB. During a ceremony at the 41st Union World Conference on Lung Health in Berlin, Germany (November 11-15) the prize this year went to TB Photovoice.
The TB Photovoice Project provides cameras to community members (survivors, caregivers, friends, family) affected by TB, who take photographs that help them identify and improve their communities. The photographs and their stories represent what is happening in the participants' lives and serve as a point for discussion about what can be done to change the present situation in regards to TB, adherence, support, stigma, education and related issues. These photographs and their accompanying narratives give a face and voice to TB. There are initiatives in among others Brazil, Mexico, Thailand and the United States. The Stop TB Survivor award enables the project to start up a TB Photovoice in Kenya too.
Romel Lacson, founder of the Amaya-Lacson TB Photovoice Project, was personally affected by the disease, losing both his wife Claudia Amaya and their newborn daughter Emma to tuberculosis meningitis in 2004. "The project was sort of my reaction to that," he said at the sidelines of the conference. "I did not have TB myself but my family and my wife's family were providing care of her throughout the time she was in hospital. We felt very isolated, very disconnected from the world. When Claudia passed away it turned my life upside down. I had to try to make sense."
Over the years, the various initiatives - in partnership with local organizations - gave different meanings to TB Photovoice. "They have a basic foundation for it but depending on the mission of the particular organization and on the coordinator who is implementing and facilitating it, it really takes a character of its own," Lacson says. Yet there are core aspects that remain, such as photography, using images, narrative storytelling, dialogue, group discussions and ethical use of the camera. "Part of the training is to instill a sense of responsibility of the photographer that they take pictures that don't invade people's privacy or are not going to hinder any kind of confidentiality of what happened."
Eva M. Moya is involved with setting up TB Photovoice projects throughout the U.S.-Mexico border and in Mexico. With resources of the Amaya-Lacson Foundation a pilot TB Photovoice (Voices and Images of Tuberculosis) Project in the United States-Mexican border region was started in 2006. "We immediately realized we had to do it in a bi-national fashion," Moya recalls. "It is a border community where tuberculosis knows no boundaries, where it doesn't need a visa to travel north or south."
Two groups of persons affected by TB were formed and received training, setting up photo galleries within four months. Policy and decision makers were invited and witnessed the work of the participants, and were asked to make commitments. "One of the beauties of this methodology is that you can actually see commitments," Moya says. "Which you can follow through time with decision, policy makers and health authorities so that there could be improvement. Whether it is in the area of access of services, in the leveraging of resources, or in making services much more focused on the person and services that are free of stigma and discrimination."
Through a partnership with Project Concern International SOLUCION TB the TB Photovoice (Voices and Images of Tuberculosis) initiative now includes nine projects in Mexico. Galleries that continue to move between communities. It was followed by Nuestra Casa, a three-dimensional house that reflects the life and stories of people affected by TB.
TB Photovoice asks its participants to be critical of their own community and their reality. "We ask them to tell us what it is that they see, to explain what is happening in their lives, to indicate where the problems, issues and challenges are. And then to be able to work with solutions," Moya says. Eventually many participants become activists. "There is a lot of overcoming of fears, sometimes of embarrassment, of distress, of sadness, of actually even rage, because several of our participants were unfortunately misdiagnosed. And they sort of transform that into a very powerful experience and they say well, we need to let the larger community know. It is very powerful when the story comes from the person affected and is presented to decision and policymakers, because it comes actually from the perspective of having lived the experience."
Rachel C. Orduño, one of the first participants in the U.S.-Mexico border project, lived the experience. She was diagnosed with TB in 2006 after three years of many misdiagnoses. Her treatment lasted 9 months. Her (at that time) 3 year old niece also had active TB and six other family members were treated for latent TB. Orduño remembers feeling helpless, frustrated and angry because of the misdiagnosis. Participating in the TB Photovoice Project altered these emotions.
"For people who are going through treatment, TB survivors, it is really important to share with other people," Orduño stresses. "For me TB Photovoice was first and foremost a support group. We gave each other advice and support and direction. The activist and advocacy aspect of it came later, once we felt like we can do something about it: we can't just ask the medical establishment to take care of us, we can't expect the government to look after us, we need to do something."
For Orduño that motivation came from being a group, having people to share ideas and the feeling of having something to contribute. "Now I don't see the power differential of the medical expert and the patient," she says. "Now it is the medical professional who got a lot of training plus the persons affected by the TB experience, the experience that makes us the experts. And seeing how we can be partners in developing a lot more effective treatments, how to reach the public at large and the public services."
The project even helped diminish her feelings of guilt. "That is something else that people don't tell you, that sometimes you feel very guilty for transmitting the disease to your most loved ones," she says. "I learned that for every year that I was untreated and had active TB, I could have infected 15 other people. So I may have possibly caused 45 infections. However by speaking up now, by spreading the word that we can do something about it, every one of us, all of us who have been directly been affected by TB and every medical professional and everyone who knows their story, we can all contribute. We can all try and do our best to recognize the symptoms and just be aware that TB is out there everywhere in the world. Anyone that breathes is at risk so everyone has a moral obligation and it would be a public service to do your part to contain it."
Babs Verblackt - CNS (The author writes for Citizen News Service (CNS). Website: www.citizen-news.org )
Find more from Babs Verblackt on InfoPages.
Top Scoops Headlines
Julian Assange has now been in the maximum-security facilities of Belmarsh prison for over 1,000 days. On the occasion of his 1,000th day of imprisonment, campaigners, supporters and kindred spirits gathered to show their support, indignation and solidarity at this political detention most foul... More>>
Binoy Kampmark: The Mauling Of Novak Djokovic
Rarely can the treatment of a grand sporting figure by officialdom have caused such consternation. Novak Djokovic, the tennis World Number One, has always had a tendency to get under skin and constitution, creating a large following of admirers and detractors. But his current treatment by Australian authorities, and his subsequent detention as an unlawful arrival despite being granted a visa to participate in the Australian Open, had the hallmarks of oppression and incompetent vulgarity... More>>
Binoy Kampmark: Voices Of Concern: Aussies For Assange's Return
With Julian Assange now fighting the next stage of efforts to extradite him to the United States to face 18 charges, 17 of which are based on the brutal, archaic Espionage Act, some Australian politicians have found their voice. It might be said that a few have even found their conscience... More>>
Forbidden Parties: Boris Johnson's Law On Illegal Covid Gatherings
It was meant to be time to reflect. The eager arms of a new pandemic were enfolding a society with asphyxiating, lethal effect. Public health authorities advocated various measures: social distancing, limited contact between family and friends, limited mobility. No grand booze-ups. No large parties. No bonking, except within dispensations of intimacy and various "bubble" arrangements. Certainly, no orgies... More>>
Dunne Speaks: Question Time Is Anything But
The focus placed on the first couple of Question Time exchanges between the new leader of the National Party and the Prime Minister will have seemed excessive to many but the most seasoned Parliamentary observers. Most people, especially those outside the Wellington beltway, imagine Question Time is exactly what it sounds... More>>
Gasbagging In Glasgow: COP26 And Phasing Down Coal
Words can provide sharp traps, fettering language and caging definitions. They can also speak to freedom of action and permissiveness. At COP26, that permissiveness was all the more present in the haggling ahead of what would become the Glasgow Climate Pact... More>>
Community Scoop
Maori Authority Launches Online Campaign To Prepare Whanau On What To Do If Omicron Hits
First Kaupapa Māori Vaccine Clinic For West Coast Tamariki
Government Agencies Team Up To Help Achieve Equity In Cancer Outcomes
MidCentral Addressing Inequity Through Its Inaugural Māori Scholarship Programme
Auckland Pride Responds To Cancellation Of Ending Hiv Big Gay Out
Putts For Bucks To Raise Funds For Hospice
Ending HIV Big Gay Out 2022 Organisers Cancel Event Citing Significant Public Health Risk
PublicAddress
Legal Beagle: A submission on the repeal of the th... 07 Jan | Graeme Edgeler
Hard News: Medicinal cannabis: 2022 will be a bett... 31 Dec | Russell Brown
Hard News: Public Address Word of the Year 2021: C... 17 Dec | Russell Brown
Hard News: Public Address Word of the Year 2021: T... 13 Dec | Russell Brown
Hard News: Public Address Word of the Year 2021: D... 06 Dec | Russell Brown
Legal Beagle: A submission on the COVID-19 Public ... 11 Oct | Graeme Edgeler
Hard News: More tales from the Medicinal Cannabis ... 11 Oct | Russell Brown
Heart of Darkness in the public sector 1:06 AM | Tim Watkin
The Census Flop 17 Dec | Brian Easton
The Unprepared 13 Dec | Brian Easton
Protecting the umpire 06 Dec | Andrew Geddis
Gavin Hawthorn: send him to (drug) court, but not ... 2:00 PM | Roger Brooking
Can we save the planet without a revolution? 10:39 AM | Damon Rusden
Brexit or Bust? 8:46 AM | Brian Easton
A terrible time to hike the minimum wage 9:00 PM | David Farrar
General Debate 12 March 2020 7:00 PM | Kokila Patel
It's over Bernie 6:00 PM | David Farrar
$1 million of travel expenses for slush fund staff 3:00 AM | David Farrar
A stuff up in Parliament 1:00 AM | David Farrar
Minister wants powers to fix problem she caused 11:00 PM | David Farrar
A new level of troughing 9:00 PM | David Farrar
Black Box Voting
Else Woman