Mój ojciec jest lekarzem. Nalega, aby napisać bazę danych do przechowywania niekrytycznych informacji o pacjencie, bez wiedzy programistycznej [zamknięte]


18

Tak więc mój ojciec jest obecnie w trakcie „hakowania” bazy danych za pomocą FileMaker Pro, narzędzia do tworzenia baz danych opartego na graficznym interfejsie użytkownika dla jego małej (4 doktora) praktyki. Baza danych zostanie wykorzystana do zmniejszenia obciążenia związanego z raportowaniem z urządzeń medycznych, co usprawni dość niezręczny proces.

Nie ma doświadczenia w programowaniu i wydaje się, że robi wszystko, co w jego mocy, aby nie uczyć się poprawnie. Ma zduplikowane typy danych, brak relacji wymuszonych przez bazę danych (ograniczenia klucza obcego / klucza podstawowego) i tuzin innych problemów. Robi to wszystko ręcznie za pomocą narzędzia GUI i filmów na Youtube.

Chodzi mi o to, że chociaż chcę, aby odniósł 100% sukcesów, nie sądzę, że powinien podejmować tego rodzaju decyzje. Jak go przekonać, że bez pewnego wykształcenia w tych tematach zhakowane razem rozwiązanie to zły pomysł? Może być bardzo uparty i myślę, że postrzega tego rodzaju prace jako „dziecinną zabawę”

Jak mam do tego podejść? Czy to nawet taki zły pomysł - czy mam rację sądząc, że powinien zatrudnić odpowiedniego DBA / programistę, aby zajął się tym, aby nie stał się koszmarem konserwacyjnym?

NB: Jestem konsultantem programistycznym od 4 lat i widziałem swój udział w bolesnych wdrożeniach klientów.

Aktualizacja:

Teraz minęło kilka lat i miałem czas na przemyślenie tego pytania. Mój tata ostatecznie wdrożył rozwiązanie przy użyciu Google Docs, FileMaker Pro i kilku haczyków e-mail. Sam to wszystko przygotował i mówi, że czerpie z tego ogromną wartość.

Jeśli jesteś doświadczonym programistą, być może czytasz ten opis i kulenie się. Ale nauczyłem się całkiem dobrej lekcji z całej rzeczy - że ludzie dbają tylko o wyniki, a nie o wdrożenie. Wszystkim, którym troszczy się mój tata, jest fakt, że nie musi ręcznie wpisywać informacji o pacjencie na papierze, a zamiast tego może szybko wypełnić formularz dokumentów Google. Wspaniałe jest to, że chce zatrudnić młodszego programistę / specjalistę, aby skupił się wyłącznie na automatyzacji w swojej praktyce.


6
coś zhakowanego w ten sposób może działać dobrze ... dopóki wymagania się nie zmienią, wtedy zaczną się prawdziwe kłopoty ...
maniak zapadkowy

33
O tak. Są częstym problemem wśród lekarzy, którzy uważają, że bycie lekarzem czyni ich mądrzejszymi niż wszyscy inni i jest w stanie wykonywać zadania innych osób. Nie zdają sobie sprawy z tego, czego nie wiedzą, nawet po tym, gdy ugryzie ich w tyłek. Zacznę od pytania, jaka będzie jego odpowiedź, jeśli jego domowy system zostanie zakwestionowany podczas audytu HIPPA. Przy odrobinie szczęścia sprawi, że dokona niezbędnych zmian wymagań i sprawi, że wszystko stanie się znacznie trudniejsze.
btilly,

8
Powinienem zauważyć, że mój komentarz na temat lekarzy pochodzi z ich wielu pośrednich doświadczeń. Trochę przyszło, bo moja żona jest lekarzem.
btilly,

10
Jako osoba, która ma duże doświadczenie w pracy w informatyce medycznej, mogę potwierdzić, że wielu lekarzy nie docenia umiejętności i wiedzy specjalistów z innych dziedzin. Niech spróbuje, a jeśli mu się nie uda, nauczy się czegoś bardzo cennego. Jeśli mu się uda, myślę , że nauczysz się czegoś bardzo cennego.
maple_shaft

31
po prostu zacznij udzielać mu porad medycznych w oparciu o wiedzę zebraną z filmów z youtube ...
Thorsten Müller

Odpowiedzi:


66

Od wielu lat projektuję rozwiązania dla służby zdrowia. Nie będę rozważał różnych powodów, dla których twój ojciec nie powinien tego robić; większość powodów ma charakter akademicki: oznacza to, że jeśli jesteś w branży wystarczająco długo, wiesz, jak te rzeczy się kulą i rozwijają własne życie.

Zamiast tego twój ojciec, jako lekarz, musi zrozumieć zawodowe powody i rzeczywiste, nieakademickie powody, dla których to, co robi, jest niebezpieczne i może zagrażać życiu; niebezpieczne dla jego kolegów, niebezpieczne dla prywatności i tożsamości pacjentów oraz niebezpieczne dla jego praktyki z prawnego punktu widzenia.

Niebezpieczeństwo jest wieloaspektowe:

  1. prywatność pacjenta (HIPAA, ARRA, Sensowne użytkowanie, zgodność z HITECH)
    • jakie pola są uważane za pola identyfikujące pacjenta (wielu specjalistów w branży nie rozumie tego, a tylko dlatego, że eliminujesz niektóre oczywiste pola, takie jak nazwisko, adres, kod pocztowy, wciąż istnieje wiele innych pól, które by to zrobiły łatwe powiązanie danych klinicznych z konkretnym pacjentem; to samo w sobie jest trudne; istnieją firmy, które zarabiają dużo pieniędzy na deidentyfikacji danych klinicznych - to cała domena sama w sobie).
  2. HIPAA, HITECH i nowsze przepisy jasno określają, w jaki sposób
    • należy przeprowadzić audyt
    • bezpieczeństwo powinno być zrobione
    • wymagania dotyczące hasła
    • jeśli dane w spoczynku zostaną zaszyfrowane
    • czy przesyłane dane powinny być zaszyfrowane i jak
    • musisz rozważyć kontrolę, jeśli korzystasz z jakiejkolwiek usługi hostowanej (IaaS, PaaS)
    • czy masz odpowiednie BAA i DSA na miejscu?
    • w jaki sposób osoby hostujące twoje serwery kontrolują dostęp
    • jak radzą sobie z wieloma najemcami (byłbyś zaskoczony, jak niektóre z tych dużych podmiotów NIE obsługują tego odpowiednio)
    • jeśli rozwiążesz umowę z tymi, którzy hostują twoją infrastrukturę, w jaki sposób zapewnią one trwałe usunięcie twoich danych (przepisy NIST)
  3. jakie są obowiązujące kontrole dla twojego rozwoju
    • czy masz sdlc na swoim miejscu?
    • czy masz możliwość śledzenia od wymagań przez kod po kontrolę jakości?
    • czy potwierdzasz „zamierzone” wykorzystanie twojej aplikacji / urządzenia medycznego
  4. czy Twoje oprogramowanie jest poddawane kontroli jakości i czy masz środowisko testu akceptacji użytkownika (UAT)
    • jak zabezpieczyć to środowisko, ponieważ będziesz korzystać z prawdziwych danych pacjenta
  5. czy zajmie się pacjentami Medicare, jeśli tak, to czy zamierza wykorzystać swoją bazę danych do zgłoszenia?
    • rząd ma ścisłe kontrole w zakresie wymiany tych danych do ich wymiany informacji zdrowotnych (HIE)
    • co prowadzi do tego, jak wdroży własną wymianę, jeśli chce skorzystać z repozytorium danych klinicznych (CDR)
  6. czy rozumie szczególne przepisy NIST, których musi przestrzegać w celu zapewnienia bezpieczeństwa danych
    • takie jak trwałe usunięcie danych (jeśli korzystasz z hostowanej infrastruktury)
  7. wspomniałeś, że będzie pobierał dane z maszyn medycznych
    • czy rozumie nowe standardy urządzeń medycznych FDA?
    • od 2013 r. każdy system cyfrowy, który wyświetla dane z urządzeń medycznych, może zostać zaklasyfikowany jako urządzenie medyczne ... oznacza to, że musi spełniać wymogi regulacyjne FDA dotyczące wyrobów medycznych
  8. czy jego zespół i personel będą podejmować decyzje medyczne na podstawie danych w swojej bazie danych?
    • czy opracował solidny model danych klinicznych, wystarczająco elastyczny, aby sprostać stale zmieniającym się wymaganiom (tj. standardy kodowania ICD-9 do ICD-10 do ICD-11)?
    • jak zaktualizuje model danych i zsynchronizuje go z danymi (tj. jeśli zmieni model danych klinicznych, w jaki sposób będą reprezentowane starsze dane?)
    • czy jego system będzie w stanie wygenerować dokładną migawkę danych klinicznych, jak to było widoczne w dniu podjęcia decyzji klinicznej? jeśli nie może, to pociąga to za sobą konsekwencje prawne
    • czy zna różnicę między rzeczywistym usunięciem a usunięciem logicznym oraz implikacje dla jego modelu danych; do jego wymagań w zakresie przechowywania; do zasad jego praktyki?
    • czy ma on rozwiązanie słownictwa do obsługi wszystkich różnych usług, z których będzie musiał skorzystać; duża część danych musi zostać zakodowana (w przeciwieństwie do tekstu swobodnego), ponieważ będzie chciał skorzystać ze swojego CDR do tworzenia raportów zgodnych z ICD-9. A potem musi wziąć pod uwagę zmianę tych standardów; np. ICD-9 do ICD-10.
    • jeśli chodzi o słownictwo, terminologię lub słownik danych o zdrowiu (wszystkie w zasadzie synonimy), w jaki sposób wdroży i zapewni, że stara terminologia będzie nadal dostępna w przypadku starych decyzji klinicznych?
  9. czy będzie przechowywać dane dotyczące alergii?
    • jak będą przechowywane jego „terminologia medyczna” lub „słownictwo”?
    • czy zintegruje się z innymi systemami terminologicznymi, takimi jak LOINC i First Data Bank?
    • czy rozumie usługi terminologiczne (np. Health Data Dictionary)
  10. czy będzie chciał, aby dane zostały podłączone do jego systemu, a może do wymiany informacji zdrowotnych (HIE)?
    • jeśli tak, to czy rozumie HL7 i jego wpływ na jego bazę danych?
    • czy rozumie silniki interfejsów i wszystko, co się z tym wiąże?
  11. czy rozumie, jak usunąć dane?
    • jest to ważne w fazie rozwoju i fazie usuwania błędów

To tylko kilka pytań i w żadnym wypadku nie należy tego uważać za wyczerpującą listę. I dla każdej odpowiedzi będzie niezliczona ilość pytań.

W bazie danych Healthcare nie powinno być żadnego usuwania ani nadpisywania poprzednich danych. Oznacza to, że nigdy nie będzie „usuń skąd ...” lub „zestaw aktualizacji ...”. Zamiast tego będziesz mieć tylko wstawki. Możesz sobie wyobrazić, jak to zmienia twój model danych i twoje zapytania. Teraz możesz być kreatywny i wymyślać różne rozwiązania, aby osiągnąć ten cel, ale faktem jest, że jest to wymóg, który jest unikalny dla repozytorium danych klinicznych Healthcare.

Jeszcze jedna myśl na temat zagrażającej życiu strony tego problemu:

Weźmy na przykład informacje o alergii; Podnoszę tę kwestię, ponieważ instytucje, które robią to cyfrowo od lat, nauczyły się, że ich procesy muszą zapewnić przechwytywanie danych dotyczących alergii i że nie możemy zakładać, że ponieważ technologia przechwytuje dane w bazie danych, jest ona z natury rzeczy poprawna na zawsze . Dlatego pacjenci są proszeni o alergie za każdym razem, gdy przemieszczają się z jednego oddziału na drugi, nawet w tym samym szpitalu. Alergii pacjenta nie można usunąć (aktualizacje wiersza usuwają stare informacje). Decyzja kliniczna oparta na danych cyfrowych musi uchwycić to, co zostało „przedstawione” klinicystowi w chwili podjęcia decyzji.

Wiem, że wiele z tego może wydawać się ukierunkowanych na dużą instytucję. Jednak części regulacyjne nie są. W każdym razie systemy informacyjne opieki zdrowotnej są z natury złożone. Inżynieria systemu opieki zdrowotnej zależy i uznaje fachową wiedzę i doświadczenie dobrych klinicystów. Jednak w domenie Healthcare IT występuje niedopasowanie impedancji większe niż przeciętne (zapożyczanie terminologii z technologii ORM) ... Zaryzykuję stwierdzenie, że jest większa, ponieważ każda domena ma swoje niedopasowania.

Powodzenia!


2
To z pewnością najlepsza, najbardziej wszechstronna odpowiedź, jaką widziałem. Ojciec OP nie tylko mógł stracić praktykę, rozwiązując ten problem, ale nawet zostać ukarany karą.
Rig

EMR zmniejszają produktywność lekarzy. Obciążenia regulacyjne, które opisujesz, dotyczą spraw innych niż opieka medyczna. Tutaj doktor chce napisać oprogramowanie, aby lepiej wykonać swoją pracę, a cała dziedzina IT idzie na niego. Weź pod uwagę, że ten dokument rzeczywiście się czegoś nauczy i będzie mógł lepiej porozmawiać z IT o swoich potrzebach. Osobiście uważam, że IT nie rozumie lekarzy mówiących o swoich problemach, ale kiedy mówię w języku IT, dostają to. Cała ta odpowiedź przemawia także do scentralizowanej organizacji informatycznej. Szkoda, że ​​informatyka medyczna nie może stworzyć systemów interoperacyjnych.
kd4ttc

32

Zhakowane rozwiązanie nie zawsze jest złe. Jeśli to rozwiąże jego problem, nie zrobiłbym z tego zbyt wiele smrodu. Prawdopodobnie istnieje 10 działających razem zhakowanych rozwiązań w File Maker i Access dla każdego profesjonalnego rozwiązania bazodanowego. W końcu do tego służą Filemaker i Access. Pewnie, większość zhakowanych razem rozwiązań jest okropna pod maską. Ale istnieją po to, by rozwiązywać problemy, a nie wygrywać konkursy piękności. Często zakres tych rozwiązań rośnie, i wtedy ktoś jest zatrudniony do stworzenia profesjonalnego rozwiązania.

To, co możesz zrobić, aby zwiększyć jego szanse na sukces, to wyrazić zainteresowanie jego projektem i zaoferować usiąść i pomóc mu w zdefiniowaniu bazy danych i przejrzeniu wszystkiego. Jeśli nie chce twojej pomocy ... zostaw ją i pozwól mu być. Co zamierzasz zrobić, borsuk, ojcze? Jeśli dostanie się nad głowę, da ci znać.

Inną rzeczą do rozważenia jest to, że jeśli jest to powszechny problem wśród lekarzy, możesz mieć bardzo dobrą okazję biznesową w tworzeniu ogólnego rozwiązania.


+1 - Ale jeśli jest tak uparty, jak pyta go pytający, nie może prosić o pomoc. ;)
jmort253

Jest dość trudny do współpracy, ponieważ jest kimś, kto był „szefem” bez prawdziwej edukacji formalnej w tych obcych obszarach.
Dominic Bou-Samra

+1 za „możesz mieć bardzo dobrą okazję biznesową”
Dominique McDonnell,

15

Jako projektant oprogramowania z ponad 25-letnim doświadczeniem wciąż widzę atrakcję tworzenia czegoś samemu. Wyjaśnianie rzeczy komuś niezaznajomionemu w tej branży może być ogromnym problemem.

Co jeśli baza danych nie jest znormalizowana lub mogłaby zostać przyspieszona? Wiele niekrytycznych programów (szczególnie w erze zwinności) działa zgodnie z zasadą wabi-sabi. Robi to, co musi, i nic więcej.

Proszę zauważyć, że nie każde oprogramowanie musi krzyczeć wraz z doskonałym interfejsem, błyskawicznym dostępem do bazy danych i nieskazitelnym GUI.


2
Uczciwy punkt. Nie zniechęcam go do tego pomysłu. Chcę tylko, żeby usiadł i przeczytał książkę, zrozumiał problemy i trudności związane z projektowaniem relacyjnej bazy danych, zanim zacznie coś hackować.
Dominic Bou-Samra

Hakowanie razem rozwiązania nie jest złym pomysłem. Używanie młotów do wkręcania śrub to zły pomysł w każdych okolicznościach. Musisz znać podstawy i narzędzia, aby stworzyć coś, co ma szansę działać poprawnie.
Hubert Kario

6
„Używanie młotków do wkręcania śrub to zły pomysł w każdych okolicznościach”. Nie, nie jest. Chodzi mi o to, że często nie jest ważne, aby oprogramowanie było idealne, dopóki działa. Pomysł, że pisanie oprogramowania jest jakiś inny worldy zadania, które powinny być pozostawione wyłącznie wykwalifikowanych specjalistów jest raczej prowincjonalny postawa, jeśli mogę tak powiedzieć ...
Robbie Dee

Jeśli chodzi o USA, powiedziałbym, że biorąc pod uwagę (1) ilość ingerencji rządu, (2) skomplikowane standardy otrzymywania rządowych zachęt oraz (3) konsekwencje błędów w czyjejś dokumentacji medycznej, wysoce zalecane jest pozostawienie tego dla osób, które są nie tylko wykwalifikowanymi specjalistami w dziedzinie oprogramowania, ale także specjalistą w zakresie wymagań dotyczących takich systemów.
WGroleau

8

Chodzi mi o to, że chociaż chcę, aby odniósł 100% sukcesów, nie sądzę, że powinien podejmować tego rodzaju decyzje.

Filemaker powstał jako baza danych, z której każdy mógłby korzystać, i nadal działa bardzo dobrze w tej roli. Jeśli twój ojciec wie, czego chce i czuje się swobodnie, składając to sam, o co się martwisz? Jeśli to działa tak, jak chce, wygrywa. Jeśli to nie zadziała tak, jak chce, naprawi to.

Miałbyś rację, gdyby budował bazę danych dla wszystkich lekarzy pracujących dla Kaiser Permanente, ale jeśli tylko buduje narzędzie do wykorzystania w swojej własnej praktyce, wygląda na to, że prawdopodobnie jest to właściwa osoba do obsługi tych decyzje.

Nie pozwól, aby doskonały był wrogiem dobra.


5

Radzę udawać, że to nie istnieje, bo doprowadzi cię to do szaleństwa. Mam krewnego, który zrobił coś podobnego ze swoją listą klientów, a to, co sam stworzył, to potworność. Początkowo zaoferowałem pomoc, a on pomyślał, że mój cytat (który miał sporą „rodzinną” zniżkę) był oburzający. Po przyjrzeniu mu się zasugerowałem kilka zmian, o które poprosił mnie w zamian za „kilka piw”. Rodzina czy nie, Homie tego nie gra. Powiedziałem mu, że powinien kogoś zatrudnić, ale nigdy tego nie zrobił. Musiałem po prostu całkowicie odciąć się od tego i udawać, że to nie istnieje, tylko po to, aby powstrzymać się od okropności projektu.


1
+1 „Rodzina czy nie, Homie tego nie gra”.
Smalltown2k

3

Powinieneś pozwolić mu spróbować. Powinieneś jednak uświadomić mu, że kiedy dojdzie do impasu, jest to jego problem i każdy deweloper, którego zdecyduje się zatrudnić w tym momencie, będzie musiał zacząć od zera.

Lubię hakować razem różne rzeczy, takie jak meble, a nawet hydraulika. Lubię to i nie widzę w tym nic złego. Po prostu nigdy nie odważyłbym się poprosić wykwalifikowanego rzemieślnika, aby wskoczył po mnie, kiedy utknę, po prostu dlatego, że myślę, że rzucą się na widok moich dzieł.

Pozwól więc ojcu robić to, co lubi, ale spróbuj zrozumieć ryzyko. Wyjaśnij mu, że kiedy w pewnym momencie zatrudnia wyszkolonego programistę, aby „po prostu dodał jedną małą funkcję”, to tak, jakby poprosić doświadczonych rzemieślników o „naprawienie kilku rzeczy” w domu, w którym wykonano większość instalacji elektrycznej i hydraulicznej z taśmą klejącą, folią aluminiową, plasteliną i dobrą wiarą.


2

widzi te rodzaje pracy jako „dziecinną zabawę”

Jestem konsultantem programistycznym od 4 lat

Niech twoje niepowodzenia i osobisty rozwój twojego ojca zawiodą. Odpowiedź Johna jest niezachwiana i powinieneś wspomnieć wystarczająco dużo, aby powstrzymać ojca przed niewłaściwym przyjęciem prawa, a przynajmniej tyle, by lepiej się znał. Ale cała ta „pokora” nie jest czymś, co można wykładać ludziom i oczekiwać, że się tego nauczą. To bardzo ważna lekcja życia, aby spróbować najciężej i całkowicie ponieść porażkę. Porażka jest bardzo potężnym nauczycielem. I może zyskać szacunek dla zawodu syna.

I hej, jeśli uda mu się zbudować coś, co działa wystarczająco dobrze (i nie narusza żadnych praw), tym więcej mocy dla niego.


1

To jego sprawa. A jeśli będzie zdeterminowany, sprawi, że zadziała. Wielu ludzi połączyło rozwiązania z różnych technologii, aby wszystko działało.

Wiele lat temu sprawdziłem kod mojego przyjaciela, który stworzył aplikację internetową z PHP i oprogramowaniem do tablic ogłoszeń. Dostosował go mocno do swoich potrzeb. Kod był obrzydliwością. Poza tym, że był zaledwie pierwszą normalną postacią, miał znaczniki HTML z danymi w swojej bazie danych. Bez separacji MVC. Ale niech Bóg go błogosławi. Jego aplikacja działała i był w stanie opłacić rachunki z dochodów z tej witryny.

Moja rada była dla niego następująca: jeśli jesteś zadowolony z jak najdłuższego dojenia swojej aplikacji w celu uzyskania przychodów, nie zmieniaj jej przy użyciu dobrych technik projektowania oprogramowania i pozostaw „wystarczająco dobrze” w spokoju. Jeśli chcesz rozwinąć swoją aplikację, aby oferować więcej usług i uzyskiwać większe przychody, musisz zapłacić i zmienić kod. Postanowił iść z tym pierwszym. C'est la vie.

Jeśli twój tata nie odczuwa teraz bólu związanego z powielaniem danych i słabą integralnością danych, będzie później i dopiero wtedy pozna wartość tego, co mówisz.


0

Myślę, że odpowiedź na twoje pytanie zależy głównie od tego, jak krytyczna dla jego praktyki medycznej jest ta aplikacja. Czy będzie tam przechowywać tylko niektóre dane pacjentów, które uzna za przydatne, czy też jakiekolwiek nieprawidłowe działanie tej aplikacji może mieć poważne konsekwencje? Jeśli może to mieć poważne konsekwencje, nie powinien tego robić, ale ponieważ nie żyjemy w idealnym świecie, przekonanie go, że nie jest to dobry pomysł, może być zupełnie inną sprawą.

Jako konsultant programisty sugeruję zaoferowanie mu pomocy w zakresie kontroli jakości i testowania. W ten sposób utrzymasz dobre relacje z ojcem, ponieważ „pomagasz” mu, ale jednocześnie możesz upewnić się, że jego aplikacja robi to, co powinien, lub nawet znajdzie problem, którego nie będzie w stanie rozwiązać więc będzie szukał bardziej profesjonalnego rozwiązania.

BTW Widziałem wiele okropnych aplikacji, które wykonywały swoją pracę, i żadne wyjaśnienie, dlaczego to okropne, nie przekonałoby nikogo do wprowadzenia w nim prawdziwych zmian.


0

Jako niedawno emerytowany inżynier oprogramowania dla dużego dostawcy usług zdrowotnych typu non-profit, zdecydowanie polecam poszukać szpitala lub dużej przychodni w pobliżu, która za rozsądną opłatą umożliwi mu udostępnienie elektronicznego systemu dokumentacji medycznej spełniającego wymagania inicjatywy Sensowne wykorzystanie (i inne rządowe programy motywacyjne).

Wiem, że „Epic” ( http://Epic.com ) wspiera ich klientów, umożliwiając mniejszym dostawcom udostępnianie ich systemu, i myślę, że niektórzy z ich konkurentów również to robią. Cerner jest ich największym konkurentem, ale kilka innych omówiono na stronie http://www.beckershospitalreview.com/healthcare-information-technology/50-things-to-know-about-epic-cerner-meditech-mckesson-athenahealth-and- other-major-ehr-vendors.html

CMS udostępnia 75% dotacji na tego rodzaju udostępnianie. Przekazaliśmy dotację naszym klientom, ustalając cenę subskrypcji na 25% naszych kosztów.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.