画面共有 mac

ORCA / web API / python / 情報の取り出し

# libraryのimport
import requests
from requests.auth import HTTPBasicAuth
import pandas as pd
# # BASIC認証 webAPIにrequest
res = requests.get('http://ip-address:8000/api01rv2/patientgetv2?id=36817&format=json', auth=HTTPBasicAuth('id', 'pw'))
res.json()
{'patientinfores': {'Information_Date': '2021-10-11',
  'Information_Time': '16:58:35',
  'Api_Result': '00',
  'Api_Result_Message': '処理終了',
  'Reskey': 'Patient Info',
  'Patient_Information': {'Patient_ID': '0036817',
   'WholeName': '日医\u3000太郎',
   'WholeName_inKana': 'ニチイ\u3000タロウ',
   'BirthDate': '1948-03-27',
   'Sex': '1',
   'HouseHolder_WholeName': 'ニチイ',
   'Home_Address_Information': {'Address_ZipCode': '9493333',
    'WholeAddress1': '上越市〇〇区××',
    'WholeAddress2': '283−2',
    'PhoneNumber1': '025-555-9999',
    'PhoneNumber2': '090-4444-1111'},
   'Comment1': 'H27.01.13来院',
   'TestPatient_Flag': '0',
   'Reduction_Reason': '00',
   'Reduction_Reason_Name': '該当なし',
   'Discount': '00',
   'Discount_Name': '該当なし',
   'Condition1': '00',
   'Condition1_Name': '該当なし',
   'Condition2': '00',
   'Condition2_Name': '該当なし',
   'Condition3': '00',
   'Condition3_Name': '該当なし',
   'Ic_Code': '01',
   'Ic_Code_Name': '現金',
   'Community_Cid_Agree': 'False',
   'FirstVisit_Date': '2015-03-10',
   'LastVisit_Date': '2021-10-05',
   'HealthInsurance_Information': [{'Insurance_Combination_Number': '0003',
     'InsuranceCombination_Rate_Admission': '0.20',
     'InsuranceCombination_Rate_Outpatient': '0.20',
     'Insurance_Nondisplay': 'N',
     'InsuranceProvider_Class': '060',
     'InsuranceProvider_Number': '150037',
     'InsuranceProvider_WholeName': '国保',
     'HealthInsuredPerson_Symbol': '〇〇',
     'HealthInsuredPerson_Number': '35000000',
     'HealthInsuredPerson_Branch_Number': '06',
     'HealthInsuredPerson_Assistance': '2',
     'HealthInsuredPerson_Assistance_Name': '2割',
     'RelationToInsuredPerson': '2',
     'HealthInsuredPerson_WholeName': '日医\u3000太郎',
     'Certificate_StartDate': '2021-08-10',
     'Certificate_ExpiredDate': '2022-07-31',
     'Certificate_GetDate': '2021-08-01',
     'Insurance_CheckDate': '2021-08-10'},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {},
    {}]}}}
result = res.json()
# IDを取り出したい
result['patientinfores']['Patient_Information']['Patient_ID']
'0036817'
patient_info = result['patientinfores']['Patient_Information']
pd.json_normalize(patient_info)
Patient_ID WholeName WholeName_inKana BirthDate Sex HouseHolder_WholeName Comment1 TestPatient_Flag Reduction_Reason Reduction_Reason_Name ... Ic_Code_Name Community_Cid_Agree FirstVisit_Date LastVisit_Date HealthInsurance_Information Home_Address_Information.Address_ZipCode Home_Address_Information.WholeAddress1 Home_Address_Information.WholeAddress2 Home_Address_Information.PhoneNumber1 Home_Address_Information.PhoneNumber2
0 0036817 日医 太郎 ニチイ タロウ 1945-01-01 1 日医 H27.01.13来院 0 00 該当なし ... 現金 False 2015-03-10 2021-10-05 [{'Insurance_Combination_Number': '0003', 'Ins... 9493333 上越市〇〇区×× 283−2 025-555-9999 090-4444-1111

1 rows × 29 columns

df = pd.json_normalize(patient_info)
df.columns
Index(['Patient_ID', 'WholeName', 'WholeName_inKana', 'BirthDate', 'Sex',
       'HouseHolder_WholeName', 'Comment1', 'TestPatient_Flag',
       'Reduction_Reason', 'Reduction_Reason_Name', 'Discount',
       'Discount_Name', 'Condition1', 'Condition1_Name', 'Condition2',
       'Condition2_Name', 'Condition3', 'Condition3_Name', 'Ic_Code',
       'Ic_Code_Name', 'Community_Cid_Agree', 'FirstVisit_Date',
       'LastVisit_Date', 'HealthInsurance_Information',
       'Home_Address_Information.Address_ZipCode',
       'Home_Address_Information.WholeAddress1',
       'Home_Address_Information.WholeAddress2',
       'Home_Address_Information.PhoneNumber1',
       'Home_Address_Information.PhoneNumber2'],
      dtype='object')
# 必要なcolumnを指定する
df[['Patient_ID', 'WholeName', 'WholeName_inKana', 'BirthDate', 'Sex','Home_Address_Information.Address_ZipCode',
       'Home_Address_Information.WholeAddress1',
       'Home_Address_Information.WholeAddress2']]
Patient_ID WholeName WholeName_inKana BirthDate Sex Home_Address_Information.Address_ZipCode Home_Address_Information.WholeAddress1 Home_Address_Information.WholeAddress2
0 0036817 日医 太郎 ニチイ タロウ 1945-01-01 1 9493333 上越市〇〇区××/td> 283−2
# .csvで書き出す
df[['Patient_ID', 'WholeName', 'WholeName_inKana', 'BirthDate', 'Sex','Home_Address_Information.Address_ZipCode',
       'Home_Address_Information.WholeAddress1',
       'Home_Address_Information.WholeAddress2']].to_csv('patient-info.csv',index=False)
# patient-info.csvというファイルが書き出された

dropboxを起動できませんでした

  • エラー
    • dropboxを起動できませんでした。 通常、このエラーは権限エラーが原因で発生します。」
  • 発生状況
    • 古いmacbookのAというuserのデータをtimemachineのバックアップをつくり、移行アシスタントで、新しいmacbookへ(user Bがもともといる)データを移行した。移行はuser Aのデータ、その他のデータをフォルダ、システムとネットワークで、アプリケーションは転送せず。
    • 新しいmacbookで移行したuser Aでログインし、dropboxをダウンロード、設定したところ、上記のエラーがでた
  • やったこと
    • 新しいmacbookdropboxをappcleanerでアンインストールし、dropboxを新規インストール→解決せず
    • 新しいmacbookにもともといたuser Bでログイン。appcleanerでdropboxをアンインストール,logout。user Aでログイン、dropboxを新規インストール→解決せず
  • 解決方法

慢性疼痛ケースブック

  • 名古屋市立大学病院いたみセンターより
  • 33症例が、同じフォーマット(身体要因、心理社会的要因)で詳述されている
  • 生育歴・生活歴についても触れられている。(素晴らしい)

M1 macbook air / Parallels / Windows 10 ARM

  • 環境および素材
  • Parallelsへのwindows 10 ARMのinstallは手順に従いすんなりできた
  • しかし、このままでは日本語環境が不十分
  • そこで先達が公開している手順に従い、日本語環境を整えた
  • 私の環境ではbasic typingのinstallでコケた

f:id:ucymtr:20210803185228j:plain

  • microsoftIMEを起動し、"A"を"ひらがな”にしようとすると、以下のエラーがでて、日本語入力できない

f:id:ucymtr:20210803185331j:plain

  • google日本語なら入力できるという記載があったが、わたしの環境ではできなかった
  • windows display languageを日本語にしたが、settingでの表示は英語のままで、日本語にならなかった
  • とりあえず、某会計ソフトのinstallはできた。
  • そこでの日本語の入力については、macのメモ等に入力したものをParallelscut&pasteすることで対応したい
  • なおwindows 10 ARMにはdropboxのinstallできない(s-modeではできる)
  • dropbox上のファイルへのアクセスは、macwindowsでdesktopが共有できるので、そこ経由でできた。
  • 2021/8/11 追記 解決
  • windows update(windows insider preview 10.0,21390.2025)を適応したら、日本語の入力ができるようになった (めでたしめでたし)

器質か心因か

  • p73 慢性化した不定愁訴
  • なんとのか向精神薬は飲んでくれたけど著しいノセボ反応がどの薬に対しても起こってやめてしまうというパターンは多い
  • そもそもこちらが提供している「身体疾患ではないというモデルを患者が無意識に受容できていないと考えるべきである
  • p80 第4章 メスの深さ
  • 例えば、内科外来では、初診患者の家族構成や恋人の有無、親との関係といった「立ち入ったこと」は普通聞かない
  • つまり、内科外来とうのは「心にメスをいれない」ことを前提とした場であり、少しメスを入れざるを得ないときは医者にも患者にも緊張感が走る
  • 一般の精神科外来は、ある程度メスを入れられうことを覚悟して患者もやってくるし、内科外来よりは「立ち入ったこと」を聞くことになるが、ほとんどの場合、治療は薬物療法という「立ち入らない」治療に加えて、傾聴・受容・共感、そして現実的なアドバイスに終始するので、実際のところは心に入れるメスはそう深くない
  • このメスの深さについては、以下の3つのことを整理してみたい
    • 1 医者も患者も場に見合ったメスの深さを知っている
    • 2 場にそぐわない深さでメスをいれると、患者は治療の場に留まれなくなることがある
    • 3 メスの深さが時に応じて浅かったり深かったりすると、患者は混乱する
  • さて、身体因を見抜くという態度で心因反応を診ることというのは、言い換えれば後でメスの深さが変わることを考慮していない態度ということもできる
  • 器質か心因かわからない臨床状況というのは、すなわちメスの深さが定まらないということである。この場合、患者の診療を継続するためには、できるだけメスを深く入れる可能性についてなるべく早い段階から患者と話し合っておく必要があるだろう
  • p86 第5章 病気でないことの伝え方
  • 内科外来というのは、一般に身体症状のある患者が、自分はなんらかの身体の病気に侵されたという自覚をもってやってくる場である
  • つまり、患者は心や精神に言及されることを前提としていない。患者の多くは、身体のどこかが「病気」により物理的に故障してしまい不調をきたしていると考えているわけである。この当たり前かのようにも思える前提を踏まえることが、後に精神科/心療内科で加療される際の予後を左右することをまずはよく理解したい
  • 次に、患者がどれくらい身体の病気に侵されていると確信しているかということを評価する
  • 最も自然に、この評価を行う方法は受療動機と解釈モデルを尋ねることである
  • 2ヶ月も前から症状があるのに、今日になって受診しようと思ったのはどうしてですか、と受療動機を尋ねることで、視野は大きく広がる
  • 「様子を見ていたがどんどん症状が増悪してきた_なのか、「友達に相談してみたら○○病という難病の症状に似ているといわれてにわかに不安になって受診した」のか、「クリニックを何軒も受診したのになにもないとしか言われなくてマトモなところを受診しようと思った」のか、「天気もいいし暇だったので今日あたり一度先生に診てもらわなきゃと思って受診した」のかで大きくその後の診療プランは変化する
  • 受療動機を訪ねたら、「ご自身では心当たりはありますか」「どうしてこんな症状がでたと思いますか」などと解釈モデルも同時に尋ねるとよい
  • 「怖い病気があるんじゃないかと思って」なのか「調べたほうがいいのか先生に相談しようと思って」なのかでまた大きく診療プランは変わるだろう
  • 「先生がそういうなら安心」程度の病気の心配をしている人には「説得療法」で安心を与えることができるかもしれないが、過剰に病気の心配し、検査を求めている患者には、その場で正論で「説得療法」をして形の上では目の前から患者を消すことはできるかもしれないが、結局そのような患者は治らない神経衰弱になって内科を何軒もハシゴした挙げ句に精神科に何年も通うことになる可能性があるのだ
  • あまりやらないほうがいいこと
    • 1 病的意義のない検査異常と結びつけて説明する
    • 2 身体疾患「風」の病名とつける
    • 3 否定できない病気があることを伝える
    • 4 とりあえず精神科/ 心療内科に紹介する
  • 大切だと思うポイント
    • 1 患者の訴えをよく聞き、事実レベルではなくメタレベルで応答する
      • 話題の内容に標準を合わせるのでなく、苦しそうに自分の症状を延々話し続けているという患者の様子・体験に標準を合わせて、「そういうつらい症状がずっとあって、苦しかったんですね」とか「いろいろ病院にいって検査をしたのにろくに説明もしてくれなくて、がっかりしてしまったんですね」といった反応をすることである。「この先生なら理科してくれそうだ」「ここでならなんとかしてくれるかもしれない」という気持ちは過剰な期待にも繋がりうるが、まずはそう思ってもらわない限りは先には進めない
    • 2 検査をする前に検査異常がなかったらどうするかを尋ね、先に心身相関の説明をしておく
      • 検査をする前に、本人に「もしもこの検査でも異常がなかったらどうしましょうか」と話し合っておくことが、この後の展開によい効果をもたらすことが多い
  • 「ではこの身体症状はどの検査をすればわかるのだ」という話になるので、その時点で「あなたの身体症状は、どれだけ検査をしても異常が出ないかもしれないタイプのものかもしれない」と説明し、心身相関の話につなげていく
  • 一つの提案としては「身体疾患風の”病態”をもっているが、非身体疾患だ」ということをそれぞれのやり方で説明するとよいと思う
  • 「あなたの思っている身体疾患とは違う仕組みで調子が悪くなっているのです」ということを丁寧に説明する
  • 脳梗塞のように物理的に故障しているのではなく、あくまで機能的な故障、誤動作のようなもので、その原因は心身の疲労や睡眠不足、無理のあるライフスタイルであると説明し、心因に相当するものが身体症状の原因だと結びつける
  • 「病状を理解してくれたうえで、身体疾患の可能性も、そうではない可能性も中立に見ている医師が、そうではない可能性もあるかもしれないといっている」という印象を与えることができる
  • 「あなたの病態は非身体的疾患ではあるが、身体症状があり内科の範疇でもあるので、私が引き続き診療をする」
  • 「脳の機能を扱うこの領域は精神科/心療内科の先生が得意としており(自分で見る場合は「脳の機能を調整する薬」が効果を示すことがあるなど)、私だけでなく精神科/心療内科の先生の外来にも同時に通院してもらいたい