医療とザウルス奮闘記~PDAの活用術

医療現場でのPDA(Personal Digital Assistance)利用法について紹介するサイトです。従来のPalm OS機(クリエ)ではなくLinux OS機(Linux Zaurus SLC-XXX)を使い、独自のアイデアを投稿していきたいと思っています。このサイトはリンクフリーです。相互リンクをご希望の方はコメント欄にその旨お願いしますm(_ _)m なお、このブログの詳しいまとめサイトを用意しています。初めてザウルスを導入される方は、最初にここを一読されのがオススメです。

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--.--.-- --:-- | スポンサー広告 | トラックバック(-) | コメント(-) |
今回は簡単なJavaScriptを使って、身長と体重からBMIとBSAを計算する方法を説明したいと思います。「そんな面倒なのはいいや!」と思われた方は、医療とザウルス奮闘記の成果に出来上がり品をおいていますので、こちらをご利用ください。なおhtmlタグは簡単のため、極力省略していますので、W3Cの勧告通りではないと思います。また、ザウルスでは文字コードにUnicodeを使用していますが、今回はSJISを使っています。予めご了承ください。

----------------------以下、実際のソースです----------------------


<HTML>
<HEAD>
<Title>BMIBSA</Title>
<meta http-equiv="Content-Type" content="text/html; charset=Shit-JIS">
</HEAD>
<BODY bgcolor ="#9090C0" TEXT = "#102020">
<FORM name="fm">
Height(cm):
<INPUT TYPE="text" NAME="ht" style="text-align:right;width:100px;font-size:16pt;">
Weight(kg):
<INPUT TYPE="text" NAME="wt" style="text-align:right;width:100px;font-size:16pt;">
<BR><BR>
<Input Type="button" value="Calc" onClick=sel() name="ex" style="width:100px;;font-size:16px;"><BR><BR>
BMI:
<INPUT TYPE="text" NAME="bmi" style="text-align:right;width:100px;font-size:16pt;">
BSA:
<INPUT TYPE="text" NAME="bsa" style="text-align:right;width:100px;font-size:16pt;">
Obs.level:
<INPUT TYPE="text" NAME="obs" style="text-align:right;width:160px;font-size:16pt;">
</FORM>
<SCRIPT LANGUAGE="JavaScript">
<!--
function sel()
{
hgt = Number(document.fm.ht.value);
wgt = Number(document.fm.wt.value);
bvl = Math.round(wgt*1000000/hgt/hgt)/100;
document.fm.bmi.value = String(bvl);
document.fm.bsa.value = String(Math.round(Math.pow(wgt, 0.4251) * Math.pow(hgt, 0.725) * 0.7184)/100);
if (bvl < 18.5){
document.fm.obs.value = "痩せ";
}else if (bvl >= 18.5 && bvl <25){
document.fm.obs.value = "普通体重";
}else if (bvl >= 25 && bvl <30){
document.fm.obs.value = "肥満1度";
}else if (bvl >= 30 && bvl <35){
document.fm.obs.value = "肥満2度";
}else if (bvl >= 35 && bvl <40){
document.fm.obs.value = "肥満3度";
}else if (bvl >= 40){
document.fm.obs.value = "肥満4度";
}
}
//-->
</SCRIPT>
</BODY>
</HTML>

----------------------この上まで!----------------------

どうでしょうか?これを長いと思われるか、なんだ、こんな短くて済むのかと思われるかは個人の感覚だと思います。私はC言語などで記述することに比べれば、短い上に、WindowsでもLinuxザウルスでも使えるので大変便利だと思います。次回は、このソースを一行ずつ解析してみます。
スポンサーサイト
Linux Zaurusで動作する医学用計算アプリケーションを開発する際にも、
Palm OSで動作する名ソフトである「Medcalc」は大変参考になります。
今回の試みはWindows上でPalmを動作させ、Medcalcを使ってみるものです。

Palmsourceのサイト
から、Palm OS Emulatorでる「POSE」とROMイメージをダウンロードしてきます。
この際メンバー登録(無料)がいるようですので、メールアドレスなどが必要です。

Medcalcは公式サイト
よりダウンロードします。
解凍すれば.prcファイルが得られるはずです。
いよいよ、エミュレーターを動かし、最初のROMの指定などを行います。
そして、Palm OSが起動したら、右クリックでオプション画面を表示し、
「Install Application / Database」でOtherボタンを押し、「MathLib.prc」と「Medcalc.prc」を入れれば使えるようになります。

図が実際に動いている状態です。WindowsXP(CPU:Pentium 4 3.0GHz、メモリ:1GB)で試していますが、動作速度は全く問題なしです。
偶然にも見つけたのでQPOSEザウルス用も試してみましたが、こちらは現実的に動く速度ではありませんでした。残念!!
Palmのインストール
Medcalc
このブログの詳しいまとめサイトを一新しました。同時に独自でプログラミングした医療支援用ソフトなどを共有できる場としてアップローダも併設しました。多くの方々に利用して頂ければ幸いだと考えています。このブログとともに今後ともよろしくお願いしますm(_ _)m
医学部生なら一度は見たことがあると思われる電子医学ノートHPが一新されていました。日本語でこれほど充実したHPはなかなかありません。非常にお世話になっているページです。
以前より紹介している、Qt Reference Documentationは、 Qtのリリースにあわせ、いろいろなバージョンがあり、どこを参照してよいのか迷ってしまうときがあります。これについて少し解説したいと思います。
  • <本家>
    http://doc.trolltech.com/
    Qtを出している本家Trolltechのトップページです。ただし全て英語。
  • <ザウルス開発用バージョン>
    リナックスザウルスで開発する際に最も近いバージョン。ここに書かれているAPIはほぼ全て使用可能かと思います。ただしこれも全て英語。
  • <Qtopia 1.7>Qtopia1.7
    リナックスザウルスに搭載されているQtopiaの一つ新しいバージョンのようです。
  • <日本語訳Qt2.3.2>
    Qt 2.3.2の日本語訳です。はじめはまずこのページのサンプルなどをみるとイメージが掴みやすいと思います。
  • <日本語訳Qt3.0>
    日本語訳版の中ではおそらく一番新しいバージョンのQtを解説しています。ただし、本家英語版では4.0がリリースされているようです。

私はザウルスで暇な時にコードを打ち込む際は、これらのDocumentを巡集で落として、説明やサンプルを確認しながら(あるいはコピー&ペーストで利用しながら)開発をしているのでとても便利ですヽ(´ー`)ノ
以前紹介したQt Reference Documentationを参考にソフト開発に挑戦してみているが、言われた通りに作ってできるツールとまったくできないものがある。まいったな…。
シャープから提供されているQtopia開発チュートリアル
を読んでみないといけないのかな?46ページもあるんだよな…

ついでにSLシリーズ関連 クラスライブラリリファレンスでクラスの説明も行ってた…それにしても道のりは長いな…
我々がザウルスを購入しようかどうかを悩んでいたときに
医療でも使えるかもと思ったのも
医療に使えるザウルス by keke20
を見て可能性を感じたからでした。

しかし、ザウルスを購入したころとほぼ同時にこのページがなくなり唖然としましたけど、やっと復活されたのですね。
感激です。
一度、keke20さんからコメントをもらえたのですが
なかなか連絡を取ることもできず
そのままにしてしまいすみませんでした。
この場を借りて謝罪させて頂きたいと思います。

またいろいろ参考にさせてもらいますm(_ _)m
昔から伝統的(?)にアプリの最初はHelloアプリと決まっているそうなので、取りあえずそれに従いたいと思います

参考にしたのはQt Reference Documentation Qt3.0Qt Reference Documentation 2.3.2のチュートリアルにあるHelloWorld!です

まず適当な場所にhelloディレクトリを作ります。
その下にザウルスの適当なエディタで
#include <qpe/qpeapplication.h>
#include <qpushbutton.h>

int main(int argc, char** argv)
{
QPEApplication a(argc, argv);
QPushButton hello("Hello,Dr.Foo!", 0);
hello.resize( 200, 60 );
a.setMainWidget( &hello );
hello.show();
return a.exec();
}
と打ち込みmain.cppと言う名前で保存します。

次に再びエディタで
TEMPLATE = app
CONFIG = qt warn_on release
HEADERS =
SOURCES = main.cpp
INTERFACES =
INCLUDEPATH += $(QTDIR)/include
DEPENDPATH += $(QTDIR)/include
LIBS += -lqte -lqpe
と打ち込みhello.proという名前で保存します。

ターミナルを立ち上げ
$ source zgcc.sh
と打ち込み
helloディレクトリに移動します。
$ cd /hdd3/hello(私の場合/hdd3/helloだったので)
$ tmake -o Makefile hello.pro
と打ち込みます。すると/hdd3/helloにMakefileができあがっているはずです。そして
$ make
と打ち込めばコンパイルできるはずです。
$ ./hello
と実行すればうまくいけば下のように表示されるはずです

pear
昨日のやり方では少し行き詰まったので
別の方法でC/C++の開発環境を再構築することにしました
最初はZaurus Onboard Development Tools
からzgcc2Bin.cramfsとzgcc2Inc.cramfsをダウンロードしてきます。

次にTree!Explorer QTにルート権限を与えて/usr/local/の下にtmpとzgccという名前でフォルダをを作り/usr/local/zgcc/の下にincludeの名前のフォルダを作ります
次にzgcc2Bin.cramfsとzgcc2Inc.cramfsを/usr/localに移動させます。私はTree!Explorer QTで移動させました。

次にターミナルを立ち上げ
$ su
# cd /usr/local(/usr/localのディレクトリに移動する以下すべてこのディレクトリで進みます)
# mount -t cramfs zgcc2Bin.cramfs tmp -o loop
# cp -rp tmp/* zgcc/(tmpに展開されたものすべてを/usr/local/zgccに移動します)
# umount /usr/local/tmp
同様にzgcc2Inc.cramfsも処理します。
# mount -t cramfs zgcc2Inc.cramfs tmp -o loop
# cp -rp tmp/* zgcc/include/
# umount /usr/local/tmp
tmpフォルダはもういらないので消してくれてもいいです。

そして昨日と同様にシェルスクリプトを作るのですが、
今回はmntzgcc.shはいりません。/usr/local/zgcc/mntzgcc.shも消してくれてもいいです。
もう一つのzgcc.shの方は同様に/usr/local/binの中に作ります。適当なテキストエデェタでできると思います。

zgcc.sh:

export GCC_EXEC_PREFIX=/usr/local/zgcc/lib/gcc-lib/arm-linux/2.95.2/
export COMPILER_PATH=/usr/local/zgcc/lib/gcc-lib/arm-linux/2.95.2/
export CPATH=/usr/local/zgcc/include/
export LIBRARY_PATH=/usr/local/zgcc/lib/:/usr/local/zgcc/lib/gcc-lib/arm-linux/2.95.2/:/lib/:/home/QtPalmtop/lib/
export CPLUS_INCLUDE_PATH=/usr/local/zgcc/include/g++-3/
PATH=/usr/local/zgcc/bin:$PATH
export PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/zgcc/lib
export LD_LIBRARY_PATH
TMAKEPATH="/usr/local/zgcc/tmake/lib/sharp-onboard/"
export TMAKEPATH
ln -sf /usr/local/zgcc/bin/libstdc++-3-libc6.1-2-2.10.0.so /home/QtPalmtop/lib/libstdc++-libc6.2-2.so.3
ln -sf /lib/libc.so.6 /usr/lib/libc.so
ln -sf /lib/libm.so.6 /usr/lib/libm.so

次に昨日行き詰まったところです。
/usr/local/zgcc/tmake/lib/sharp-onboard/tmake.confの編集です。
適当なテキストエディタでtmake.confを立ち上げおよそ35行目ぐらいにある
TMAKE_INCDIR_QT = /mnt/card/.include/Qtopia を
TMAKE_INCDIR_QT = /usr/local/zgcc/include/Qtopia
とかえ
TMAKE_INCDIR_QTOPIA = /mnt/card/.include/Qtopia/qpe を
TMAKE_INCDIR_QTOPIA = /usr/local/zgcc/include/Qtopia/qpe
と変えます。これで準備完了だと思います。

ここで一度
suでsuper userモードで入り、
zgcc.shと打ち込んでパスを通しておきます。
その後、exitで通常userに戻り、
$ source zgcc.sh
と打ち込めばコンパイルできる環境になると思います。

試しにエディタを立ち上げ

#include <stdio.h>
int main(){
printf("Hello Dr.Foo\n");
return 0;
}

と打ち込んで「hello.c」という名前でusr/localの下に保存して
ターミナルで
$ gcc -o hello /usr/local/hello.c
と打ち込めばhelloという実行可能なファイルができるので
$ ./hello
と打ち込めば…
Hello Dr.Foo
と表示されれば成功です

たぶんこれでC/C++開発環境は整ったはずです

なにか間違ったことや気づいたことがあれば
指摘してください
ザウルス(SL-C3000)でC/C++の開発環境を作ってみたいと思います
まず
Zaurus Onboard Development Tools
からzgcc2Bin.cramfsとzgcc2Inc.cramfsをダウンロードしてきます。

zgcc2Bin.cramfsとzgcc2Inc.cramfsはディスクイメージなので適当なところにマウントして使います。
そこでマウントポイントとなるディレクトリをどこかに作らなければなりません。
個人の好みで設定されたらいいのですが
私は/usr/local/の下にzgcc2を作り他にも.zgcc と.includeの3種類作りました。この位置では当然Root権限を持たなければ作れないようです。

ディレクトリの作り方ですが、Windowsユーザーの私はTree!Explorer QTにルート権限を与えに/usr/local/の下にフォルダを作ればおしまいです。
ターミナルから作る場合は
$ su (これでRoot権限を取る)
# mkdir /usr/local/zgcc2 (mkdirはディレクトリを作るコマンド)
# mkdir /usr/local/.zgcc
# mkdir /usr/local/.include
で良いと思います。
次にzgcc2Bin.cramfsとzgcc2Inc.cramfsを/usr/local/zgcc2に移動させます。私はTree!Explorer QTで移動させました。

次にターミナルを立ち上げ
$ su
# mount -t cramfs /usr/local/zgcc2/zgcc2Bin.cramfs /usr/local/.zgcc -o loop
# mount -t cramfs /usr/local/zgcc2/zgcc2Inc.cramfs /usr/local/.include -o loop
すると/usr/local/.zgccにいろいろなファイルができていると思います。これがコンパイラやライブラリだと思います。

そして次のようなシェルスクリプトmntzgcc.shとzgcc.shを/usr/local/binの中に作ります。適当なテキストエデェタでできると思います。

mntzgcc.sh:(この名前で保存してください)

mount -t cramfs /usr/local/zgcc2/zgcc2Bin.cramfs /usr/local/.zgcc -o loop
mount -t cramfs /usr/local/zgcc2/zgcc2Inc.cramfs /usr/local/.include -o loop

zgcc.sh:

export GCC_EXEC_PREFIX=/usr/local/.zgcc/lib/gcc-lib/arm-linux/2.95.2/
export COMPILER_PATH=/usr/local/.zgcc/lib/gcc-lib/arm-linux/2.95.2/
export CPATH=/usr/local/.include/
export LIBRARY_PATH=/usr/local/.zgcc/lib/:/usr/local/.zgcc/lib/gcc-lib/arm-linux/2.95.2/:/lib/:/home/QtPalmtop/lib/
export CPLUS_INCLUDE_PATH=/usr/local/.include/g++-3/
PATH=/usr/local/.zgcc/bin:$PATH
export PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/.zgcc/lib
export LD_LIBRARY_PATH
TMAKEPATH="/usr/local/.zgcc/tmake/lib/sharp-onboard/"
export TMAKEPATH
ln -sf /usr/local/.zgcc/bin/libstdc++-3-libc6.1-2-2.10.0.so /home/QtPalmtop/lib/libstdc++-libc6.2-2.so.3
ln -sf /lib/libc.so.6 /usr/lib/libc.so
ln -sf /lib/libm.so.6 /usr/lib/libm.so

これで殆どできたと思います。
ターミナルから
$ su
# mntzgcc.sh
と実行したのち
ユーザーZaurusに戻って
$ source zgcc.sh
と打ち込めばコンパイルできる環境になると思います。

試しにエディタを立ち上げ

#include <stdio.h>
int main(){
printf("Hello Dr.Foo\n");
return 0;
}

と打ち込んで「hello.c」という名前でusr/local/zgcc2の下に保存して
ターミナルで
$ gcc -o hello /usr/local/zgcc2/hello.c
と打ち込めばhelloという実行可能なファイルができます
そこで
$ ./hello
と打ち込めば…
Hello Dr.Foo
と表示されればコンパイル成功だと思いますw

やっとソフト開発に一歩前進ですか…
まあC/C++で作る可能性低いけど…

適当にやっているうちに
いつの間にかできたところもかなり多いので
ご指摘があればよろしくお願いします。
さて、サーバー計画編ではサーバーを構築する実験をしてみましたが、この時に使用した書籍を紹介したいと思います。

PHP5であなたもウェブアプリが作れる!php5
Apache、PHPの導入から設定まで詳しく解説しています。
付属CD-ROMもついているので、コードが??でもなんとか気合いで^^;
初心者歓迎と書いてあるだけはあるです。。。
ブログを1から作ることも可能みたいです。

php5

PEAR入門 PHP標準ライブラリを極める!pear
PHPで似たような動作をするときにはPEARが便利です。
この本でもある程度ApacheとPHP自体が説明されています。
PHPはエクセルファイルも製作可能みたいので、
機会があればまた実験してみたいと思います。

pear

Smarty入門~PHP5+テンプレート・エンジンでつくるMVCアプリケーション~smarty
ブログの多くや、楽天等でSmartyが使われているようです。
似たような動作を少しずつ変えて表示するのにSmarty必須らしいです。。。
ここまで来るとかなり敷居が高いなぁと痛感(>_<)
時間があれば頑張りたい一冊です。

smarty
今回は少し番外編・・・
Another HTML-lint gateway
なるページでhtmlやxmlの採点が出来ます。
このブログはxmlで書かれている(ぽい)のでそれに従って採点してみました。
結果は・・・・・・最初に出たのはなんと24点orz。
これはやばいと思い直し、なんとかマシに整形しなおしました。
<BR>タグは<br />と書かないといけないそうで、なんだか高校時代の英文法(whomとか)を思い出しました。
みなさんのホームページも一度チェックなされてはどうでしょうか?
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。