Atlas of Critical Care Procedures

読んだ。

胸腔ドレーンであんなことがあったので手技の確認がてら読んだ。
トロッカーよりペアンで鈍的に挿入するほうが合併症は少ないらしい。

献体を使った実際の手技の写真が多いので実際のページ数より遥かにボリュームは少ない。
知っていたと思っていたが知識が増えたこともあって、例えば

  • 乳頭が第4-5肋間のことが多く、これより下に挿入すると横隔膜損傷のリスクが高くなる
  • Aラインモニターをフラッシュしてみて、2, 3個程度オシレーションするのが適正なダンピングである。1個しかないとオーバーダンピングでなまった波形になりdicrotic notch が消失し、それ以上だとアンダーダンピングで尖った波形になる
  • 蘇生的開胸術を行ったときの心臓マッサージは、両手で包み込み拍出ができるよう揉むこと
  • REBOA を挿入するときの体表面ランドマークは、胸骨中部がzone Ⅰ。zone Ⅲ は腎動脈遠位部(L1-2)から総腸骨動脈分岐(L4)で、分岐は臍が目印

神経系で脳室ドレナージ、腰椎穿刺、硬膜外麻酔が書いてあったが、硬膜外麻酔は記述が薄すぎで、しかも某脊椎ブロックの項もあるのにこれは手技のことは一切書いてなかった。
四肢コンパートメント症候群、腹部コンパートメント症候群、VAC療法が異様にたくさん書いてあった。

一通り復習するにはよかった。

検査と技術

検査と技術 (46巻3号) | 医書.jp
感染症の復習をしようと思ったが、感染症そのものの記載は薄いし抗生剤も薄いし、でも菌体自体の記載は検査法や微生物学的特性などがなんかマニアック。
コロナ前なのでコロナについては記載はない。

検査と技術 (47巻3号) | 医書.jp
これはむちゃくちゃよかった。
ICUエコーが流行っているが、集中治療医が行うエコーは結局のところレベルが低い()
検査技師が行う心臓エコーは、ちゃんと体位がとれて良い条件で検査するのでよいのは当たり前だが、どのように描出するのが良いのか、体位とプローブを当てる箇所の図、そのときに見えるエコー画像がしつこいほどに毎回並んで掲載されているので、わかりやすい。
パルスや連続波ドップラーのサンプリングをどこに持っていくべきか、どう設定すべきか、正常値と異常値、など網羅されているので、よいと思った。

中心極限定理を確かめる

どんな分布(注)からでもサンプリングされた標本の平均をさらに繰り返して標本の分布を考えたとき、その分布は正規分布になる。
というのでいろいろ分布を変えて試してみる。
Rでは接頭語rdpqに続いて分布名があるので、標準で実装されている関数をapropos関数で取得すると、19個あるようだった。

 [1] "beta"     "binom"    "cauchy"   "chisq"    "exp"      "f"        "gamma"    "geom"     "hyper"   
[10] "lnorm"    "logis"    "nbinom"   "norm"     "pois"     "signrank" "t"        "unif"     "weibull" 
[19] "wilcox"  

19個の関数で必要なパラメータを適当に決め、30個サンプリングして平均値を求め、これを3000回繰り返すとする。
関数からサンプリングした標本の標本平均と標本分散はデータから決まるし、関数とパラメータから理論的な平均と分散も計算できるのでこれも計算する。
乱数発生関数に引数をいれるときに無理やりテキスト形式で

rnorm(n, mean, sd)

を実現するために、テキスト処理をしたあとにparse関数とeval関数で無理やり評価して関数を実行している。

ヒストグラムの設定が適当なせいなのか理論的な分布との重ね合わせが合ってないが、だいたいが平均値の分布は正規分布に従っている。
ここで、コーシー分布がおかしいことになっているが、コーシー分布は平均値が定義できない、となっているので、おかしいのが正しい。

library(stringr)
rdpq <- c("r", "d", "p", "q")
fs <- mapply(function(z) str_remove(apropos(sprintf("^%s", z)), sprintf("^%s", z)), rdpq)

f <- fs[[1]]
for(i in 1:(length(fs)-1)){
  for(j in (i+1):length(fs)){
    f <- intersect(f, intersect(fs[[i]], fs[[j]]))
  }
}

n <- 30 # ある分布からのサンプリング数
p <- ev <- replicate(length(f), vector("list"))
names(p) <- names(ev) <- f

p[[f[1]]] <- c(10, 20)    # beta
p[[f[2]]] <- c(20, 0.2)   # binom
p[[f[3]]] <- ""           # cauchy
p[[f[4]]] <- c(5)         # chisq
p[[f[5]]] <- c(2)         # exp
p[[f[6]]] <- c(4, 6)      # f
p[[f[7]]] <- c(0.5, 2)    # gamma
p[[f[8]]] <- c(0.3)       # geom
p[[f[9]]] <- c(5, 10, 12) # hyper
p[[f[10]]] <- c(0.3, 1.5) # lnorm
p[[f[11]]] <- c(10, 3.3)  # logis
p[[f[12]]] <- c(10, 0.25) # nbinom
p[[f[13]]] <- c(6, 3.5)   # norm
p[[f[14]]] <- c(5)        # pois
p[[f[15]]] <- c(10)       # signrank
p[[f[16]]] <- c(4)        # t
p[[f[17]]] <- c(2.8, 9.4) # unif
p[[f[18]]] <- c(4, 3)     # weibull
p[[f[19]]] <- c(4, 7)     # wilcox

niter <- 3000 # n回サンプリングするシミュレーションの試行回数
res <- replicate(niter,
colMeans(
mapply(function(z0, z1){
         eval(parse(text=sprintf("r%s(%d%s)", z0, n, paste0(ifelse(all(z1==""), "", ","), paste0(z1, collapse=",")))))
        }, f, p)
)
)

xq <- seq(0, 1, length=10000)
dens <- mapply(function(z0, z1){
         txt <- sprintf("q%s(%f%s)", z0, xq, paste0(ifelse(all(z1==""), "", ","), paste0(z1, collapse=",")))
         y <- mapply(function(w) eval(parse(text=w)), txt)
         d <- mapply(function(w) eval(parse(text=sprintf("d%s(%f%s)", z0, w, paste0(ifelse(all(z1==""), "", ","), paste0(z1, collapse=","))))), y)
         return(list(q=y, d=d))
        }, f, p, SIMPLIFY=FALSE)

ev[["beta"]] <- c(
  E=p[["beta"]][1]/(p[["beta"]][1]+p[["beta"]][2]),
  V=p[["beta"]][1]*p[["beta"]][2]/((p[["beta"]][1]+p[["beta"]][2])^2*(p[["beta"]][1]+p[["beta"]][2]+1))
  )

ev[["binom"]] <- c(
  E=prod(p[["binom"]]),
  V=p[["binom"]][1]*p[["binom"]][2]*(1-p[["binom"]][2])
  )

ev[["cauchy"]] <- c(
  E=NA,
  V=NA
  )

ev[["chisq"]] <- c(
  E=p[["chisq"]][1],
  V=2*p[["chisq"]][1]
  )

ev[["exp"]] <- c(
  E=1/p[["exp"]][1],
  V=(1/p[["exp"]][1])^2
  )

ev[["f"]] <- c(
  E=ifelse(p[["f"]][2] > 2, p[["f"]][2]/(p[["f"]][2]-2), NA),
  V=ifelse(p[["f"]][2] > 4, 2*p[["f"]][2]^2*(sum(p[["f"]])-2)/p[["f"]][1]/(p[["f"]][2]-2)^2/(p[["f"]][2]-4), NA)
  )

ev[["gamma"]] <- c(
  E=prod(p[["gamma"]]),
  V=p[["gamma"]][1]*p[["gamma"]][2]^2
  )

ev[["geom"]] <- c(
  E=1/p[["gamma"]][1],
  V=(1-p[["gamma"]][1])/(p[["gamma"]][1]^2)
  )

ev[["hyper"]] <- c(
  E=p[["hyper"]][3]*p[["hyper"]][1]/(p[["hyper"]][1]+p[["hyper"]][2]),
  V=p[["hyper"]][3]*p[["hyper"]][1]/(p[["hyper"]][1]+p[["hyper"]][2])*(1-p[["hyper"]][1]/(p[["hyper"]][1]+p[["hyper"]][2]))*(p[["hyper"]][1]+p[["hyper"]][2]-p[["hyper"]][3])/(p[["hyper"]][1]+p[["hyper"]][2]-1)
  )

ev[["lnorm"]] <- c(
  E=exp(p[["lnorm"]][1]+p[["lnorm"]][2]/2),
  V=exp(2*p[["lnorm"]][1]+p[["lnorm"]][2])*(exp(p[["lnorm"]][2])-1)
  )

ev[["logis"]] <- c(
  E=p[["logis"]][1],
  V=pi^2*p[["logis"]][2]^2/3
  )

ev[["nbinom"]] <- c(
  E=p[["nbinom"]][1]*(1-p[["nbinom"]][2])/p[["nbinom"]][2],
  V=p[["nbinom"]][1]*(1-p[["nbinom"]][2])/p[["nbinom"]][2]^2
  )

ev[["norm"]] <- c(
  E=p[["norm"]][1],
  V=p[["norm"]][2]
  )

ev[["pois"]] <- c(
  E=p[["pois"]][1],
  V=p[["pois"]][1]
  )

ev[["signrank"]] <- c(
  E=p[["signrank"]][1]*(p[["signrank"]][1]+1)/4,
  V=p[["signrank"]][1]*(p[["signrank"]][1]+1)*(2*p[["signrank"]][1]+1)/24
  )

ev[["t"]] <- c(
  E=ifelse(p[["t"]][1] > 1, 0, NA),
  V=ifelse(p[["t"]][1] > 2, 1/(1-2/p[["t"]][1]), NA)
  )

ev[["unif"]] <- c(
  E=mean(p[["unif"]]),
  V=diff(p[["unif"]])^2/12
  )

ev[["weibull"]] <- c(
  E=p[["weibull"]][2] * gamma(1 + 1/p[["weibull"]][1]),
  V=p[["weibull"]][2]^2 * (gamma(1 + 2/p[["weibull"]][1]) - (gamma(1 + 1/p[["weibull"]][1]))^2)
  )

ev[["wilcox"]] <- c(
  E=prod(p[["wilcox"]])/2,
  V=prod(p[["wilcox"]])*(sum(p[["wilcox"]])+1)/12
  )
ev <- lapply(ev, "*", c(1, 1/n))

# 分布からの推定と理論値の確認
m <- rowMeans(res)
v <- apply(res, 1, var)
a <- cbind(do.call(rbind, ev), m=m, v=v)

cols <- c("distribution"="orange", "theorem"="blue")
par(mfrow=c(length(f), 2), cex.main=2)
for(i in seq(f)){
  ml <- list(m[i], ev[[i]]["E"])
  vl <- list(v[i], ev[[i]]["V"])
  de <- mapply(function(z1, z2) mapply(qnorm, xq, z1, z2), ml, vl, SIMPLIFY=FALSE)
  y <- mapply(function(z0, z1, z2) mapply(dnorm, z0, z1, z2), de, ml, vl, SIMPLIFY=FALSE)
  yl <- c(0, max(unlist(y), na.rm=TRUE))
  hist(res[i,], probability=TRUE, xlab="mean", ylab="density", main=f[i], ylim=yl, cex.main=2)
  for(j in seq(y)){
    lines(de[[j]], y[[j]], col=cols[j], lwd=5)
  }
  legend("topright", legend=names(cols), col=cols, pch=15, cex=2)
  plot(dens[[i]]$q, dens[[i]]$d, type="l", lwd=5, xlab="", ylab="density", main=sprintf("%s distribution", f[i]))
}

BeyondER キャリアと心不全

読んだ。

BeyondER(ビヨンダー) Vol.2 No.2 2023

BeyondER(ビヨンダー) Vol.2 No.2 2023

  • メディカル・サイエンス・インターナショナル
Amazon
BeyondER (2巻2号) | 医書.jp
同級生が書いてて偉くなったもんだなと感心した。

みんな知ってる有名人の寺澤先生の対談があった。
日本海側のバイトに行ったときに外来でいて少しだけ話ししたことがあるが、穏やかな先生だった。
組織のメンバーを大事にしないと、その後輩が噂を聞いてその組織を忌避して組織が盛り下がっていく、というような話は参考になった。

新興雑誌のため他の救急系の雑誌と毛色を変えたいのか、今回は専門医取得以降のキャリアパスについて紹介されていた。
2.救急医がMBAホルダーになって見えてきたもの (BeyondER 2巻2号) | 医書.jp
「8年目のジレンマ」というのは確かに筆者の言うようにたぶん専門医取得以降の若者()が陥りがちな事態だと思う。この本で紹介されている学位はPh.D 以外は2年を費やして仮題をこなせば取りあえず取れるものなので、やる気があればなんとかなる。
4.Ph.D.への挑戦が,ゼロからイチを生み出す力を向上させる (BeyondER 2巻2号) | 医書.jp
Ph.Dについては必ずしも取れるわけではないので、それなりに覚悟は必要である。よく名前を聞く先生だが論文はあるものの学位は日本語でまとめて論文博士らしい。解散。

心不全については最近流行りのANRI などの解説があり勉強になった。

症例報告・基礎研究・臨床研究の論文の書き方

小児科診療 (83巻7号) | 医書.jp
症例報告だけでも医者人生が変わるという華々しい話が面白かった。

臨床婦人科産科 (74巻11号) | 医書.jp

臨床雑誌整形外科 (71巻6号) | 医書.jp
整形外科医はこういう話に詳しくないだろう(失礼)と思うが、臨床研究の仕組みだとかいろいろ詳しく書いてある。

臨床放射線 (64巻12号) | 医書.jp
放射線領域なのであまり馴染みがなかった。

腎と透析 (93巻3号) | 医書.jp
研究不正の話が面白かった。

Dr.徳田の英語論文 書き方のツボ
(第1回)タイトルを付ける 査読者を惹き付ける3つのポイント (臨床雑誌内科 113巻1号) | 医書.jp
サマリー(アブストラクト)をまとめる 刑事コロンボ的組立てとオッカムのかみそり (臨床雑誌内科 113巻2号) | 医書.jp
BACKGROUNDを書く 症例の重要性は"三段論法"でまとめよう (臨床雑誌内科 113巻3号) | 医書.jp
CASE DESCRIPTION(その1) 病歴を書く わかりやすい病歴は「シ・ゲ・キ+α」が重要 (臨床雑誌内科 113巻4号) | 医書.jp
CASE DESCRIPTION(その2) 身体所見を書く 身体所見は「バイタル+陽性所見+陰性所見」の3つが基本 (臨床雑誌内科 113巻5号) | 医書.jp
CASE DESCRIPTION(その3) 検査所見を書く 検査所見は「血液・尿+画像+診断検査」の3つが基本 (臨床雑誌内科 114巻1号) | 医書.jp
CASE DESCRIPTION(その4) 図表の作成 画像は「キーフィルム+病変部位に原色矢印を」が基本 (臨床雑誌内科 114巻2号) | 医書.jp
CASE DESCRIPTION(その5) 診断・治療・経過 症例報告では診断が確定していることが必須 (臨床雑誌内科 114巻3号) | 医書.jp
DISCUSSIONを書く 症例報告の正当性を過去の先行報告と比較してまとめよう (臨床雑誌内科 114巻4号) | 医書.jp
文献リスト(REFERENCES) 引用論文はできるだけ一次文献としよう (臨床雑誌内科 114巻5号) | 医書.jp
アブストをまとめる 読者を堪能させる3つのポイント (臨床雑誌内科 115巻5号) | 医書.jp
イントロを書く 読者を納得させる3つのポイント (臨床雑誌内科 116巻1号) | 医書.jp
メソッドを書く 論文の妥当性と信頼性を示す3つのポイント (臨床雑誌内科 116巻2号) | 医書.jp
リザルツを書く 論文の結果とその詳細を示す3つのポイント (臨床雑誌内科 116巻3号) | 医書.jp
図表を作成する シンプルな図表で読者を惹きつける3つのポイント (臨床雑誌内科 116巻4号) | 医書.jp
ディスカッションを書く(前編) 論文の主張を述べる4つのポイント (臨床雑誌内科 116巻5号) | 医書.jp
ディスカッションを書く(後編) 論文の主張を述べる4つのポイント (臨床雑誌内科 117巻1号) | 医書.jp
文献リスト(References)をつくる エビデンスの引用元を示す3つのポイント (臨床雑誌内科 117巻2号) | 医書.jp
実際に論文で使った英文の例が載っていた。

世のため人のため自分のため英語論文を書こう (臨床整形外科 53巻9号) | 医書.jp
書籍は読んでいないが、連載では投稿先の選び方や原稿の書き方、図作成ソフトや英語の勉強法まで、分かっている人なら「そんなこと説明する必要ある?」と思うが本当に初心者ならわからないであろうことまで、言及してあったのでそれは良かったと思う。

英文論文を書いてみよう!—なかなか書けない外科医のための集中講義
なぜ研究をするのか? (臨床外科 73巻1号) | 医書.jp
なぜ論文を書くのか? (臨床外科 73巻2号) | 医書.jp
論文の基本構成 (臨床外科 73巻3号) | 医書.jp
論文のbrush-up (臨床外科 73巻4号) | 医書.jp
査読者の立場から (臨床外科 73巻5号) | 医書.jp
とにかく書いてみよう (臨床外科 73巻6号) | 医書.jp
初回の、教授になったときにこれくらい論文があった、というのは興味深かった。

英語で論文を書くことの効能……学会発表だけじゃダメなんですか?
その1.学会発表と論文はどう違うの?…① (臨牀消化器内科 35巻3号) | 医書.jp
1Pのコラム。全12回。

いろいろ読んだけどこの間に論文は1本も出ていない(爆

透析と麻酔

読んだ。

LiSA別冊: 周術期管理を核とした総合誌 (Vol.30 ’23 秋号)

LiSA別冊: 周術期管理を核とした総合誌 (Vol.30 ’23 秋号)

  • メディカル・サイエンス・インターナショナル
Amazon
LiSA 別冊 (30巻2号) | 医書.jp
けっこう良かった。
シャント肢の手背や尺側にしばしばよい血管が残っているので特に緊急時は躊躇なく使用すればよい。ただし複雑な血流となっているため、薬物投与時の反応が遅延する場合がある。
単回ならシャント肢で血圧を測定することもあるが、マンシェットを巻いたままにしてはいけない。
シャント位置より抹消(手首など)で測定できる場合は、マンシェットはそのままで使用してよい。
ガイドラインではKを含まない1号液を選択するよう記載しているものもあるが、投与量が増えると低Na血症となるためやはり細胞外液の投与が望ましい。
生食とリンゲル液では、腎移植患者でのRCTでは最高K濃度は差がなく、生食のほうでpHが低くClが高いという高クロール性代謝性アシドーシスとなっていた。
乳酸化リンゲル液は4mEq/L のKを含むので大量に投与すればその値に近づく。
体重50kgの成人にRBC 8単位を負荷するとK 4→5 mmol/L に上昇すると推測される。

など、管理上これこれするな/しろ、と言われるが本当にそうなのか、ということへのちょっとした情報が載っていた。

ついでに読んだ。
術者がうますぎて人工心肺時間が短すぎるため離脱に困ることがほとんどないのだが、様々な事例が載っており参考になった。
LiSA (30巻10号) | 医書.jp