★こちら下記のURL様にとても助けていただきました
http://www.resept.com/BENKYOKAI/reseptseminartext2013.pdf
https://www.ssk.or.jp/seikyushiharai/rezept/iryokikan/iryokikan_02.files/jiki_i01.pdf
https://bijicom.co.jp/karte-equipments
KO⇛公費レコード
公費情報。負担者・受給者番号。
IR
<医療機関情報レコード : 医療機関コード 医療機関名称 点数表コード(医科、歯科・・・)
請求年月日 等>,1,01,1,0710696,,病院名,202103,00,011-700-2233
RE
<レセプト共通レコード :1つのレセプトに対する共通情報。主に患者情報を記載(氏名、性別、生年月日など)、レセプト番号(このデータ内の連番)
>
●RE(レセプト共通)
RE,55<厚生労働病院にこの月提出された 55 番目 のレセプト>,1116<レセプト種別(医科・医保単独・家族・入院外)>,41711<平成 17 年 11 月診療分>,樋口 一葉(姓名間に空 白挿入),2<女(2)、男(1)>,3220725<昭和 22 年 7 月 25 日生>,,,,,,199<199 床病院>,1116 55,,,,01 とは,,
RE,レセプト番号,レセプト種別,診療年月,氏名,性,生年月日,給付割合,入院年月日,病棟区分,一部負担金,特記事項, 病床数,カルテ番号(14番目),割引単価,予備,予備,個別診療科(基金と協議の上,必要に応じ診療科コードを記録)
HO
<保険者レコード:保険者情報を記載。保険者番号、保険証の記号・番号),01010016<保険者番号>,25370741<保険証の記号>,29,1,907,,,,,,,,,<保険証の番号>
SY
<傷病名レコード:傷病名情報。傷病名コード、診療開始日、転記区分 等。
>,3671002,20210120,1,,,01,
SY<傷病名レコード
>,8847607,20210120,1,2049,,,
SY<傷病名レコード
>,3628025,20210120,1,,,,
S Y , 2 5 0 0 0 1 4<1 型 糖 尿 病> , 4 1 7 1 0 0 5<平 成 1 7 年 1 0 月 5 日 診 療 開 始> , 1 <転 帰 は 継 続 ( 1 ) >, 8 0 0 2<修 飾 語 は「 疑 い(8002)> , ,
SY,傷病名コード,診療開始日,転帰修飾語コード,傷病名称,主傷病
SI
<診療行為レコード:診療識別・行為コード、数量、点数、算定日1-31日の情報 等
>,12,1,112007410,,,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,
SI,,1,112015770,,74,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,
SI,60,1,160081610,,112,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,
SI,60,1,160081130,,112,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,
SI,60,1,160081550,,400,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,
SI,12<診療識別 12(再診)>,1<負担区分 1(医療保険のみ)>,112007410<診療行為コード 112007410(再診(病 院))>,,58<58 点>,1 <1 回>
IY
<医薬品レコード
診療識別コード、医薬品コード、使用量、点数、算定日1-31日の情報 等。
>,60,1,620005210,1,,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,
IY,,1,643310225,1,127,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,
SI,80,1,199000610,,7,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,
SI,80,1,120002910,,68,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,
SI,80,1,120004270,,7,1,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,
IY,21<診療識別 21(内服)>,1,610443013<医薬品コード 610443013(リピトール錠 5mg)>,2.000<2 錠
>,16< 16 点>,56 <56 回>
特定材料(TO),コメント(CO)の4レコード識別は合わせて摘要欄情
レセプトデータの中のレコード識別はアルファベット2文字で表されるが,マスターファイルはアルファベ ット一文字で表される点に留意。B(ビ)はビョウメイ,Y はヤクザイ
マスタについて
電子点数表
https://www.ssk.or.jp/seikyushiharai/tensuhyo/ikashika/index.files/tensuhyo_01.pdf
(社会保険表章用疾病分類(内容例示表・索引表) [1,236KB]
https://www.mhlw.go.jp/stf/seisakunitsuite/bunya/kenkou_iryou/iryouhoken/database/hokensippei.html)
<レセプト共通レコード :1つのレセプトに対する共通情報。主に患者情報を記載(氏名、性別、生年月日など)、レセプト番号(このデータ内の連番)
>
●RE(レセプト共通)
RE,55<厚生労働病院にこの月提出された 55 番目 のレセプト>,1116<レセプト種別(医科・医保単独・家族・入院外)>,41711<平成 17 年 11 月診療分>,樋口 一葉(姓名間に空 白挿入),2<女(2)、男(1)>,3220725<昭和 22 年 7 月 25 日生>,,,,,,199<199 床病院>,1116 55,,,,01 とは,,
RE,レセプト番号,レセプト種別,診療年月,氏名,性,生年月日,給付割合,入院年月日,病棟区分,一部負担金,特記事項, 病床数,カルテ番号,割引単価,予備,予備,個別診療科(基金と協議の上,必要に応じ診療科コードを記録)
===診療行為マスタについて===
shinryohoshu.mhlw.go.jp
マスタ CSVファイル形式
医科診療行為マスター|社会保険診療報酬支払基金
SI
A000-00 |
初診料 |
288点 |
令和2年4月1日 |
111000110 |
A000-00 |
乳幼児加算(初診) |
75点 |
令和2年4月1日 |
111000370 |
A000-00 |
時間外加算(初診) |
85点 |
令和2年4月1日 |
111000570 |
A000-00 |
休日加算(初診) |
250点 |
令和2年4月1日 |
111000670 |
A000-00 |
乳幼児時間外加算(初診) |
200点 |
令和2年4月1日 |
111011970 |
A000-00 |
乳幼児休日加算(初診) |
365点 |
令和2年4月1日 |
111012070 |
A000-00 |
夜間・早朝等加算(初診) |
50点 |
令和2年4月1日 |
111012470 |
区分番号 |
診療行為名称 |
点数 |
施行日 |
請求コード |
D256-02 |
眼底三次元画像解析 |
200点 |
令和2年4月1日 |
160183310 |
SY
=====
①マスク化について
CSVのマスク化あると思うがMAC用、見つからず とりあえず手作業で「RE」検索 行にある 患者様の名前を消していった(カルテ番号があるので名前なくても判別できる)
②padasを利用
データの確認や加工が簡単になるpandas形式で読み込むのがスタンダード
レセプトUKEファイルはCSVなので .read_csv() 関数 (タブ区切りの場合は read_table())
CSVファイルについて==
CSV編成ファイルのファイル編成とレコード形式
またExcelと比べ互換性が高い
「,」で区切られている
Comma Separated Valueの略で、Comma(カンマ)で Separated (区切った)Value(値)
CSVファイルとは パソコン初心者講座
CSVファイルフォーマットの解説:CodeZine(コードジン)
====
===
www.tutimogura.com
彷徨いましたが上記サイト様で解決しました
✔'utf-8' でなくshift-jisで
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x90 in position 19: invalid start byte
今回は 斜視病名がある際に 輻輳を算定しているかをt
from os import O_EXLOCK
import pandas as pd
import numpy as np
#f = pd.read_csv('RECEIPTC.UKE', 'r', encoding="shift-jis")
f=open("/Users/○○/△△/pandas カルテチェッカー/RECEIPTC.UKE", encoding="shift-jis")
syasi=3789001
Fukusou=160083810
にて、REが先頭にきている 行のみ出力される
だと 該当の「160083810」が含まれる行すべて(7個)出力される
#if SY(病名)列 に3789001(斜視)がある
print(line)
or
print(s.find(3))
任意の文字列の位置を取得
for line in f:
#if SY(病名)列 に3789001(斜視)がある
print(line.find(10))
これだと何も出力されない
for line in f:
#if SY(病名)列 に3789001(斜視)がある
if line.split("RE"):
if ("SY"and"3789001")in line:
if("SI"and"160083810")in line:
#RE で区切る +名前を出す(カタカナ)
Ra = ("RE") in line
print(Ra.find(10))
===== その他諸々============================
pandasで特定の文字列を含む行を抽出(完全一致、部分一致) | note.nkmk.me
pandas.Series
の文字列メソッドstr.contains()
を使うと、要素が特定の文字列を含むとTrue
となるpandas.Series
を取得
print(df['name'].str.contains('li'))
# 0 True
# 1 False
# 2 True
# Name: name, dtype: bool
print(df[df['name'].str.contains('li')])
# name age state point
# 0 Alice 24 NY 64
# 2 Charlie 18 CA 70
pandas.Series
の文字列メソッドstr.startswith()
を使うと、要素が特定の文字列で始まるとTrue
となるpandas.Series
を取得
print(df['name'].str.startswith('B'))
# 0 False
# 1 True
# 2 False
# Name: name, dtype: bool
print(df[df['name'].str.startswith('B')])
# name age state point
❌
pandasで任意の位置の値を取得・変更するat, iat, loc, iloc | note.nkmk.me
df[]
で行・列を選択できるが、以下の指定方法に限られる。
- 行の選択 : 行名・行番号のスライス
- 列の選択 : 列名、または、列名のリスト
print(df['Bob':'Ellen'])
# age state point
# name
# Bob 20 CA 92
# Charlie 30 CA 70
# Dave 40 TX 70
# Ellen 24 CA 88
print(df[:3])
# age state point
# name
# Alice 24 NY 64
# Bob 20 CA 92
# Charlie 30 CA 70
print(df['age'])
# name
# Alice 24
# Bob 20
# Charlie 30
# Dave 40
# Ellen 24
# Frank 30
# Name: age, dtype: int64
print(df[['age', 'point']])
# age point
# name
# Alice 24 64
# Bob 20 92
# Charlie 30 70
# Dave 40 70
# Ellen 24 88
# Frank 30 57
import numpy as np
import scipy as sp
from pandas import Series, DataFrame
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mlp
import seaborn as sns
import sklearn
mydata = pd.read_csv('sample.csv')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x90 in position 0: invalid start byte
PythonでCSVファイルの読み込み時、UnicodeDecodeErrorによるエラー【初心者向け】 - Qiita
↓, encoding="shift-jis" をつける
pandas.errors.ParserError: Error tokenizing data. C error: Expected 38 fields in line 10, saw 44
↓
pandasでread_csv時にUnicodeDecodeErrorが起きた時の対処 (pd.read_table()) - Qiita
↓
with codecs.open("sample.csv",sep=",",header=0 ,dtype = 'object', "r", "Shift-JIS", "ignore") as file:
SyntaxError: positional argument follows keyword argument
<テキストエディタにて>
with codecs.open("sample.csv",sep=",",header=0 ,dtype = 'object', "r", "Shift-JIS", "ignore") as file:
df = pd.read_table(file, delimiter=",")
print(df)
↓
File "1.py", line 23, in <module>
with codecs.open("sample.csv", "r", "Shift-JIS", "ignore") as file:
NameError: name 'codecs' is not defined
と
with codecs.open("sample.csv",sep=",",header=0 ,dtype = 'object', "Shift-JIS", "ignore") as file:
^
SyntaxError: positional argument follows keyword argument
<わかりやすい→>【Python】pandasでCSV/TSVファイルを読み込む方法
ValueError: header must be integer or list of integers
↓
pandasでデータを読み込むときに気を付けること(dtypeの指定) - Qiita
dtypeに何も指定せずにいると、勝手に型を判別 そのため指定する
dtype = 'object'
テキストエディタにて 下記コード記載 「1.py」という名前をつけ コマンドにて python 1.py で実行
import pandas as pd
import numpy as np
import csv
# ファイルを読み込みモードでオープン
with open('RECEIPTC.UKE', 'r') as f:
reader = csv.reader(f) # readerオブジェクトを作成
# 行ごとのリストを処理する
for row in reader:
print ' '.join(row) # 1行ずつスペース区切りで表示
<join
関数では複数のDataFrame(またはSeries)を結合することが可能
指定した軸の方向にDataFrameを結合するPandasのconcat関数の使い方 - DeepAge
docs.python.org
>
PythonでCSVファイルの読み込み・書き込みを行う方法 | UX MILK
↓
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x90 in position 19: invalid start byte
encoding="shift-jis" を追加した
PythonでCSVファイルの読み込み時、UnicodeDecodeErrorによるエラー【初心者向け】 - Qiita
出来た!
==CSVの読み込みとprint 全体コード====
import pandas as pd
import numpy as np
import csv
# ファイルを読み込みモードでオープン
with open('RECEIPTC.UKE', 'r', encoding="shift-jis") as f:
reader = csv.reader(f) # readerオブジェクトを作成
# 行ごとのリストを処理する
for row in reader:
print(' '.join(row)) # 1行ずつスペース区切りで表示
========
herok またtry
flaskまたtry
jkavascript必要あればtry
「レセプトまるみえ君」の誕生|レセプトまるみえ君ブログ|note
javascript
でファイルの読み込み、個人情報をマスクする処理、サーバーに送る、までやります。患者の保険情報、名前、クリニックの名称、電話番号、医療機関コードは消去してから送ら
ログインの機能と辞書ファイルをサーバーに置くために、データをサーバーに送っています。ただし、サーバーのデータベースには保存しないようになっています
マスターから作った辞書を使って傷病名、修飾語、診療行為、のコードを翻訳します。そして、ブラウザに送り返します。サーバーは heroku で PaaS
python, flask
受け取ったデータは javascript で使いやすく並べて、表示
CSVをドラッグ&ドロップ
https://www.google.com/search?q=CSV%E3%82%92%E3%83%89%E3%83%A9%E3%83%83%E3%82%B0%EF%BC%86%E3%83%89%E3%83%AD%E3%83%83%E3%83%97&client=ms-android-kddi-jp&sourceid=chrome-mobile&ie=UTF-8
◎ CSVファイルをドラッグ&ドロップでデータをtable表示 ...https://tokidoki-web.com › 2017/06 › csvファイルをドラ...
(【Javascript】ドラッグ&ドロップでCSVを読み込む | Local Biashttps://localbias.work › プログラミング › Javascript)
If
Print
If
Print
を繰返しコード文、書きまくる
行・列・要素を取得
マスターしよう!PythonでのCSVファイル操作方法を徹底解説! | TechTeacher Blog
③ データの整形(データ型変更、列名変更、並び替えなど)
- df.set_index()
- df.rename()
- df.sort_values()
- df.to_datetime()
- df.sort_index()
- df.resample()
- df.apply()
- pd.cut()
# datetime列をindexにする
④ データの欠損状態の確認
print(row.isnull().sum()) 付け加えると
↓
AttributeError: 'list' object has no attribute 'isnull'
'list'オブジェクトは 'isnull'属性を持っていない となる
そのままスルーする
⑤ 値(欠損)の置き換えや削除
- df.fillna()
- df.dropna()
- df.replace()
- df.mask()
- df.drop()
⑥ 集計
- df.value_counts()
- df.groupby()
- df.diff()
- df.rolling()
- df.pct_change()
for row in reader:
##print(' '.join(row)) # 1行ずつスペース区切りで表示
#print(row.isnull().sum())
#print(row.isnull())
#print(reader[reader.isnull().any(axis=1)].shape)
kazu= pd(row.groupby('SI' and 'SY').count())
#kazu2=pd.kazu
print(kazu)
↓
AttributeError: 'list' object has no attribute 'groupby'
一旦スルー
⑦ 可視化
- df.plot()
- df.corr()
- df.pivot()
⑨ 最後に、出来たデータをもう一度眺める
データ分析で頻出のPandas基本操作 - Qiita
https://www.itmedia.co.jp/news/spv/2105/26/news087.html
文章をプログラミング言語に変換 Microsoftがローコード開発ツール「Power Apps」に「GPT-3」活用
Microsoft、自社製RPAツールhttps://www.itmedia.co.jp/news/spv/2103/03/news096.html
===電子カルテ(EMR)等のオープンソースについて=========
##電子カルテ=EMR
今まで検索で電子カルテで調べることが多かったのですが「電子カルテ」と検索すると電子カルテの広告エンジンに引っかかるのか同じような電子カルテの広告や電子カルテの宣伝ばかり出てきました
最近 英語で調べる機会があり 電子カルテは英語でelectronic medical recordといい略称で EMRというようです
EMRで調べてみると英語のサイトがいっぱい出てきました
#英語の記事
オープンソース健康医療ソフトウェアのリスト
どちらも同じものかな?
英語バージョンはリスト化されており見やすい
しかし英語バージョンを日本語訳に変更すると同じような記事になるので同じ記事と思われる(まだ詳しく見れていない)
↓
* 日本語バージョン
ja.m.wikipedia.org
* 英語バージョン
en.m.wikipedia.org
http://bots.sourceforge.net/en/index.shtml
http://www.cottagemed.org/cottage-med/
あまり関係ない&詳しく読めてないですが電子カルテで使われているコード等・仕組みについて記載されていると思われます
レセプトデータ作成の際にUKEファイルが作られます
そのUKEファイルをテキストエディタ等でコードを読み解きます。その際のコードを読み解くのですがそれらのことを海外版で記載しているのかなと思われる
それ以外も記載していると思われる
↓
* Feature Engineering of Electronic Medical Records | by Jill Cates | Medium
Medical Free/Libre and Open Source Software
オープンソース健康医療ソフトウェアのリスト と重なるソフトもあると思うがpythonに絞って表示されていると思われる
↓
www.medfloss.org
Python × EHR は良い組み合わせだよね!デザイン性にもいいし!等記載がある
どのような観点が問題か等 主観?で記載しているイメージ
今後参考になるかな?
↓
Site Offline
電子カルテの仕組みがアバウトに分かる
英語でおおよそ読んでわからない単語を調べるだけでも勉強になった
www.quora.com
↓
HIPAA(Health Insurance Portability and
Accountability Act of 1996;
* 米国のHIPAA法における 個人情報等の保護に関する規定
* 医療保険の携行性. と責任に関する法律
HL7
FHIR
http://www.hl7.jp/docs/69seminar_2_HL7.pdf
M/MUMPS
アプリケーション開発手法としてMUMPS/M言語そのものは医療業界以外に広く普及しなかった。
MUMPS - Wikipedia
__↓____________________
Caché(キャシエ)
MUMPSベースのデータベース管理システム
主な顧客はアメリカの大病院が多く、電子カルテ (EMR) システムをCachéで実現
Cache - Wikipedia
RESTful API(REST API)
Webシステムを外部から利用するためのプログラムの呼び出し規約
qiita.com
qiita.com
XML/JSON APIから新しいREST APIへ
help.zoho.com
WebAPI
developer.ntt.com
_______________________
OLAP database
OLAP database - Google 検索
無償トレーニング
https://education.oracle.com/learning-explorer#startLearning
OLAP分析 DWH OLTP BIツール
yellowfin.co.jp
5NF 第5正規形
===================================
参考になるか?
pythonでのcsvファイルの読み込み - Qiita
自動採点のTips :: Jun Nishii
[Python]CSVに保存したワイン1600本分のデータを使ってDeepLearingを実装 - Qiita
====
===========
Streamlit を用いたデータ分析アプリ制作 - Qiita
https://www.salesanalytics.co.jp/datascience/datascience017/
#SI(診療行為)列 「160083810(精密眼筋及び輻輳)
("SI"and"160083810")in line):
print(line,line.split("RE"
#SI(診療行為)列 「160083810(精密眼筋及び輻輳)
(("SI"and"160083810")in line
#RE で区切る +名前を出す(カタカナ)
(line.split("RE"