年別アーカイブ: 2009年

42件の投稿

胆嚢結石 4

予定通り先週5日に入院。
CTで今度は造影剤を使い胆嚢の画像を取得しました。

お腹はもう痛くなかったので、石は十二指腸から腸に落ちていったと期待したのですが、結果、石はまだ胆管に残っていました。

医者は「残念でした」と。
確かに残念でしたが、それにしても痛まなかったことを幸いと思うことにしました。

ところで、CTの写真は3Dデータとして取り込まれ、マウスで縦横に見ることができます。
しかも肋骨はそれらしく彩色され、造影された胆管は、肋骨の中で浮かんだ状態で明確に見ることができます。

実は私は昔、3Dの初期の仕事をしましたが、3Dはこのように発展したのだと、感慨ひとしおです。

さて私は、4人部屋に入りました。
残り3人は重篤です。一人は十二指腸を切除したようです。
大分苦しいらしく、看護師を何度もよんでいろいろ訴えていました。

二人目は、私と同じく胆嚢が悪いらしいのですが、大分痛いようで何度も看護師に痛み止めの座薬を入れてもらっているようです。

三人目は病気はよく分からないのですが、無茶な素人療法を続けていたらしく、喀血したようです。
それでも車を秋田に運ばなければいけないと、医者に外出を申し出ていました。

私は結局6日胆管の石を取り除きました。
内視鏡を使い十二指腸から胆管の出口を少し切開したようです。

私はレントゲン台の上に腹ばいにさせられ、無残に横顔を枕に押し付けられて、
医者が口から内視鏡を入れていくとき、一度内視鏡を喉の奥にぶつけて「へぼ医者メ」と思ったのを最後に、
睡眠薬を使われたらしく後は覚えていません。
夢の中で、口に何か四角いものをくわえさせられて、もぐもくもがいたいたのですが、気がついたら手術は終わっていました。

その後たいした痛みもなく、周りの3人の重篤な人に比べれば健常者です。
あまりに退屈で、寝ていたら背中が痛いし、運動不足なので外出許可をもらって散歩し、ついでに一時帰宅しました。

施術は好きになれませんが、息を大きく吸って緊張しないで、後は医者にまかせるしかありません。

胆嚢結石 3

痛みはないのですが、ともかく本日入院です。

手術の前に再度検査をするようです。早ければ明日手術。
胆嚢摘出は、「2・3日で退院、1週間でゴルフができます」という医者の言葉を信じて、
後はまな板の鯉です。

胆嚢結石 2

今回の騒ぎの始まりは先週火曜日、ゴルフの練習中お腹が痛いと感じたことです。

そのときはそれで終わったのですが、水曜日一日中鈍痛があり、ただ事ではないと感じたので病院にいきました。
最初は超音波で内臓をくまなく検査し、それからCTでお腹の写真を撮って、胆管に石が落ちていることが分かり、
施術の予定が組まれました。
帰宅したのは確か夜8時を過ぎていたと思います。
痛み止めの薬を飲みましたが、たまたま飲んでいた他の薬との禁忌があったので、痛み止めは一服だけで飲むのをやめました。

翌木曜日は幸い痛みはほとんどありませんでしたが、
金曜日は午前から痛み出して、夕方またMRIと心臓エコーの検査で病院にいったとき別の薬をもらい、帰宅してからそれを飲みました。

土曜日の午前胃カメラの検査がありましたので、検査前は食事も水もダメで、従って薬を飲むこともできませんでした。
幸い痛みはありませんでしたが、検査後食事をして痛み止めを飲んでおきました。

それ以来痛み止めは飲まないで、土曜日はそのまま就寝しましたが、夜なか中お腹がぐるぐるいっています。

日曜日気づけばお腹の痛みはありません。月曜日も。
すなわち先月31日正午薬を飲んで依頼、本日4日まで痛みがありません。

土曜日の夜のお腹の騒ぎで、胆管に詰まった結石が十二指腸に落ちていったのだと素人診断をしています。
これで内視鏡からの胆石の取り出しは必要ない筈です。ただいい機会だから胆嚢は摘出することにしようと思っています。

明日入院の予定でしたが、本日病院に連絡して今後の方針を決めようと思います。

胆嚢結石

私は胆嚢に以前から石を抱えており、一昨年この石が胆嚢の出口につまり、大変痛い思いをしました。

胆嚢の痛みは、石が胆嚢の出口に詰まることで胆汁が排出されなくなり、胆嚢がはれることによるものです。
そのときは薬を飲んで、様子をみていると数日で痛みはなくなり、それで終わりです(胆石はころころよく移動するのです)。
ただし、胆石がいつまた出口に詰まるかわかりませんので、爆弾をかかえているようなものです。

胆石は癌化する恐れが強いということなので、いつか取り出さなければいけないと思っていました。

火曜日おなかが痛いなと思っていたのですが、やがて沈静化したので、忘れていました。
ところが水曜日になってまた痛んできました。

痛烈ではないのですが、鈍痛が持続し止みません。
夕方地域の総合病院に行きました。

直ちにCTでおなかの写真をとると、確かに胆嚢に二つの石が白くはっきり写っています。
しかしもう一つが胆嚢からでて、胆管にとどまっています。

「胆管は十二指腸につながっています」と内科医。
私は「やれやれ。十二指腸から腸に落ちていけば、今回はこれで終わりだ」と思ったのですが、内科医の顔が優れません。
「外科にいってください」

たまたま専門の外科医がいて、図を描いて説明してくれました。

胆管の出口は十二指腸につながっているのだが、その出口が大変狭く、しかも出口近くに重要な臓器(すい臓と脾臓だったか?)がついていて、石がとどまるとそれらの臓器にダメージを与え、重篤になるとのこと。
「直ちに手術です。胆管に詰まった石は胃から内視鏡を使って取り出し、胆嚢にはまだ石がありますので、引き続き胆嚢そのものも摘出します」との説明。
手術の手配をしてくれましたが、胃からの取り出しは専門の内科医が施術するそうで、その手配ができなくて、結局来週の土曜日の手術になりました。
それまで悪化しなければいいのですが…

現在まで痛みは殆どありません。「悪化しないでね」と願うばかりです。

ところで私はこの病院に20年以上通っています。1年か2年に一回いろいろな箇所の検査をしてもらっています。
胆嚢もここに通い始めてまもなく「ポリープがあります」と告げられていたので、気をつけていました。

この病院は古く、狭い道をアルバイトのおじさんに誘導してもらいながらやっと駐車場に入っていく状態でしたが、丁度一年前近くに移転しました。
これまでのいかにも古いシステムの病院と違って、駐車場も広々した無人の有料駐車場に変わり、病院全体が新しいスタイルに生まれ変わりました(ただし非採算部門の縮小も伴っているようです)。

検査は当然検査室で受けます。MRIもCTも。
これまでは写真等の検査結果は患者自身が検査室で受け取って、また診察室に持って行って、医者がフィルムを透光板にかざした見ていました。

新病院では、患者は検査が終わるとまた診察室前の待合室で待っていればよく、検査結果は検査室から直ちに電子情報として診察室に送られ、パソコンの大きな画面に映し出し、マウスを使って連続画像として表示します。
しかも、お腹を横割りにも縦割りにもして見せますので、特にはっきり分かる胆石などは素人でもよく分かります。

私はハードに近い開発をしていませんが、このあたりのコンピュータの発達はいろいろ進んでいるのだなと実感しています。

MyStringBuilder

.NETで文字列を連結すると効率が悪いといわれています。

例えばこんな具合です。

    Dim str As String
    str = "雨にも負けず"
    str = str & "風にも負けず"  & vbCrLf
    str = str & "雪にも夏の暑さにも負けぬ" & vbCrLf
    str = str & "丈夫なからだをもち" & vbCrLf
    str = str & "慾はなく" & vbCrLf
    str = str & "決して怒らず" & vbCrLf
    str = str & "いつも静かに笑っている" & vbCrLf

マイクロソフトでは、StringBuilderを使うように推奨しています。
(ただし、文字列が決まっていればStringの連結が勝っているようです。)

そこでStringBuilderを自分の都合に合わせてを改良したいと思います。
StringBuilderが継承できれば楽なのですが、StringBuilderは継承できませんので、StringBuilderを要素にもつ独自のStringBuilderを作成しました。

主要な部分は次のとおりです。

Public Class MyStringBuilder

    Private m_sb As StringBuilder

    ....
    Public Sub Append(ByVal strIn As String, Optional ByVal blnReset As Boolean = False)
        If blnReset Then Reset()
        m_sb.Append(strIn)
    End Sub

    Public Sub AppendFormat(ByVal strFormat As String, ByVal ParamArray args() As Object)
        m_sb.AppendFormat(strFormat, args)
    End Sub

    .....
    Public Function Conc(ByVal strAdd As String, Optional ByVal blnReset As Boolean = False)
        If blnReset Then Reset()
        m_sb.Append(strAdd)
        m_sb.Append(ControlChars.CrLf)
    End Function

    Public Function ConcFormat(ByVal strFormat As String, ByVal ParamArray args() As Object)
        m_sb.AppendFormat(strFormat, args)
        m_sb.Append(ControlChars.CrLf)
    End Function

Appendは機能的にはStgringBuilderと同じです。

Concは次のようにメッセージの作成等改行を入れたいとき使います。先の例では、

    Dim MySB As New MyStingBuilder
    With MySB
        .Conc("雨にも負けず")
        .Conc("風にも負けず")
        .Conc("雪にも夏の暑さにも負けぬ")
        .Conc("丈夫なからだをもち")
        .Conc("慾はなく")
        .Conc("決して怒らず")
        .ConcFormat("{0}{1}{2}", "いつも", "静かに", "笑っている")
    End With
    MessageBox.Show(MySB.ToString, "MyStringBuilder", )

読みやすくなっていると思いませんか。

SQLでは改行を入れるといけません。プロパーのStringBuilderのAppendでいいのですが、一貫して[MyStringBuilder]を使いたいので[MyStringBuilder]用のAppendを定義しています。次のように使います。

    Dim MySB As New MyStingBuilder
    With MySB
       .Append("Select * From 書籍")
       .AppendFormat(" Where 著者名='{0}'", "司馬 遼太郎")
       .AppendFormat(" And 出版日 Between '{0}' And {1}", _
           New Date(1990, 1, 1), New Date(1996, 2, 1))
    End With

連続する二つの句の間にスペースが必要なので、実際にはスペースを入れるようなメソッドを用意しています。

ところで、ここには誤りがあります。
最後の文の{1}プレースホルダをクォートする必要があります。

日付リテラルはSQL Serverではシングルクォートで、Accessでは#で囲む必要があります。

私は、ディレクティブを使ってラッパー関数を用意しています。

    Public Function DateWrapper(ByVal dte As Date) As String
#If DB = "SQLServer" Then
        Return (String.Format("'{0}'", dte.ToShortDateString))
#ElseIf DB = "Access"
        Return (String.Format("#{0}#", dte.ToShortDateString))
#Else
        ....
#End If
    End Function
[DateWrapper]を通せば、DBに何を使っているかその都度気にする必要はありません。
従って先の例は次の通りです。

        .AppendFormat(" And 出版日 Between {0} And {1}", _
           DateWrapper(New Date(1990, 1, 1)), DateWrapper(New Date(1996, 2, 1)))