#!/usr/local/bin/perl # 医療機関検索プログラム(検索 一覧&詳細出力) #------------------------------------------------- # メイン #------------------------------------------------- # データファイル $datfile1 = '../data1/aaa91.dat'; $datfile2 = '../data1/aaa92.dat'; # 戻り先のリンク $backurl = 'http://aki.hiroshima.med.or.jp/51ichirn.htm'; # フォームデコード &decode; # ファイル検索、出力 if ($case eq "POST") { &kensaku; } else { &shousai; } #------------------------------------------------- # 入力デコード・サブ(POST、GET) #------------------------------------------------- sub decode # 日本語の変換は、やっていない。 { if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buf, $ENV{'CONTENT_LENGTH'}); $case = "POST"; } else { $buf = $ENV{'QUERY_STRING'}; $case = "GET"; } undef(%in); my @buf = split(/&/, $buf); foreach (@buf) { my ($key, $val) = split(/=/); $val =~ tr/+/ /; $val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/eg; # エスケープ $val =~ s/&/&/g; $val =~ s/"/"/g; $val =~ s//>/g; $val =~ s/\r\n/
/g; $val =~ s/\r/
/g; $val =~ s/\n/
/g; $in{$key} = $val; } } #------------------------------------------------- # 一覧データ検索、一覧表示サブ #------------------------------------------------- sub kensaku { if (($in{'chiku'} == ' ') or ($in{'kamoku'} == ' ')) { print "Content-type: text/html\n\n"; print <<"EOM";

地区、および診療科目系の指定がありませんでした。


ブラウザで戻り、再度、地区及び診療科目系を選んでください。

EOM exit; } &header1; $x = 0; open(IN,"<","$datfile1"); while () { ($chikucd,$chiku,$kikancd,$kikan,$kamoku,$k1,$k2,$k3,$k4,$k5,$k6,$k7,$jusho,$tell) = split(/<>/); #ファイル読み込みの打ち切り(TAT向上策) if (($in{'chiku'} != "1000") and ($in{'chiku'} != "2000") and ($in{'chiku'} != "3000") and ($in{'chiku'} < $chikucd)) { close(IN); # 終了メッセージ print <<"END";

$x  件 でした。


医療機関検索に戻る

 Copyright (C) 2006  All Rights Reserved. 安芸地区医師会 (掲載内容の無断転載を禁じます)

END exit; } #マッチング処理 &maching; # 検索、一覧表示 if(($chikuok == "1") and ($kamokuok == "1")) { print <<"EOM"; 医療機関の詳細検索ボタン $chiku $kikan $kamoku $jusho $tell EOM $x += 1; } } close(IN); # 終了メッセージ print <<"END";    

$x  件 でした。


医療機関検索に戻る

 Copyright (C) 2006  All Rights Reserved. 安芸地区医師会 (掲載内容の無断転載を禁じます)

END exit; } #------------------------------------------------- # 詳細データ検索、詳細表示サブ #------------------------------------------------- sub shousai { &header2; # 検索、詳細表示 $found = "N"; open(IN,"<","$datfile2"); # ファイル1行の処理 while () { my ($kikancd,$chiku,$kikan,$inchou,$sonotais,$kamoku, $yubin,$jusho,$map,$tell,$fax,$chusha,$daisu,$url, $am,$am1,$am2,$am3,$am4,$am5,$am6,$am7, $pm,$pm1,$pm2,$pm3,$pm4,$pm5,$pm6,$pm7,$kyushin, $nyuin,$oushin,$tokki) = split(/<>/); # URLに事前にリンクをつけ置く if ($url =~m/^htt/) { $url = "$url "; } # 医療機関コードのマッチング処理   if ($kikancd == $in{'kikancd'}) { $found = "Y"; # 1医療機関のアウトプット print <<"EOM"; 地区名 $chiku 医療施設名 $kikan 院長名 $inchou その他医師名 $sonotais 診療科目 $kamoku 住所 $yubin$jusho 地図
(医療機関ごとの地図は、工事中です。) TEL $tell FAX $fax 駐車場
$chusha $daisu 台 )
ホームページ $url 診療時間
時間帯
AM $am $am1 $am2 $am3 $am4 $am5 $am6 $am7
PM $pm $pm1 $pm2 $pm3 $pm4 $pm5 $pm6 $pm7
休診日等 $kyushin
入院 $nyuin 往診 $oushin 特記事項 $tokki

一覧表\に戻るにはブラウザの「戻る」ボタンを押してください。

Copyright(C)2006  All Rights Reserved. 安芸地区医師会 (掲載内容の無断転載を禁じます)

EOM close(IN); exit; } } if ($found == "N") { print <<"END";

データが見当たりませんでした。

まことにお手数ですが、安芸地区医師会事務局までご連絡ください。

END } } #------------------------------------------------- # HTMLヘッダー 一覧用サブ #------------------------------------------------- sub header1 { print "Content-type: text/html\n\n"; #  選択した項目の表示準備 &sentaku; print <<"HEAD1"; 安芸地区医師会、医療機関一覧表\ページ


1.前ページで選択された地区・診療科目系に該当する医療施設の一覧表\です。
     (地区=$sen1、診療科目系=$sen2  )
2.表\示の順番は地区順、医療施設名のあいうえお順です。
3.左欄をクリックすれば、医療施設の詳細情報が表\示されます。


HEAD1 } #------------------------------------------------- # HTMLヘッダー 詳細用サブ #------------------------------------------------- sub header2 { print "Content-type: text/html\n\n"; print <<"HEAD2"; 安芸地区医師会、医療機関詳細用ページ

医療機関の詳細


1.前ページで選択された医療施設の詳細情報です。
2.下記情報につきましては、変更されている可能\性もございますので、受診される場合は、直接お問合わせ下さい。


地区 医療施設名 診療科目 住所 電話
HEAD2 } #------------------------------------------------- # マッチング・メインサブ #------------------------------------------------- sub maching { $chikuok = "0"; $kamokuok = "0"; &maching1; if ($chikuok == "1") { &maching2; } } #------------------------------------------------- # 地区マッチングサブ #------------------------------------------------- sub maching1 { if ($in{'chiku'} == $chikucd) { $chikuok = "1"; } elsif (($in{'chiku'} == "1000") and (($chikucd == "1010") or ($chikucd == "1020") or ($chikucd == "1030") or ($chikucd == "1040") or ($chikucd == "1050") or ($chikucd == "1060"))) { $chikuok = "1"; } elsif (($in{'chiku'} == "2000") and (($chikucd == "2010") or ($chikucd == "2020") or ($chikucd == "2030") or ($chikucd == "2040") or ($chikucd == "2050") or ($chikucd == "2060"))) { $chikuok = "1"; } elsif (($in{'chiku'} == "3000") and (($chikucd == "3010") or ($chikucd == "3020") or ($chikucd == "3030") or ($chikucd == "4010") or ($chikucd == "4020") or ($chikucd == "4030") or ($chikucd == "4040"))) { $chikuok = "1"; } else { $chikuok = "0"; } } #------------------------------------------------- # 医療科目系マッチングサブ #------------------------------------------------- sub maching2 { if ($in{'kamoku'} == '99') { $kamokuok = "1"; } elsif (($in{'kamoku'} == $k1) or ($in{'kamoku'} == $k2) or ($in{'kamoku'} == $k3) or ($in{'kamoku'} == $k4) or ($in{'kamoku'} == $k5) or ($in{'kamoku'} == $k6) or ($in{'kamoku'} == $k7)) { $kamokuok = "1"; } else { $kamokuok = "0"; } } #------------------------------------------------- #  選択した項目の表示準備 #------------------------------------------------- sub sentaku { $sen1 = $in{'chiku'}; $sen2 = $in{'kamoku'}; $sen1 =~s/1000/安芸区すべて/; $sen1 =~s/1010/安芸区船越/; $sen1 =~s/1020/安芸区矢野/; $sen1 =~s/1030/安芸区畑賀/; $sen1 =~s/1040/安芸区中野/; $sen1 =~s/1050/安芸区瀬野/; $sen1 =~s/1060/安芸区阿戸/; $sen1 =~s/2000/安芸郡すべて/; $sen1 =~s/2010/安芸郡府中町/; $sen1 =~s/2020/安芸郡海田町/; $sen1 =~s/2030/安芸郡坂町/; $sen1 =~s/2040/安芸郡熊野町/; $sen1 =~s/3000/島嶼部すべて/; $sen1 =~s/3010/江田島市江田島町/; $sen1 =~s/4010/呉市音戸町/; $sen1 =~s/4020/呉市倉橋町/; $sen1 =~s/4030/呉市下蒲刈町/; $sen1 =~s/4040/呉市蒲刈町/; $sen2 =~s/10/内科系/; $sen2 =~s/20/外科系/; $sen2 =~s/30/眼科・耳鼻咽喉科系/; $sen2 =~s/40/皮膚・泌尿器科系/; $sen2 =~s/50/産婦人科系/; $sen2 =~s/60/精神科系/; $sen2 =~s/90/その他/; $sen2 =~s/99/全科目/; }
(項目) (詳細情報)