#!/usr/bin/perl use lib '/home/*****/perl5/lib/perl5'; use Time::Local; use Calendar::Japanese::Holiday; print "Pragma: no-chache\r\n"; print "Cache-Control: no-chache\r\n"; #print "Content-Type: text/html\r\n\r\n"; $WEEK[0]='日'; $WEEK[1]='月'; $WEEK[2]='火'; $WEEK[3]='水'; $WEEK[4]='木'; $WEEK[5]='金'; $WEEK[6]='土'; $BG[0] = "#ffeedd"; $BG[1] = "white"; $BG[2] = "#ddffee"; $BG[3] = "white"; $BG[4] = "#ddffee"; $BG[5] = "white"; $BG[6] = "#ddeeff"; my %param = map { /([^=]+)=(.+)/ } split /&/, $ENV{'QUERY_STRING'}; $day = $param{'day'}; $month = substr($day, 0, 7); mkdir("ketsuatsu"); ####################################################################### 更新 if( $day ne '') { for( $i=0; $i<12; $i++) { $param{$i} =~ s/\+/ /g; $param{$i} =~ s/%([0-9a-fA-F]{2})/pack("H2",$1)/eg; $param{$i} =~ tr/[0-9]/*/c; $param{$i} =~ s/\*//gs; } $file = $month.".txt"; open IN, "< ketsuatsu/$file"; while() { s/[\r\n]//gs; @a = split("\t", $_); $days{$a[0]} = $a[1]; } $days{$day} = "$param{0}/$param{1}/$param{2}/$param{3}/$param{4}/$param{5}/$param{6}/$param{7}/$param{8}/$param{9}/$param{10}/$param{11}"; close IN; open OUT, "> ketsuatsu/$file.temp"; for($i=1; $i<=31; $i++) { $ymd = "$month-".substr(100+$i,1); if( $days{$ymd} ne '' ) { print OUT "$ymd\t$days{$ymd}\n"; } } close OUT; unlink "ketsuatsu/$file"; rename "ketsuatsu/$file.temp", "ketsuatsu/$file"; print "Location: https://".$ENV{'SERVER_NAME'}.$ENV{'SCRIPT_NAME'}."\r\n\r\n"; exit; } ####################################################################### 提出用 print "Content-Type: text/html\r\n\r\n"; print "\n\n"; print "血圧表\n"; if( $param{'printer'} ne '') { print < /* A4縦用のベース設定 */ @page { size: A4 portrait; /* 横の場合はlandscape */ margin: 0mm; } /* 各要素の余白リセット */ *{ margin: 0mm; padding: 0mm; spacing: 0mm; } td { padding: 2px; font-family: Meiryo UI; font-size: 12px; } @media screen { body { background: #eee; } } /* 印刷時の調子を整える */ body { width: 210mm; /* 用紙の横幅を改めて指定 Chrome用 */ -webkit-print-color-adjust: exact; color-adjust: exact; line-height: 1.5em; } /* 印刷1ページ用のコンテンツはここで定義 */ .page { width: 210mm; /* 用紙の横幅を改めて指定 */ height: 296.5mm;/* 高さには0.5mm余裕をもたせる */ page-break-after: always; box-sizing: border-box; padding: 10mm 10mm;/* 用紙の余白 */ font-size: 11pt; margin: 0mm; } END_HEADER print "\n"; print "\n"; print "\n" . "\n"; @ymd = split "-", $param{'printer'}; $cur = timelocal(0,0,0,$ymd[2],$ymd[1]-1,$ymd[0]); $prevmon = -1; $i = 0; print "
"; $header = "
日付午前午後
最高最低脈拍最高最低脈拍
"; while( $i < 36 ) { ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($cur); $year = $year+1900; $mon = substr($mon+101,1); print "
$header\n" if($i==0); print "
$header\n" if($i==36/2); if($prevmon != $mon) { $file = "$year-$mon.txt"; open IN, "< ketsuatsu/$file"; while() { s/[\r\n]//gs; @a = split("\t", $_); $days{$a[0]} = $a[1]; } close IN; } $mday = substr($mday+100,1); $bgcolor = ((isHoliday($year, $mon+0, $mday+0, 1) eq "")?$BG[$wday%7]:$BG[0]); print "\n
$year-$mon-$mday
($WEEK[$wday])"; @value = split "/", $days{"$year-$mon-$mday"}; for($j=0;$j<12;$j++) { $value[$j] = " $value[$j]" if($value[$j] eq ""); } print "
$value[0]$value[1]$value[2]$value[6]$value[7]$value[8]"; print "\n
$value[3]$value[4]$value[5]$value[9]$value[10]$value[11]"; print "
  \n" if($i==36/2-1); $cur += 1*24*60*60; $i ++; if($i>=36) { last; } } print "

\n"; print "\n"; print "\n"; print "午前\n"; $prevmon = -1; print ""; print "\n"; print "午後\n"; $prevmon = -1; print ""; $cur = timelocal(0,0,0,$ymd[2],$ymd[1]-1,$ymd[0]); $i = 0; $prevamsx = -1; $prevamsy = -1; $prevamdx = -1; $prevamdy = -1; $prevpmsx = -1; $prevpmsy = -1; $prevpmdx = -1; $prevpmdy = -1; for($x=50;$x<250;$x+=50) { print "$x\n"; print "$x\n"; print "\n"; } print "(mmHg)\n"; print "(mmHg)\n"; while( $i < 36 ) { $y = val2y($i); ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($cur); $year = $year+1900; $mon = substr($mon+101,1); $mday = substr($mday+100,1); if($prevmon != $mon) { $file = "$year-$mon.txt"; open IN, "< ketsuatsu/$file"; while() { s/[\r\n]//gs; @a = split("\t", $_); $days{$a[0]} = $a[1]; } close IN; } @value = split "/", $days{"$year-$mon-$mday"}; $thisamsx = ($value[0] ne "" ) ? ($value[0]+(($value[3] ne "") ? $value[3] : $value[0]))/2 : ""; $thisamdx = ($value[1] ne "" ) ? ($value[1]+(($value[4] ne "") ? $value[4] : $value[1]))/2 : ""; $thispmsx = ($value[6] ne "" ) ? ($value[6]+(($value[9] ne "") ? $value[9] : $value[6]))/2 : ""; $thispmdx = ($value[7] ne "" ) ? ($value[7]+(($value[10] ne "") ? $value[10] : $value[7]))/2 : ""; # print "\n"; if($thisamsx > 0 ) { if( $prevamsx > 0 ) { if( $prevamsy > 0 ) { print "\n"; } } $prevamsy = $y; $prevamsx = $thisamsx; print ""; } if($thisamdx > 0 ) { if( $prevamdx > 0 ) { if( $prevamdy > 0 ) { print "\n"; } } $prevamdy = $y; $prevamdx = $thisamdx; print ""; } if($thispmsx > 0 ) { if( $prevpmsx > 0 ) { if( $prevpmsy > 0 ) { print "\n"; } } $prevpmsy = $y; $prevpmsx = $thispmsx; print ""; } if($thispmdx > 0 ) { if( $prevpmdx > 0 ) { if( $prevpmdy > 0 ) { print "\n"; } } $prevpmdy = $y; $prevpmdx = $thispmdx; print ""; } $cur += 1*24*60*60; $i++; $color = (($wday==0)||isHoliday($year,$mon+0,$mday+0, 1))?"#dd0000":(($wday==6)?"#0000dd":"black"); print "\n"; print "$year-$mon-$mday ($WEEK[$wday])\n"; } print "\n"; exit; } sub val2x { return (($_[0])*3.9+50); } sub val2y { return (120 + $_[0] * 37); } ####################################################################### 入力 print < END $t = time; ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($t -7*24*60*60); $wstart = ($year+1900)."-".substr($mon+101,1).".txt"; ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($t +1*24*60*60); $wend = ($year+1900)."-".substr($mon+101,1).".txt"; open IN, "< ketsuatsu/$wstart"; while() { $_ =~ s/[\r\n]//gs; @a = split("\t", $_); $days{$a[0]} = $a[1]; } close IN; if($wstart ne $wend) { open IN, "< ketsuatsu/$wend"; while() { $_ =~ s/[\r\n]//gs; @a = split("\t", $_); $days{$a[0]} = $a[1]; } close IN; } $cur = $t -7*24*60*60; $tab = 1; print "\n"; print "\n"; print "

血圧入力

\n"; print ""; do { ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($cur); $year += 1900; $mon ++; $today = $year."-".substr(100+$mon,1)."-". substr(100+$mday,1); $cur += 1*24*60*60; @value = split "/", $days{$today}; if(($value[0] eq "")||($value[6] eq "")) { $date = " class=vacant"; } else { $date = " class=filled"; } if($value[0] ne "") { $am = " class=filled"; } else { $am = " class=vacant"; } if($value[6] ne "") { $pm = " class=filled"; } else { $pm = " class=vacant"; } $color = (($wday==0)||isHoliday($year,$mon+0,$mday+0, 1))?"#dd0000":(($wday==6)?"#0000dd":"black"); print "\n"; $tab++; print "\n"; $tab++; print "\n"; $tab+=4; print "\n"; $tab++; print "\n"; $tab++; print "\n"; $tab++; print "\n"; $tab+=4; print "\n"; $tab-=10; print ""; print "\n"; $tab++; print "\n"; $tab++; print "\n"; $tab+=5; print "\n"; $tab++; print "\n"; $tab++; print "\n"; $tab+=2; } while($t>=$cur); print "
\n"; print "\n"; print "".substr($today,5)."
\n($WEEK[$wday])
\n"; print "
\n"; $t = time(); ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($t -35*24*60*60); $year += 1900; $mon = substr($mon+101,1); $mday = substr($mday+100,1); print "

\n"; ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($t); $year += 1900; $mon = substr($mon+101,1); $mday = substr($mday+100,1); print "から \n"; print "
\n"; print "\n";