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>

---------------------------------------------


プログラムについて、アドバイスあれば教えてください


戻る