Fiche de projet de thèse

THEMATIQUE DE RECHERCHE

Incertitude diagnostique en soins primaires.

QUESTION DE RECHERCHE

Soumettre un cas clinique à la discussion collective sur le site de micro-blogging Twitter en utilisant le hashtag #Doc(s)TocToc permet-il au médecin généraliste de réduire son incertitude diagnostique en faisant progresser sa démarche diagnostique?

DESCRIPTION DU SUJET

Justification du sujet

Pourquoi ce sujet est intéressant à traiter, contexte actuel, enjeux, retombées éventuelles:

L'incertitude diagnostique est une caractéristique de la médecine générale. Elle contribue à la réalisation d'examens complémentaires parfois évitables et donc augmente le coût et la durée de la prise en charge diagnostique. Dans un contexte de sous-effectif, obtenir l'avis d'un confrère généraliste ou spécialiste prend du temps. Depuis 2012 quelques centaines de médecins échangent sur Twitter notamment au sujet de situations cliniques au stade du diagnotic. A la date du 31 décembre 2018 nous en avons recensé 673. Des travaux universitaires descriptifs ont été réalisés sur les discussions médicales marquées par le hashtag doctoctoc mais aucun n'a tenté de mesurer de manière prospective l'efficacité de ces échanges pour améliorer la démarche diagnostique en réduisant l'incertitude. Si nous réussissons à démontrer que cet outil permettant une réflexion diagnostique collective est utile et efficace, nous aurons un argument scientifique pour convaincre d'autres médecins de rejoindre le réseau. Davantage de médecins bénéficieront de l'aide de leurs confrères pour améliorer et raccourcir la prise en charge diagnostique de leurs patients.

Appuyez votre justification à l'aide de trois à cinq références bibliographiques:

  • Allison, Jeroan J., Catarina I. Kiefe, E. Francis Cook, Martha S. Gerrity, E. John Orav, and Robert Centor. “The Association of Physician Attitudes about Uncertainty and Risk Taking with Resource Use in a Medicare HMO.” Medical Decision Making 18, no. 3 (August 1998): 320–29. https://doi.org/10.1177/0272989X9801800310.
  • Salles, Adrien. “Analyse du Discours médical sur Twitter : étude d’un corpus de tweets émis par des médecins généralistes entre juin 2012 et mars 2017 et contenant le #DocTocToc.” Aix-Marseille Université, 2018.
  • Bhise, Viraj, Suja S. Rajan, Dean F. Sittig, Robert O. Morgan, Pooja Chaudhary, and Hardeep Singh. “Defining and Measuring Diagnostic Uncertainty in Medicine: A Systematic Review.” Journal of General Internal Medicine 33, no. 1 (January 2018): 103–15. https://doi.org/10.1007/s11606-017-4164-1.

Hypothèse

Formulez une ou des hypothèses qui répondent clairement par une affirmation à la question de recherche précédemment rédigée (Dans la cas d'une étude avec méthodologie qualitative ne pas remplir cette cartouche, mais soyez vigilant un grand nombre d'entre vous pense à tord utiliser une méthodologie qualitative). En cas de méthodologie quantitative si cette cartouche n'est pas remplie votre fiche sera systématiquement invalidée.

Pour le médecine généraliste, soumettre un cas clinique à l'analyse de ses confrères généralistes et spécialistes via le site de micro-blogging Twitter en utilisant le mot-dièse (hashtag) #Doc(s)TocToc permet une diminution de l'incertitude diagnostique calculée comme la diminution relative de l'entropie des distributions des probabilités subjectives des différents diagnostics différentiels évoqués par le praticien, relevés avant et après le début de la discussion collective. La diminution relative de l'entropie (pré-test et postè-test) est une représentation quantitative du gain d'information acquis grace à l'intervention (la conversation collective), cette dernière étant considérée comme 1 test diagnostic.

Appuyez votre hypothèse à l'aide de trois à cinq références bibliographiques:

  • Benish, William A. “Relative Entropy as a Measure of Diagnostic Information.” Medical Decision Making 19, no. 2 (April 1999): 202–6. https://doi.org/10.1177/0272989X9901900211.
  • Diamond, G. A., M. Hirsch, J. S. Forrester, H. M. Staniloff, R. Vas, S. W. Halpern, and H. J. Swan. “Application of Information Theory to Clinical Diagnostic Testing. The Electrocardiographic Stress Test.” Circulation 63, no. 4 (April 1981): 915–21.
  • Ranard, Benjamin L., Yoonhee P. Ha, Zachary F. Meisel, David A. Asch, Shawndra S. Hill, Lance B. Becker, Anne K. Seymour, and Raina M. Merchant. “Crowdsourcing--Harnessing the Masses to Advance Health and Medicine, a Systematic Review.” Journal of General Internal Medicine 29, no. 1 (January 2014): 187–203. https://doi.org/10.1007/s11606-013-2536-8.

Objectif

Votre objectif doit être formulé en des termes précis et concrets

Démontrer quantitativement et prospectivement, avec le niveau de preuve le plus élevé possible compte tenu du type d'intervention et de l'objet mesuré, l'efficacité d'une discussion diagnostique collective pour réduire l'incertitude diagnostique en médecine générale. L'objectif principal sera de démontrer un gain significatif d'information entre t0 et t1 pour le groupe intervention par rapport au groupe témoin. L'objectif secondaire sera de démontrer un rattrapage significatif du gain d'information du groupe témoin après son crossover programmé vers l'intervention.

Matériel et méthode

Quels outils méthodologiques allez-vous utiliser ? Décrivez également le déroulement du travail:

Il s'agit d'1 étude quantitative prospective avec 1 bras intervention et un bras contrôle (intervention différée). Les médecins généralistes sont recrutés automatiquement par 1 logiciel qui contrôle 1 compte Twitter (@DocTocTocBot) suivi par 1852 utilisateurs du réseau social, en majorité de professionnels de santé et parmi eux des médecins généralistes. Les professionnels de santé qui modèrent volontairement les comptes qui verront leurs questions marquées par le hashtag #DocTocToc être retweetées ont déjà vérifié la qualité de médecin de 697 utilisateurs. Quand un utilisateur dont la qualité de médecin a été vérifiée poste une question marquée par le hashtag, il recoit automatiquement une demande de participation à l'étude via message privé (s'il suit le compte @DocTocToc ou si il a choisi de recevoir des messages privés de tous les utilisateurs) ou via la partie publique du site, comportant 1 lien vers 1 descriptif du protocole de l'étude et l'invitant à suivre le compte pour pouvoir recevoir des messages privés. Le médecin qui accepte de participer recoit 2 questions: 1 question confirmant son statut de médecin et 1 question confirmant que sa question porte sur 1 diagnostic clinique d'un de ses patients. Il recoit également la consigne de ne pas lire les réponses à sa question qui pourraient arriver avant le début du protocole. Si les 2 réponses sont positives, le couple médecin/question est automatiquement randomisé soit dans le bras intervention, soit dans le groupe témoin (intervention différée). Le médecin qui est randomisé dans le groupe intervention recoit un lien personnalisé vers une page du site these.doctoctoc.net où il est invité à lister immédiatement les diagnostics qu'il considère (en texte libre) ainsi que leur probabilité subjective (notées en pourcentage de 0% à 100%, correspondant aux probabilités de 0 à 1, ou une probabilité de 0 représente 1 diagnostic considéré comme impossible, et 1, la probabilité d'1 diagnostic certain. Ce médecin recevra à nouveau 1 invitation identique à lister les diagnostics qu'il considère ainsi que leur probabilités subjectives à t1 et t2. t1 et t2 seront déterminés statistiquement et retrospectivement sur le corpus des questions DocTocToc posées depuis 2012 comme le temps moyen observé nécessaire pour obtenir 50% des réponses (t1) et 95% des réponses (t2). Pour t1 et t2, il aura à sa disposition la liste précédente des diagnostics sous forme d'étiquettes non modifiables qu'il pourra glisser-déposer, afin de permette d'identifier les diagnostics identiques entre t0, t1 et t2 et se mettre à l'abris d'une erreur de frappe ou d'une variation orthographique. Il n'y aura pas de limite imposée au nombre de diagnostics différentiels enregistrables, mis à part 1 limite technique fixée à 100. Le médecin randomisé dans le groupe témoin sera invité à effacer immédiatement sa question puis à répondre au même questionnaire que le groupe intervention. La question qu'il a posée sera affichée dans ses message privé visible uniquement par lui. Le robot Twitter se chargera de poster automatiquement sa question au bout d'un temps équivalent au délais entre t0 et t1 dans le groupe intervention. En cas d'impossibilité technique ou selon la préférence personnelle du médecin, il pourra reposter lui-même sa question après le délai de rigueur et après avoir répondu une 2ème fois questionnaire (t1). Il répondra une 3ème fois au questionnaire au bout d'un délai identique.

Le gain d'information (et donc la diminution de l'incertitude) sera mesurée via le calcul de la distance de Kullback-Leibler (entropie relative D(Post|Pre) entre les distributions des probabilités subjectives à t0 et t1 comparée à celle du groupe témoin (moyenne des différences D intervention - D temoin), exprimées en bits d'information. Un gain de 0.2 bits sera considéré comme significatif (et comparable à certains tests diagnostics réputés efficaces et standards) et permettra de rejeter l'hypothèse nulle.

Follow-up

Duration

Suggestion from BMJ Evidence-Based Medicine, in "A new arrival: evidence about differential diagnosis"[1]

For ≥80% of those patients evaluated, either the diagnoses must be established (by appropriate investigation), or to minimise missed diagnoses, there must be a follow up of ≥1 month for acute disorders and ≥1 year for chronic or recurring disorders.
[1] Richardson WS, Glasziou P, Polashenski WA, et al A new arrival: evidence about differential diagnosis BMJ Evidence-Based Medicine 2000;5:164-165. Link.

Database

Database

I haven't been posting during the last few weeks because I was busy improving my database skills. I never really pushed very deep into SQL or relational algebra before. Relational algebra is the theoretical stuff upon which RDBMS (Relational Database Management Systems) are built.

The projects I've worked on already had a stable ORM (Object Relational Mapper).

I used Stanford's "Databases" MOOC by Jennifer Widom. It's free and it's brilliant. I recommend it to every dev who, like me, didn't any have formal CS education.

Then I had to find and learn an ORM for Python. I chose SQLAlchemy and followed the introductory course "Introduction to SQLAlchemy" presented at PyCOn 2013. Links to video, slides and prerequisite material are on the tutorials page of sqlalchemy.org. The prerequisite material contains instructions to use interactive Python slides (sliderepl): half slides, half interactive Python shell where you can try your own commands and do the embedded exercises. You can also get it from https://github.com/tony/introduction_to_sqlalchemy.

Now I am ready to embark on the next step: retrieving all conversation trees from Twitter's database and storing the tree structure efficiently in Postgres for fast retrieval. Each conversation tree must be displayed near instantaneously for crowdsourced analysis. Physician's time is a scarce and precious resource.

Classification

Classify status

Clinical

diagnosis

Question related to diagnosis.

  • clinical description asking for diagnosis
  • question pertaining to best diagnostic tests to confirm given differential
therapy

Determination of appropriate therapy for a problem already diagnosed.

Non clinical

practical advice

Conversation

Jupyter notebook source on GitHub: conversation.ipynb

Conversations on Twitter: Before and after July 6th 2012

According to a blog post by Bob Leggitt "With older conversations, there won’t be any connectivity on Twitter between the different components of the dialogue. Originally, there was no such thing as an @reply or @mention, and for a long time after the function was introduced, the site did not formally link a reply to a ‘parent tweet’. In fact, nothing prior to 6th July 2012 will link together the dialogue components."

First #doc(s)toctoc was on 2012-06-06.

List of status before 2012-07-06 (included):

23 status (from 210290960695959553 to 221152797289226241):

221152797289226241 221142366302642176 220773627438694400 220555448007397376 219708917700247554 218635541023956992 218621627158642688 218295811006676992 217871430564577281 217660388374880256 217517250763165697 216418177138167808 216230683201372160 216114884105084928 215359264812838912 215353726960017409 215005937742782464 215005696280895489 214992412496498689 212504641613729792 211040882802163713 210419080203747329 210290960695959553

get conversation tree from question

Each #d status with a reply_count > 0 is the start of a diagnostic conversation tree.

reply_count

  • Not available in the standard dev API
  • Available from TweetScraper
  • dataset/replycount.py
  • nota bene: reply count number includes only direct answers to the original tweet, not self answers (thread), not answers to answers.

Standard (free of charge) Twitter API doesn't allow to get all responses to a specific status.

2 methods to route around this limitation:

Brute force collection of conversation
  1. Use TweetScraper
  2. Search all replies to the user who posted the question status after a certain date and time
  3. We need to filter those answers with "in_reply_to_status_id" but this field is not present in the json object obtained with TweetScraper...
  4. Get the full Twitter object with the standard API
  5. store those objects in database to save API throttling and speed up the process for further lookup
  6. filter all collected answers with status["in_reply_to_status_id"] == status_id
  7. if true add to the corpus database
  8. repeat the process recursively for each answer with not null reply_count

Original tweet is 1st doc(s)toctoc tweet posted on 2012-06-06: https://twitter.com/DrKoibo/status/210290960695959553 Request is "to:DrKoibo since:2012-06-06"

# using pipenv
pipenv run scrapy crawl TweetScraper -a query="to:DrKoibo since:2012-06-06"

returns 8111 status (as of 2018-03-29)

Collect conversation through web API

Treeverse is a Chromium extension coded in TypeScript that can visualize a conversation as a tree. It is reconstituting a conversation tree by parsing the HTML answer to https://twitter.com/${this.username}/status/${this.id} We could write a Python parser based on urllib to reconstitute the conversation tree and feed it to our Django mptt table. This parser should use @doctoctocbot credentials as many users have made their account private.

username change

scrapers use user_name, which can vary across time. Method to look for old user_names: https://twirpz.wordpress.com/2015/06/16/how-to-find-twitter-users-previous-usernames/

Update conversation trees

  • use TweetScraper to collect all doc(s)toctoc status
  • compare current and previous "nbr_reply" int value: if(present.nbr_reply > past.nbr_reply) -> rebuild conversation tree (without deleting anything)

Database structure

  • PostgreSQL