2012-06-07 やはり

やはり CakePHP2.0で僕と同じように悩んでおられる方がおられました。
昨日このページにヒットしました。
この記述が正しいか否かは未だ試していませんが、少なくとも モデル ではなく、コントローラーだと思います。
今日ライブデモンストレーション症例終了してから試してみます。

2012-06-06 再び CakePHP – 2.0でのキャンセル、リセット・ボタンの判別

  echo $this->Form->create('Physician', array('type' => 'delete'));
  echo $this->Form->input('id', array('type' => 'hidden'));
  echo $this->Form->submit('削除', array('name' => 'delete'));
  echo $this->Form->submit('キャンセル', array('name' => 'cancel', 'type' => 'reset'));
  echo $this->Form->end();

というフォームを作成し、PhysiciansController.phpの中で、’delete’という名前と’cancel’という名前のボタンが押されたことをそれぞれ判別したいのですが、どちらのボタンを押しても、delete()というアクションに飛んでしまい、その中でボタンの判別ができないのです。
随分と色々試したり、コントローラーの中で pr()関数を用いて、どのようにオブジェクトが飛んでくるかを表示させたりしたのですが、ボタンを判別できるようなプロパティは無いのです。
それでコントローラーでの判別を止めて、以下のようにJavascriptと組み合わせることにしました。

上と同じなので省略ね
 echo $this->Form->submit('キャンセル', array('name' => 'cancel', 'onClick' => 'history.back()'));
  省略ね

これでとりあえずキャンセルボタンを押せば削除がキャンセルされて前のページに戻るようになりました。
うーん これは CakePHP流なのでしょうか? どうもすっきりしません。どなたかケーキ屋さん、教えて下さいな。

2012-06-06 本日も

本日も早朝から札幌に向かって出発です。ただ、今日の夕方には福島に移動せねばなりません。明日午前中に安達太良ライブデモンストレーションでの術者なのです。そして、その後 羽田空港経由で金浦に入り、金曜日に金浦から光州に飛ばねばなりません。土曜日に GICSという学会で講演とライブデモンストレーションがあり、土曜日に無理やり金浦経由で羽田に戻ります。
何とか日曜日を確保しようと必死ですね。

2012-06-05 CakePHP 2.0での POST dataの受け方

小倉ライブデモンストレーション前より悩んでいたことが解決
この親切なページのお陰です。
しかし、やはり同じように悩んでおられた方がおられたのですね。
僕はその歴史を良く知らないのですが、CakePHPはその前の Major versionである CakePHP 1.3から 現在の最新versionである CakePHP 2.0に移行中なのですが、問題は現在インターネットや書籍での解説はほとんどが 2.0ではなく 1.2 or 1.3のものなのです。
それらの解説を読めば

$this->params['forms']['id']

とすれば POSTで渡された $idを受けとることができる筈なのです。
しかし、そもそも $this->paramsなんて CakePHP2.0では無いのです。
それと同等の働きをするのが、何と

  $this->request->data['Model']['id']

なのです。もちろんここでのModelはそのデータが属するモデルであります。
これで懸案のプログラムが矛盾なく、しかもエレガントに動くようになりました。

2012-06-04 懸案事項の解決

小倉ライブの前から CakePHPのあるプログラムを書いていて頭を悩ましていました。ここに二つのテーブルがあります SQLで書けば

CREATE TABLE `clinics` {
  `id` INT( 11 ) NOT NULL AUTO_INCREMENT,
  `clinic_name` VARCHAR( 255 ) NOT NULL DEFAULT '',
  CONSTRAINT PRIMARY KEY (`id`)
} CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE TABLE `physicians` {
  `id` INT( 11 ) NOT NULL AUTO_INCREMENT,
  `physician_name` VARCHAR( 255 ) NOT NULL DEFAULT '',
  `clinic_id` INT( 11 ) NOT NULL DEFAULT '0',
  CONSTRAINT FOREIGN KEY (`clinic_id`) REFERENCES `clinics` (`id`),
  CONSTRAINT PRIMARY KEY (`id`)
} CHARACTER SET utf8 COLLATE utf8_general_ci;

このような二つのテーブルがありもちろん`clinic_id`.`id`は`clinic`テーブルの`id`を参照しており、`clinics`テーブルと`physicians`テーブルは 1:n の関係でリンクしているのです。
このような良くあるデータ構造の時に、修正画面を作るとすれば、僕であれば次のような画面を作成します

       診療所情報の修正画面

診療所名前    : ここに登録されている診療所名前が出る

診療所医師名   1: 名無しの権兵衛  [登録医師削除]
         2: 明日晴れのすけ    [登録医師削除]

         [修正][キャンセル]

このようにすれば、診療所名前修正もできますし、登録されている医師名の削除もできます。
CakePHPを用いてこのような画面出力の作成は一日もかからずにできました。しかし、問題は医師名削除だったのです。これが一筋縄では行かなかったのです。何とか動作するプログラムを書くことはできましたが、どうもすっきりしないのです。これが本当に CakePHPのお作法として正しいのでしょうか? はなはだ自信がありません。
何れにしてもこの過程で明らかになったことがあります。CakePHPはその根本に MVC (Model-View-Controller)という良く使われるアーキテクチャを用いているのですが、僕の問題はその MVCを本質的に理解していないのでは? ということなのです。
こんな時に、誰か身近に意見を聴ける方がいて下されば良いのですが・・・・ 実際インターネット質問欄に投稿しようとしても、コードが長くなり失礼と思えるので、なかなかできないのです。どうしましょうかね・・・

2012-06-03 2年ぶりの小倉ライブ

ライブ症例を成功裏に終了しました。皆が協力して下さいました。

今回の小倉ライブは昨年東日本大震災で中止となったこととか、何よりも小倉でライブを1983年にDorros先生をお招きして第一回のライブが始まってから、30年という節目の年に、いよいよあの偉大な延吉正清先生が引退をされる、というニュースというか、冠動脈インターベンションを行っている者からすれば、これ以上のものは無いほどの重大な事態の変化が起こる、ということを皆知っていたためか、とにかくこれまでの小倉ライブではあり得なかった多数の参加者が集まりました。そして熱気もありました。
僕は、この記念すべき小倉ライブで、重大な役目を多数仰せつかりました。中でも、延吉正清先生へのはなむけの言葉、というのは非常に重く、でも、自分の心からの気持ちを現した結果、それはきちんとこなすことになりました。
昨日は朝早くから、ずっとずっと夜まで多数のしかも、プログラム上ではどう考えても overlapしている dutiesのために獅子奮迅の活躍でした。
そして今日は記念すべき新生小倉記念病院における私自身の初めてのライブでした。
症例は前下行枝近位部からの慢性完全閉塞で、三か月ぐらい前にトライされて、不成功であった症例です。造影ではレトロのルートがありそうで、それを行けば楽勝、順行性にはまず無理、という症例でした。
型の通り逆行性で入りましたが、右冠動脈そのものが蛇行しており、また、中隔枝分岐が急峻で目標となる中隔枝には一度としてガイドワイヤーを挿入することができませんでした。ライブですので、司会者は時間を持て余す状況です。それでもがんばりましたね。
事態を冷静に捉え、順行性に移行しました。
ここからばいやー PCIも科学です。頭の悪い人はPCIをできません。回旋枝に入れたワイヤーから何回かIVUSをしましたが、どうしても自分には前下行枝入口部と思しき所は見えません。ここで普通に思うのは、「これがIVUS解像度の限界なんだ」です。
しかし、今回は本当に色々と考えました。このようなanatomyは前下行枝入口部からの慢性完全閉塞でよく遭遇する。何時も分からないままに、不成功で撤退するけど、その際、徹底的にやってみよう、
そんな風に思いました。何よりライブです。皆が見ている前でです。それは僕に勇気と大胆さと、そして何より明晰な頭脳を与えました。
そして、僕の結論は、前下行枝入口部が見つからない、ということは、きっと中隔枝と見える枝が、実は前下行枝であり、中隔枝を分岐した後で慢性完全閉塞になっているのではないのか?
そのような推測です。これは今までの僕の常識からはかけ離れ、また多分私だけでなく、全ての日本人インターベンショニストの常識からもかけ離れたものと思われます。
しかし、考えた末の結論でしたので、それを confirmするために、再度IVUSを行ったのです。そしてついに真腔を捉えました。この真腔をワイヤーず進むのを、ライブ放映で行ったのです。慢性完全閉塞のライブで通常これはあり得ません。真腔をワイヤーが進む瞬間は術者のみが味わう至福の時であり、その瞬間はライブで放映されることは無いのです。でも、それをしました。このように皆で考え、解剖を想定し、その想定の通りにテクニックでワイヤーを操作し、そして成功したのです。PCIの新たな局面の展開を感じました。
カテ室でも、そして会場でも拍手が鳴り響きました。
何より、新生小倉記念病院での初めての治療、初めてのライブにおいて、このような難しい症例を成功裏に治療できたことは、小倉ライブ30周年(昨年は中止されたため、第29回)記念にふさわしいものであったと思います。結局8:15AM頃に症例を開始し、終了したのは12:30頃でしたので 4時間の手技でしたが、造影剤総量はせいぜい200mlぐらいです。最後に前下行枝心尖部で穿孔を起こし、コイルで塞栓をしましたが、とにかく成功し良かったです。この長い手技に途中からトイレに行きたくなり、がまんするのが辛かったです。
終了後、記念病院の隣にある業務用スーパーにより、大きなわさびチューブを買いました。

2012-05-31 これから小倉ライブ

今羽田空港に移動中 これから小倉ライブ参加のため小倉に移動します。
ここ二日間で大分とCakePHPを使いこなせるようになってきました。どのようにrelateされたデータを入力するか? あるいは表示するか? それらをできるようになったのです。native PHPに比べると独特の世界観であるフレームワークなので理解して慣れるまでが時間を要します。
またレイアウトなどの見かけについては理解ができていません。そこが理解できれば、完璧で素早く Web Siteを構築できるようになる筈です。
そうすれば、特定非営利活動法人ティー・アール・アイ国際ネットワークとして、臨床試験サイト構築を請け負い、自分は診療から引退しましょうか

ソウル到着

羽田空港から 16:20初の ANA便でソウル金浦空港に到着し、近くの Mayfield Hotelに入りました。羽田を飛び立つ直前にニュースが入りました。

韓国の regulationが厳しくなり、今回は僕も手技ができないようです。それはそれで気楽で良いのですが、やはり韓国もついに temporal medical licenseが必要な時代になったのだ と、感慨深いものがあります。

これから夕食のため外出します。