1-3.PHPのサンプルプログラム
GETメソッドを使った患者基本情報取得のサンプルプログラムです
------patientinfoget.html-----
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>患者基本情報の取得</title>
</head>
<body>
<form action="patientinfoget.php" method="post">
患者ID:<br />
<input type="text" name="patid" size="30" value="" /><br />
<br />
<input type="submit" value="検索する" />
</form>
</body>
</html>
------patientinfoget.html-----
------patientinfoget.php-----
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>患者基本情報</title>
</head>
<body>
<?php
#患者IDを入力フォームより取得
$patid=$_POST["patid"] ;
#orcaのユーザー、パスワード、ホスト情報
$user = "ormaster";
$password = "123ormaster";
$host="localhost";
#GETリクエストするURL
$url = "http://" . $user . ":" . $password . "@" . $host . ":8000/api01r/patientget?id=" . $patid;
#echo $url . "<br />";
$tmpfile="tmp.xml";
#Curl関数でAPIからXMLファイルを取得
$ch = curl_init($url);
$fp = fopen($datafile, "w");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
#Simplexml関数でXMLファイルを解析
$xml = simplexml_load_file($datafile);
#社会保険のレコード枠を数える
foreach($xml->record->record->record->array as $data)
{
#echo $data->attributes() . ": " . $data->count() . "<br />";
}
$HI=$data->count();
#公費のレコード枠を数える
foreach($xml->record->record->record->array[0]->record->array as $data)
{
#echo $data->attributes() . ": " . $data->count() . "<br />";
}
$PI=$data->count();
foreach($xml->record->record->record->string as $data)
{
echo $data->attributes() . ": " . $data . "<br />";
}
foreach($xml->record->record->record->record->string as $data)
{
echo $data->attributes() . ": " . $data . "<br />";
}
$a=0;
while($a < $HI+1) {
echo "<br />";
#社会保険情報を取得
foreach($xml->record->record->record->array->record[$a]->string as $data)
{
#要素が空白のときは出力しない
if ($data != ""){
echo $data->attributes() . ": " .$data."<br />";
}
}
$b=0;
while($b < $PI+1) {
#公費情報を取得
foreach($xml->record->record->record->array->record[$a]->array->record[$b]->string as $data)
{
#要素が空白のときは出力しない
if ($data != ""){
echo $data->attributes() . ": " .$data."<br />";
}
}
$b++;
}
$a++;
}
?>
</body>
</html>
------patientinfoget.php-----
POSTメソッドを使った患者名とその情報検索プログラム
a.患者名検索プログラム
------patkensaku.html-------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>sample</title>
</head>
<body>
<form action="patkensaku.php" method="post">
検索する名前:<br />
<input type="text" name="name" size="30" value="" /><br />
開始生年月日:<br />
<input type="text" name="firstday" size="30" value="" /><br />
終了生年月日:<br />
<input type="text" name="endday" size="30" value="" /><br />
性別:<br />
<select name="sex" size="2">
<option value="" selected></option>
<option value="1">男性</option>
<option value="2">女性</option>
</select><br/>
<br />
<input type="submit" value="検索する" />
</form>
</body>
</html>
--------------------------------------------
b.検索結果の患者リストを表示
-------------patkensaku.php-------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>患者検索結果</title>
</head><body>
<form name="form1" method="post" action="patkensaku2.php">
<?php
$tmpfile="tmp.xml";
$url = "http://yuen:MIMI87@10.211.55.10:8000/api01r/patientlst3?class=01";
#POSTするデータを設定
$param ='<data><record><record name="patientlst3req"><string name="WholeName">'.$_POST["name"].'</string><string name="Birth_StartDate">'.$_POST["firstday"].'</string><string name="Birth_EndDate">'.$_POST["endday"].'</string><string name="Sex">'.$_POST["sex"].'</string><string name="InOut"></string></record></record></data>';
$fp = fopen($tmpfile, "w");
#セッションの初期化
$ch = curl_init();
//リクエストを送るURL
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_POST, 1);
//ヘッダーの出力無し
curl_setopt( $ch, CURLOPT_HEADER, 0 );
//POSTするデータ
curl_setopt( $ch, CURLOPT_POSTFIELDS, $param );
//結果を変数で受け取る
//curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
//結果をファイルで受け取る
curl_setopt($ch, CURLOPT_FILE, $fp);
//リクエスト送信
curl_exec( $ch );
//セッションを終了
curl_close( $ch );
fclose($fp);
$xml = simplexml_load_file($tmpfile);
foreach($xml->record->record->string as $data)
{
#echo $data->attributes() . ": " .$data."<br />";
#要素の数を数える
if ($data->attributes()== "Target_Patient_Count"){
$RI=$data;
}
}
print("<table border=1>");
if($RI==0){
echo "該当患者なし";
}else{
print("<td>".""."<td>"."ID"."<td>"."氏名"."<td>"."シメイ"."<td>"."生年月日"."<td>"."性別"."<td>");
print('<tr/>');
}
$a=0;
while($a < $RI) {
print('<tr>');
$b=$a+1;
print( "<td>".$b);
#氏名・生年月日
foreach($xml->record->record->array->record[$a]->string as $data)
{
#要素が空白のときは出力しない
if ($data != ""){
if ($data->attributes()=="Sex"){ #性別は漢字出力
if ($data==1){
print("<td>" . "男");
}else{
print("<td>" . "女");
}
}else{
print("<td>" . $data);
}
}
}
print('<td><input type="checkbox" name="chk[]" value="'.$a.'">');
print('<tr/>');
$a++;
}
print("</table>");
?>
<input type="submit" name="Submit" value="選択">
<p><a href="patkensaku.html">戻る</a></p>
</form>
</body>
</html>
------------------------------------------------
患者個人の詳細情報を表示(複数選択可)
-------------patkensaku2.php--------------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>患者情報</title>
</head>
<body>
詳細情報<hr>
<?php
$tmpfile="tmp.xml";
$xml = simplexml_load_file($tmpfile);
// $checkboxの中身は配列
$checkbox = $_REQUEST["chk"];
for($i=0; $i<sizeof($checkbox); $i++){
#$a="${checkbox[$i]}";
$a=$checkbox[$i];
$b=$a+1;
#print "${checkbox[$i]}<br>";
print("患者情報" . $b . "<br />");
$b= (int) $a;
print("<table border=1>");
#氏名・生年月日
foreach($xml->record->record->array->record[$b]->string as $data)
{
#要素が空白のときは出力しない
if ($data != ""){
if ($data->attributes()=="Sex"){ #性別は漢字出力
if ($data==1){
print("<td>" .$data->attributes() . "<td>" . '男' . "<tr />");
}else{
print("<td>" .$data->attributes() . "<td>" .'女' . "<tr />");
}
}else{
print("<td>" .$data->attributes() . "<td>" . $data . "<tr />");
}
}
}
#住所/電話
foreach($xml->record->record->array->record[$b]->record->string as $data)
{
#要素が空白のときは出力しない
if ($data != ""){
print("<td>" .$data->attributes() . "<td>" . $data . "<tr />");
}
}
#社会保険情報を取得
foreach($xml->record->record->array->record[$b]->array->record->string as $data)
{
#要素が空白のときは出力しない
if ($data != ""){
print("<td>" .$data->attributes() . "<td>" . $data . "<tr />");
}
}
print("</table>");
}
?>
<p><a href="patkensaku.html">戻る</a></p>
</body>
</html>
---------------------------------------------
プログラムについて、アドバイスあれば教えてください