Python×医療事務(×トロント)

#医療 / #医療事務 / #IT / #トロント / #歯科助手 / #のんびり / #備忘録 / #趣味

電子カルテ 開発 事前準備 ②

はじめに

前回の続きです

機械学習を搭載している電子カルテを作成していくにあたって調べています

chocolate22554.hatenablog.com

 

内容

いくつか参考記事があったのだが 先にGitでリポジトリ公開されており、チュートリアルもあり、わかりやすい記事があった MedCATから

towardsdatascience.com

この方は大規模なサーバーやインフラなしでMedCATというGitで公開されている電子カルテ MedCATを元に進めていく模様

   GitHub - CogStack/MedCAT: Medical Concept Annotation Tool 

 

 

いろんな病院のEHR(Electronic Health Record  電子カルテの略)のデータ

Google Health unveils EHR data aggregation tool for clinicians

Amazon Comprehend Medical | AWS

(下記からは自分なりに英語を意訳したもの 和訳すると違う意味だがなんとなくで訳してまとめている)

 MedCAT   チュートリアルの全体像

  1. Introduction — 

    GitHub - CogStack/MedCATtutorials: General tutorials for the setup and use of MedCAT.

  2. Dataset Analysis and Preparation — データ分析と準備
    ML projectについて、  データセットについて, 事前処理テキスト、モデリングを始める前にするすべてのこと
  3. Extracting Diseases from Electronic Health Records 電子カルテから疾患の抽出
     MedCAT のライブラリ(python)、固有表現認識(テキストから人名、日付等の固有表表現を抽出するタスク            

    アノテートされたデータがないドメインで固有表現認識!?https://ai-scholar.tech › ner-weak-supervision        )  
     ,
    医学概念(medical concepts)とつなげる。
    <MEDCATをどのように使いたいを知るなら この3番で十分ということ
  4. Analysing the Results
    中級・上級レベルのMedCAT ライブラリの部分   
    NER+L & MetaAnnotations のための完璧なパイプラインを構築する方法
    <Meta 使っていくんですね
  5. Analysing the Results — 分析の結果
    電子カルテから該当部分を抽出できたかどうかみていく
  6. Other Tools and Functions of the MedCAT library-----MedCATライブラリの 他のツールと機能
    (ICD10 codes

    International Classification of Diseases (ICD)


    , SNOMED CT) & What to expect in the Future

    SNOMED CT - Wikipedia

     



    https://www.jstage.jst.go.jp/article/johokanri/51/4/51_4_243/_pdf

記事内で電子カルテの記録はフリーテキストというのを何回か伝えているのですが、

電子カルテ記録の例で英語バージョンですが ぐしゃぐしゃしてますね

電子カルテはまだ形式化されているのでいいですが、紙カルテは筆跡等違うので読解が困難をきたします

自然言語処理(該当文書をどのように分けるか等色々な方法がある)

Natural Language Processing (NLP) as Named Entity Detection and Linking (NER+L)

NERは医療用語の該当箇所を分ける

NER means detecting the entity in the text

 

バイオメディカル(生物医療)のデータベースと照合させる

おそらく日本で言う 区分番号と NERで区分した 医療用語やテキスト自体を照合させ 本当に正しいか 漏れがないかを確認する

UMLSがデータが一番多いようでここではそれを使うようです

 

L means linking the recognised entity to a concept in a biomedical database

医療単語とデータベースを照合させる作業の部分はとても大事で、なぜかというと同じ様な意味を持っている単語をまとめることができるからということ。この作業がなければ例えば何人の患者さんが心臓病を持っているか 正確に数えることが難しくなるということ

The linking part is essential because it allows us to standardise and organize the detected entities, as multiple recognised entities can link to the same medical concept in a biomedical database. For example, in an EHR we can have:

 

例でいうと下記 太字の単語はすべて心臓病を指す

  • The patient was diagnosed with malignant neoplasm of breast
  • Previous medical history includes breast cancer
  • Reason for admission: breast CA
  •  

The dataset — MIMIC-III

It includes clinical notes, demographics, vital signs, laboratory tests and more

使うには申請が必要なよう、何日かで承諾されるらしい

The dataset can not be downloaded directly, but one needs tosubmit a request  first

Environment setup (if running locally)

ローカル環境で使う場合↑

主にpythonを扱う  Rを使うかもしれないし 少し補助的にJavascriptを使うと助かるかもしれないということ。

pythonは3.5以上のverであれば使えるということ

下記を行っているがvenvでなくて、Anaconda のcondaを仮想環境として使うで良さそう

$ python3 -m venv medcat

 

chocolate22554.hatenablog.com

 

まとめ

先に触れたチュートリアル 1〜5の中身が内容が充実してそうなのでもっと紐解きたいが、一旦ここまでにして次に移ります

データセットの部分等 日本でいうとどれが当てはまるか調べる必要がありそうです

必要あれば 更に記事内容を追加していく予定