宣伝
兵庫県のコロナウイルス特設サイトが公開中
https://stop-covid19-hyogo.org/
僕の公開しているGraphQL APIとは今のところ別働で動いていますが
かなり参考にさせて頂いておりますのでご紹介しておきます。
hyogo.covid19-api
api内訳
- readInfectedPeoples
- readExamOverviews
- readExamDetails
- readPCROverviews(2020/3/23 追加)
readInfectedPeoples
感染者情報一覧取得クエリ
https://web.pref.hyogo.lg.jp/kk03/corona_kanjyajyokyo.html
上記のページに掲載されている感染者情報のエクセルファイルを30分おきに
コンテナ内にダウンロード。
そのファイルを読み込みPostgreSQLにデータを挿入します。
gqlgenで立てたGraphQLサーバーでgormを使ってPostgreSQLからデータを取得し配信しています。
GraphQLのフィールドとエクセルファイルとの関連
エクセルの「認定こども園」以降のデータはcluster_places
というサブコレクションクエリで読み込めます。
番号 | 確認日 | 年代 | 性別 | 管轄 | 居住地 | 職業 | 発症日 | 渡航歴 | 備考欄 |
---|---|---|---|---|---|---|---|---|---|
no | confirmed_date | age_group | sex | jurisdiction | residence | occupation | onset_date | travel_history | remarks |
全フィールド取得クエリ例
uuidによるidフィールドもありますがプレイグラウンドで試す際は長すぎて見づらくなるので
ここではidを含めないクエリを貼っておきます。
query{
readInfectedPeoples{
no
confirmed_date
age_group
sex
jurisdiction
residence
occupation
onset_date
travel_history
remarks
cluster_places{
no
label
is_relation
}
}
}
readExamOverviews
https://web.pref.hyogo.lg.jp/kk03/corona_hasseijyokyo.html
上記のページ、「発生状況」すぐ下のpdfファイルを30分おきに
コンテナ内にダウンロード。
そのファイルを読み込みPostgreSQLにデータを挿入します。
gqlgenで立てたGraphQLサーバーでgormを使ってPostgreSQLからデータを取得し配信しています。
全フィールド取得クエリ例
query{
readExamOverviews{
no
label
count
}
}
readExamDetails
https://web.pref.hyogo.lg.jp/kf16/singatakoronakensa.html
上記のバーチャート下部のテーブルタグを30分おきにスクレイピング
抽出したデータをPostgreSQLにデータを挿入します。
gqlgenで立てたGraphQLサーバーでgormを使ってPostgreSQLからデータを取得し配信しています。
全フィールド取得クエリ例
query{
readExamDetails{
no
date
exam_count
positive_count
}
}
readPCROverviews
readExamOverviewsの改善版
2020/3/13までのhttps://web.pref.hyogo.lg.jp/kk03/corona_hasseijyokyo.html
のpdf情報を蓄積
ただし、pdfは毎日差し替えられるので
https://web.pref.hyogo.lg.jp/kf16/singatakoronakensa.html の累積情報と
https://covid-hyogo.now.sh から一部データを拝借しております。
(手入力www)
2020/3/23よりデータ蓄積開始しています。
dateフィールドの日付は兵庫県サイトに掲載されているルールに則って前日の日付を
ISO8601(RFC3339)形式で保存しています。
ちなみに、サイトのデータが更新されるまでは前日公表分のデータと同様のデータを返します。
全フィールド取得クエリ例
query{
readPCROverviews{
id
date
pcr_total
pcr_positive_count
hospitalized_count
not_serious_count
serious_count
death_count
discharge_count
}
}
まとめ
2020/3/23追記
そろそろ、GraphQLのサブスクリプションにトライしてみようかと
あと、運用回りでいよいよ、CIに興味が出てきた。