何時までも衝撃受けてばかりではおられない

先週末はCIT2016と重なる日程で仙台開催の日本循環器学会総会がありました という訳で僕も金曜日最終便で北京から羽田に飛び、その後 東北新幹線で仙台に入ったのですが、ホテルに入ったのは 23:30ぐらいになっていました

日本循環器学会では部下の皆頑張ってたくさんの演題を発表してくれました 頼もしい限りです

そして連休明けの昨日火曜日はTAVIの日 昨日も三例のTAVI治療がありました いずれも自己拡張型あるいは、機械的拡張型と呼ばれるものでした 何時もそうですが、今回も万全の態勢で臨みました 本当に石灰化がひどく危険性の高い症例ばかり三例だったのです おまけに足の血管が細く、丁度穿刺部に石灰化があるのです 色々なことを予想しました しかし、悪い予想に飲まれてはいけません 術者として確固たる信念で治療に当たらないと医師としての責任がありません

一例目、順調に治験Stent-Valveを植え込みました 大動脈弁閉鎖不全も全く無く素晴らしい出来でした しかし、予想していた通り、足の穿刺部でトラブル起こしましたが、すぐにバルーンで閉塞しながら外科の先生に開けて頂き、無事修復し、その後は何とも無し

二例目、強い石灰化に自己拡張Stent-Valveの拡張不十分であり、結果的に遠位に移動、すぐに Valve in Valveをしたのです その後が後拡張バルーンの通過が困難で大変でしたが、これも執念と皆の励ましてで克服しました 全身の力も気力も無くなるぐらいに疲れました

そして、気を取り直し、三例目 これも非常に強い石灰化でしたが、無事 自己拡張型Stent-Valveを植え込みました 予想していた通り、足の穿刺部でトラブルとなりましたが、これもバルーンで閉塞しながら外科の先生に開けて頂き、解決しました

予想よりも手技に時間がかかり、9:30AMより開始した三例縦の手技は、終了したのは 18:00となっていました でも皆さんお元気で手術場内で、ICU移送前に抜管して頂き、会話しながらの移動でした

本当に昨日は頑張りました 僕だけでなく皆チーム全員が頑張りました 素晴らしいことです

昨日の衝撃

昨日は CIT 2016のため北京に滞在していました 北京の空気はとても汚く、太陽がくすんで見えるのです

8:00AM – 10:00AMの Opening Ceremony and Sessionで one of the moderatorsとして壇上に並びました 壇上に並んでいるのは世界の Interventionをリードしている錚々たるメンバーばかりであり、そこに進歩著しい中国の力を感じます

このメンバーを日本の如何な学会でも招聘できるか? とてもできないと思います それが現在中国に後塵を拝している国となる危険がある日本の現状かも知れません

ところで、その時短帯にライブデモンストレーションは中国国家循環器病センター 阜外病院から3例送られました 実際には1.5時間で 3例です 一例目は左冠動脈前下行枝近位部の単純な病変に対するPCIでしたが、当然のことながらTRIで行われましたが、何と Made-in-China BRSが使われたのです サイズは 3.5 mm x 29mmでした 丁度昨日 US FDAが BVS (Abbott)を認可しましたので、まさしく象徴的な出来事でした この BRSは strut thickness = 100 miconであり、 AbbottのBVS = 150 micronよりも優れたものです 薬は Sirolimusでした Microportが造っているものです

壇上に並んだアメリカのエライ先生方は、”Chinese advance technology has quickly catch up and went ahead of the US technology.”とえらく褒めていました きっと投資もされているのでしょうね

次の症例は、右冠動脈のCTOでしたが、これは正直、「そんなPCIしては駄目でしょう」でした

そして三例目が、何と Venus Valveを用いたTAVIだったのです Venus Valveというのは Made-in-China Copy VALVE of Medtronic CoreValveなのです もうすっかり CoreValveのコピーなのです しかし、対象となった患者さんが、TAVIによる治療がもっとも困難な症例だったのです 70歳ぐらいの非常に重症な大動脈弁狭窄症であり、真の bicuspid valveでした そして、上行大動脈は瘤状に拡張し、大動脈径は50mmありました しかも、本当に severely horizontal heartなのです これを非常にうまく治療されました

うーん 日本は大丈夫か? 頑張らねば しかし、僕も歳だからなあ

事の真相

どうも昨日 uploadした事実は時に遭遇した事は、根が深い可能性があります 先週まで中華人民共和国では、その共産党政権で一番重要な全国人民代表者会議(全人代)が開催されていました 当然のことながらこの期間は中国政府によるネットの監視もきつくなり、多くのサイト(正確に言えば IP address)が遮断され、中国国内からはアクセスできないようになっていました この遮断は完璧に為され、例えば外国を経由してアクセスしようとしても弾かれてしまうのです

昨日もホテル(Hotel Intercontinental Beijing)の客室からアクセスした時も挙動がおかしいのです これはやはり大きな政治的集会の前後であり、中国政府によってアクセスが制限されていたと考えるのが自然なように思います

国家としてインターネットのアクセスを制限することに対して僕は必ずしも反対ではありません 例えばテロや殺人を助長するようなサイトがあったとすれば、それは国家の責任で排除せねばならないと思います ですから、今回の全人代前後の極度の制限に関しても、自分が中国人民でないのですから、とやかく言う立場ではありません ただし、日本で同様のことが為されれば、猛反対しますけどね

良く知られて実はほとんどの人が知らない事実ですが、中国以上にシンガポールではネットの検閲、制限が厳しく行われています ネットといえどもその情報伝達のためには、有線(電気ケーブルや光ファイバー、海底ケーブルを介した電話回線や、通信回線)あるいは無線(WiFi、衛星通信、無線電話・通信回線)によってしか情報を伝達できません シンガポールは地理的にマレー半島から海峡を隔てて存在していますので、地政学的に隔絶するのがたやすいのです それで昔からシンガポールではインターネットの検閲および制限が行われてきました

まあ日本のようにどんなサイトにもアクセス可能というのも少し問題なように思います こんな僕は保守的ですかね

うーん これは困りますねえ

CDNというのをご存知でしょうか?  Content Delivery Networkの略だと思います これは、インターネットで皆が使用する可能性の高いライブラリなどを配信専用に最適化されたサーバーから素早く皆に供給するために色々な会社がサービスとして行っているものです 有名なものとしては、Javascriptのライブラリである jQueryを配信する CDNがありますし、Twitter bootstrapというものも無くてはならいなサービスです

これらのサービスを利用して皆がインターネットのサイトを構築しているのです

ところが本日北京で更新したサイトを uploadした後、アクセスすると、どうも jQueryが動いていない、という驚くべき現象に遭遇したのです 自分で書いたコードを見なおしてみるとどうやら 以下の部分が関係しているようです

<?php
	if ($_SERVER['HTTP_HOST'] == 'localhost') {
?>
		<link rel="stylesheet" type="text/css" href="twitter_bootstrap/css/bootstrap.min.css">
        <link rel="stylesheet" type="text/css" href="twitter_bootstrap/css/bootstrap-theme.min.css">
		<script src = "javascriptlib/jquery-1.10.2.min.js"></script>
		<script src="twitter_bootstrap/js/bootstrap.min.js"></script>
		<script src="d3/d3.min.js"></script>
<?php
	} else {
?>
        <link rel="stylesheet" type="text/css" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
  		<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css" />
		<script src = "//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
		<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
        <script src="//d3js.org/d3.v3.min.js" charset="utf-8"></script>
<?php
	}
?>

これは何をしているのか? と言えば、テスト用の local serverで作動させる時には、localのファイルを読みに行かせ、インターネットにつながっている時には、CDNを読みに行かせ作動を最適化させようという工夫なのです

ところが、どうも else以下の部分、つまりインターネット接続時に CDNを読みに行っていない、というか読み込めないようなのです この国では Googleが接続できないのは有名な話なのですが、どうやら

//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js

で、CDNからの読み込みが弾かれているようなのです うーん困った問題です 従って、急遽ライブラリの読み込みを localから行うように変更しました まあ、それで作動はきちんとするのですが・・・

そして再び D3.jsを用いて登録症例数週毎推移をグラフとして表示する部分も uploadしました こんな風になるのです グラフをクリックしてね

graph.gif
graph.gif

やっぱりTAVIって素晴らしい

本日は一例のみですが、TAVIを行いました 左鎖骨下動脈アプローチによるものです このルートは以前治験段階では多分3例ぐらい行ったことがありますが、それは 2013年から 2013年のことであり、既に3年間が経過し、その時のことはほとんど覚えていません

ただ、大動脈アプローチのように、鎖骨下動脈アプローチでは、ディバイスに直接力を伝達できるので、コントロールがしやすかった、そんな記憶が微かにあります

本日はとってもとっても難しい患者さんでした アプローチが困難なだけでなく、非常に重症、本当に一番の重症患者さんでした もちろんやる前はそれなりに緊張しましたよ しかし、一旦手技が始まればそんな緊張よりも、体と脳が働きます どんな CPUよりも高速に動作します それで最高の出来で、本当に理想的なTAVIとなりました しかも早い、実際に開始となったのは 10:30AMぐらいになっていたのですが、何と 11:20AMには止血も完了していたのです

こんなスピードで行えば重症患者さんにとってもストレス無く、非常に良好な臨床経過を辿ることは間違い無しですよね

ついに本番ページに実装

これまでの積み重ねを経て、各種テストを行いました そして ついに RAP and BEATのトップページに登録症例数のグラフ表示を実装できました

動画で表示するようにし、自施設に関しては、赤グラフで表示するようにしました もちろん、ログインが誰により行われ、その人が所属する施設が自施設となります ここで問題だったのは、$_SESSION変数を如何にして Javascriptライブラリである D3.jsに変数として渡すか? でしたが これに関しては少し調べて簡単にできることが分かりました

ここに記載されていたように json_encodeを用いて jsonオブジェクトとして渡すのだそうです これは securityが深く関係しているようです 実際の javascript codeはかくも簡単です

// json_encodeを使用して$_SESSION変数を安全に javascript変数に変換する
    var hp_tbl_id = <?php echo json_encode($_SESSION['hp_tbl_id'], JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT); ?>;

この関数の第二引数はオプションであり、security上非常に重要だそうです

更に進化中

グラフの特定のものを赤色にし、しかもその列が描き出し開始を遅らせることにしました こんな具合です

graph
graph

しかも、自動的に動画再生するように gifに変換しました

これで d3.js の威力が分かりますよね

大分と理解が進んできたぞーっ

朝6:00AM前に起床し、新古賀病院にPCIで訪問するまでの そうですね実質 1.5時間ぐらい懸案のプログラミングに挑みました

必要要件としては

  1. サーバー側のデータベースから施設あたり登録症例数を取得する
  2. 取得したデータを JSON(JavaScript Object Notation)形式でクライアントに ajax通信する
  3. クライアント側では ajax通信により JSON形式データを取得する
  4. 取得した JSON形式データを加工する
  5. それをグラフとして出力する

というものです まずは1.ですね ここは MySQL database serverに対して SQL文で問い合わせを行います 具体的には

 	try {
    // MySQLサーバへ接続
   	$pdo = new PDO("mysql:host=$db_host;dbname=$db_name;charset=utf8", $db_user, $db_password);
	} catch(PDOException $e){
    	    die($e->getMessage());
	}
	$sql = "SELECT `hp_tbl_id` as `ID`, COUNT(*) as `ENROLL` FROM `pt_tbls` GROUP BY `hp_tbl_id`;";
	$stmt = $pdo->query($sql);
	$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);	

これは、SELECT `hp_tbl_id` as `ID`, COUNT(*) as `ENROLL` FROM `pt_tbls` GROUP BY `hp_tbl_id`; という SQL文により、MySQLに対して、`hp_tbl_id`毎にカウントした数を数えさせているのです

そして、その結果は、$rowsという配列オブジェクトに格納されます しかし、ここでのプログラミング言語は PHPですので、これを JSON形式に変換しないと、その後のデータ処理ができませんので

$json = json_encode($rows);
	
header('Content-type: application/json; charset=UTF-8');
	
echo($json);
exit;

によって、$rowsという php配列オブジェクトを JSONに変換しています そして、 echo($json); という文により、JSON形式のオブジェクトがクライアントに対して通信されているのです ここまでを行うプログラムはサーバー側のものであり、言語は PHPを用いています このプログラム・ファイルを get_each_h_enroll.php としました

次に、これを取得する方のプログラムですが、これはクライアント側のものであり、あくまでも htmlで書かれています ここではファイル名を each_hp_enroll.htmlとしました

ここでのキモは、d3.jsにより JSONデータ取得の ajax通信です それが

d3.json("get_each_hp_enroll.php", function(dataSet){
	var dataE = [];
	for (var key in dataSet) {
		dataE.push(dataSet[key].ENROLL);
	}

というものなのですが、d3.jsで定義されたJSON読み込み関数に従って、get_each_hp_enroll.phpより Ajax通信で渡された JSONデータを dataSetというオブジェクトに読み込みました

そして、それの中からデータとして使用する部分 – ここでは登録症例数 == ENROLLを配列 dataEに入れ込んでいます

後は、このdataEをもちいてグラフを描くだけですが、ここでは d3.jsの強力なデータ描画機能を用いるのです そのために、描画部分も d3という名前空間の中に閉じ込められています 従って さっきの部分も含めると

d3.json("get_each_hp_enroll.php", function(dataSet){
	var dataE = [];
	for (var key in dataSet) {
		dataE.push(dataSet[key].ENROLL);
	}
	
	d3.select("#myGraph")
		.selectAll("rect")
		.data(dataE)
		.enter()
		.append("rect")
		.attr("class", "bar")
		.attr("width", function(d, i) {
			return d;
		})
		.attr("height", 20)
		.attr("x", 0)
		.attr("y", function(d, i) {
			return i*25;
		})
});

ということになります

これを実行する = ブラウザで each_hp_enroll.htmlを開く と、以下のグラフが描画されます

DBから読み取り描かれたグラフ
DBから読み取り描かれたグラフ

これて見栄えは良くありませんが、とりあえずきちんと意図通りに作動するグラフが、SQL, HTML, Javascript, D3.jsを用いて描くことができました

ちなみに、一番重要な基幹技術は SVGなのです SVGというのは Scalable Vector Graphicsの頭文字ですが、その言葉通りに、 scaleできる == サイズを自由に変えることができる ベクトル化された描画 というものであり、HTML5の最新の技術なのです これが今使用されているブラウザで用いることができるようになり世界が変わったのですよっ

その話はまたね