-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
138 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
using Sciensano.CovidJson.Parser.SciensanoModels; | ||
using System; | ||
|
||
namespace Sciensano.CovidJson.Parser.Models | ||
{ | ||
public class VaccinationModel : ILocalModel | ||
{ | ||
public VaccinationModel(SciensanoVaccinationModel model) | ||
{ | ||
Date = model.Date ?? new DateTime(); | ||
Count = model.Count; | ||
Brand = model.Brand; | ||
|
||
switch(model.Dose) | ||
{ | ||
case SciensanoModels.Dose.A: | ||
Dose = Dose.First; | ||
break; | ||
case SciensanoModels.Dose.B: | ||
Dose = Dose.Second; | ||
break; | ||
case SciensanoModels.Dose.C: | ||
Dose = Dose.OnlyDose; | ||
break; | ||
default: | ||
Dose = Dose.Unknown; | ||
break; | ||
} | ||
} | ||
|
||
public DateTime Date { get; set; } | ||
public int Count { get; set; } | ||
public Dose Dose { get; set; } | ||
public string Brand { get; set; } | ||
} | ||
|
||
public enum Dose | ||
{ | ||
Unknown = 0, | ||
First, | ||
Second, | ||
OnlyDose | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
using System; | ||
|
||
namespace Sciensano.CovidJson.Parser.SciensanoModels | ||
{ | ||
//{"DATE":"2020-12-28","REGION":"Brussels","AGEGROUP":"25-34","SEX":"F","BRAND":"Pfizer-BioNTech","DOSE":"A","COUNT":1} | ||
public class SciensanoVaccinationModel : IDatedSciensanoModel | ||
{ | ||
public DateTime? Date { get; set; } | ||
public string Region { get; set; } | ||
public string AgeGroup { get; set; } | ||
public string Sex { get; set; } | ||
public string Brand { get; set; } | ||
public Dose Dose { get; set; } | ||
public int Count { get; set; } | ||
} | ||
|
||
public enum Dose | ||
{ | ||
Unknown, | ||
A, | ||
B, | ||
C | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
using Sciensano.CovidJson.Parser.Models; | ||
using Sciensano.CovidJson.Parser.SciensanoModels; | ||
using System; | ||
using System.Collections.Generic; | ||
using System.IO; | ||
using System.Linq; | ||
using System.Threading.Tasks; | ||
|
||
namespace Sciensano.CovidJson.Parser.SciensanoParsers | ||
{ | ||
public class VaccinationParser : BaseSciensanoParser<VaccinationModel, SciensanoVaccinationModel> | ||
{ | ||
public override Task<List<ILocalModel>> ParseAsync(Stream stream) | ||
{ | ||
var list = new List<VaccinationModel>(); | ||
var jsonmodels = ParseJson(stream); | ||
|
||
var doses = jsonmodels.Select(m => new { m.Dose, m.Brand }).Distinct(); | ||
|
||
foreach(var dose in doses) | ||
{ | ||
var model = new VaccinationModel(jsonmodels.First(m => m.Brand == dose.Brand && m.Dose == dose.Dose)) | ||
{ | ||
Date = DateTime.Now, | ||
Count = jsonmodels.Where(m => m.Brand == dose.Brand && m.Dose == dose.Dose).Sum(m => m.Count) | ||
}; | ||
|
||
if(model.Dose == Models.Dose.First) | ||
{ | ||
model.Count -= jsonmodels.Where(m => m.Brand == dose.Brand && m.Dose == SciensanoModels.Dose.B).Sum(m => m.Count); | ||
} | ||
|
||
list.Add(model); | ||
} | ||
|
||
return Task.FromResult(list.Cast<ILocalModel>().ToList()); | ||
} | ||
} | ||
} |