PCR検査の実施状況のグラフを作成

厚生労働省のデータを使って次のようなグラフを作成します。
![corona_mar14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/9ff32368-9a50-459a-77b4-f16e003b7de9.png)

フォルダー構造

```text
$ tree
.
├── data_inspect.json
├── index.html -> inspect_organization.html
├── inspect_organization.html
└── inspect_organization.js
```

```html:inspect_organization.html
<!DOCTYPE html>
<html lang="ja">
<head>
<title>PCR検査の実施状況</title>
<meta charset="UTF-8">
<script src="/js/jquery-3.4.1.min.js"></script>
<script src="/js/Chart.min.js"></script>
<script src="inspect_organization.js"></script>
</head>
<body>
<h1>国内における新型コロナウイルスに係るPCR検査の実施状況</h1>
<canvas id="chart" height="200" width="400"></canvas>
<p />
データソース<br />
<blockquote>
	<a href="https://www.mhlw.go.jp/stf/seisakunitsuite/bunya/0000121431_00086.html">厚生労働省の報道発表資料</a><p />
	<a href="https://www.mhlw.go.jp/content/10900000/000608163.pdf">
国内における新型コロナウイルスに係るPCR検査の実施状況（2020年3月13日掲載分）</a><p />
</blockquote>
<hr />
<div id="outarea_aa">outarea_aa</div>
<div id="outarea_bb">outarea_bb</div>
<div id="outarea_cc">outarea_cc</div>
<div id="outarea_dd">outarea_dd</div>
<div id="outarea_ee">outarea_ee</div>
<div id="outarea_ff">outarea_ff</div>
<div id="outarea_gg">outarea_gg</div>
<div id="outarea_hh">outarea_hh</div>
<hr />
Mar/14/2020<p />
</body>
</html>
```

```js:inspect_organization.js
// ----------------------------------------------------------------------
//	inspect_organization.js
//
//					Mar/14/2020
// ----------------------------------------------------------------------
const file_json = "data_inspect.json"

jQuery.getJSON(file_json,function (data)
	{
	jQuery("#outarea_aa").text ("*** start ***")
	const graph_data = convert01(data)
	prog01 (graph_data)
	jQuery("#outarea_hh").text ("*** end ***")
	})


// ----------------------------------------------------------------------
function convert01(data)
{
	var count = 0
	var labels = []
	var data_aa = []
	var data_bb = []
	var data_cc = []
	var data_dd = []
	var data_ee = []

	const llx = data.array_date.length - 1
	jQuery("#outarea_bb").text ("llx = " + llx)

	for (var it = 0; it < llx; it += 1)
		{
		labels.push(data.array_date[it])
		data_aa.push(data.array_aa[it])
		data_bb.push(data.array_bb[it])
		data_cc.push(data.array_cc[it])
		data_dd.push(data.array_dd[it])
		data_ee.push(data.array_ee[it])
		}

	graph_data = {}

	graph_data['labels'] = labels
	graph_data['datasets'] = []

	const unit_aa =	{ label: "国立感染症研究所",
		lineTension: 0, data : data_aa , borderColor: 'green'}

	const unit_bb =	{ label: "検疫所",
		lineTension: 0, data : data_bb, borderColor: 'blue' }

	const unit_cc =	{ label: "地方衛生研究所・保健所",
		lineTension: 0, data : data_cc ,borderColor: 'cyan'}

	const unit_dd =	{ label: "民間検査会社",
		lineTension: 0, data : data_dd, borderColor: 'yellow' }

	const unit_ee =	{ label: "大学",
		lineTension: 0, data : data_ee, borderColor: 'magenta' }

	graph_data['datasets'].push(unit_aa)
	graph_data['datasets'].push(unit_bb)
	graph_data['datasets'].push(unit_cc)
	graph_data['datasets'].push(unit_dd)
	graph_data['datasets'].push(unit_ee)

	return graph_data
}

// ----------------------------------------------------------------------
function prog01 (graph_data)
{
	var options = {}

	const config = {
		type: 'line',
		data: graph_data,
		options: options
		}

	const context = jQuery("#chart")
	const chart = new Chart(context,config)
}

// ----------------------------------------------------------------------
```

data_inspect.json の作り方

PDF データのダウンロード

```bash
wget https://www.mhlw.go.jp/content/10900000/000608163.pdf
```

![corona_table_mar14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/890890be-ad2e-0c07-70f2-824b7b48b603.png)

PDF　を　JSON に変換

```py:pdf_inspect.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
#	pdf_inspect.py
#
#						Mar/14/2020
#
import	sys
import	json
import	pdftotext
#
# ------------------------------------------------------------------
sys.path.append('/var/www/data_base/common/python_common')
from file_io import file_write_proc
# ------------------------------------------------------------------
def append_proc(array_in,cols):
#	sys.stderr.write("*** check append_proc\n")
	icount = 0
	value = ""
	for col in cols:
		if 0 < icount:
			if col == "※" or col == "計" :
				value = col
			elif col.find("(") < 0:
				value = int(col.replace(",",""))
			else:
				value = col
			array_in.append(value)
		icount += 1
#
# ------------------------------------------------------------------
# [6-2]:
def pdf_to_array_s2_proc(res,line):
	cols= line.split ()
	if (5 < len (cols)):
		if 0 < cols[0].find("("):
			sys.stderr.write(cols[0] + "\n")
			res['array_date'].append(cols[0])
			sys.stderr.write("len = %d\n" % len(res['array_date']))
			append_proc(res['array_date'],cols)
		elif 0 < cols[0].find("国立感染症"):
			append_proc(res['array_aa'],cols)
		elif 0 < cols[0].find("検疫所"):
			append_proc(res['array_bb'],cols)
		elif 0 < cols[0].find("地方衛生研究所"):
			append_proc(res['array_cc'],cols)
		elif 0 < cols[0].find("民間検査会社"):
			append_proc(res['array_dd'],cols)
		elif 0 < cols[0].find("大学"):
			append_proc(res['array_ee'],cols)
		elif 0 < cols[0].find("医療機関"):
			append_proc(res['array_ff'],cols)
# ------------------------------------------------------------------
# [6]:
def pdf_to_array_proc (file_pdf):
#
	fp_in = open(file_pdf, "rb")
	pdf = pdftotext.PDF(fp_in)
	fp_in.close()
#
	res = {}
	for key in ['array_date','array_aa','array_bb','array_cc','array_dd', \
			'array_ee','array_ff']:
		res[key] = []
#
	lines = pdf[0].split("\n")
	for str in lines:
		line = str.rstrip()
		if (5 < len (line)):
			pdf_to_array_s2_proc(res,line)
#
	return	res
# ------------------------------------------------------------------
sys.stderr.write ("*** 開始 ***\n")
file_pdf = sys.argv[1]
res = pdf_to_array_proc (file_pdf)
for key in ['array_date','array_aa','array_bb','array_cc','array_dd', \
		'array_ee','array_ff']:
		print(res[key])
#
file_out = "data_inspect.json"
out_str = json.dumps(res)
file_write_proc(file_out,out_str)
#
sys.stderr.write ("*** 終了 ***\n")
# ------------------------------------------------------------------
```

実行コマンド

```bash
./pdf_inspect.py 000608163.pdf
```