BusinessRuler
Inleiding
Terwijl eenvoudige logica middels SQL goed te realiseren is, op een declaratieve manier, schiet SQL te kort naarmate de logica complexer en veel omvattener wordt ..
Met de businessruler kan op eenvoudige wijze de logica gerealiseerd worden door de Business zelf en hoeft er geen techneut aan te pas te komen.
In datawarehouses wordt middels ETL de data getransformeerd naar business-data. In de ETL zit dus feitelijk de business-logica.
De businesruler wordt daarom ook gezien als een ETL-proces waarbij de SQL niet zorgdraagt voor de resultaat-data maar het redeneerproces.
- Het redeneerproces krijgt middels GRIP_ETL zijn redeneer-data
- de redeneerscript zorgt voor de resultaat-data
- het redeneerscript draait op eenvoudige beslissingstabellen, door de business te begrijpen.
- GRIP_ETL zorgt ervoor dat de resultaat-data teruggevoerd wordt naar het datamodel van het datawarehouse.
OPZET voor rijksvaccinatie-programma deel1
# Aandachtspunten:
# 1. kind wordt overgenomen als 6,5 maanden oud (=> SV1: schema 2; SV2: schema 2)
# nu wordt (eerste) vaccinatie aangeleverd met vaccinatiedatum waarop dit kind 5 maanden oud is.. (hoort bij schema=1)
# Oplossing: in proces C schema alsnog wijzigen en aanlevering goedkeuren. Op basis hiervan de 2de prik berekenen als eerste prik volledig.
# echter: met terugwerkende kracht een tweede prik aanleveren wordt afgekeurd!
# Done: als Pneu schema gelijk 4 wordt, dan datum_vanaf 0 maken => tabel 4.
# Done: aanpassen Datum_vanaf en Vroegste_datum_vanaf voor SV1: DKTP_Hib_HepB als schema = 0 of 1. => tabel 3
voor SV2: Pneu als schema = 0. => tabel 4
# NOG: controle op correcte jobdatum. 20210008 wordt ook geaccepteerd, maar is 2021-00-08...
# NOG: doelvariabele multivalued maken, waardoor Aanpassen_schema_DKTP_Hib_HepB_en_Pneu weer kan verdwijnen.
# NOG: als geboortedatum van client ligt na jobdatum van proces dan foutmelding voor deze client.
Attribute: Jobdatum Type: Integer
Equals: 20211201
SQLite_database: "Database/RIVM RVP V3.db"
Table 0: Verwerkt personen voor vaccinatie
If: | 0| 1| 2| 3| 4| 5|
'Volgende Client in RVP-database' | Y| Y| Y| Y| Y| N|
Client.Datum_instroom_RVP = "0000-00-00" | Y| N| N| N| N| -|
'Aanpassing schema voor DKTP_Hib_HepB' | -| Y| Y| N| N| -|
'Aanpassing schema voor Pneu' | -| Y| N| Y| N| -|
Then:
Actie is Opvoeren_schema_voor_instromer | X| | | | | |
Actie is Aanpassen_schema_DKTP_Hib_HepB_en_Pneu | | X| | | | |
Actie is Aanpassen_schema_DKTP_Hib_HepB | | | X| | | |
Actie is Aanpassen_schema_Pneu | | | | X| | |
Actie is Geen_aanpassing | | | | | X| |
Actie is Verwerking_beeindigd | | | | | | X|
# .......
Proposition: 'Volgende Client in RVP-database'
Obtain_instance_from_database_view: Client
rTable 1: Bepaal aanpassen schema DKTP_Hib_HepB
If: | 0|
Client.DKTP_Hib_HepB_Datum_vanaf = "0000-00-00" | N|
Client.DKTP_Hib_HepB_Datum_registratie = "0000-00-00" | Y|
Client.DKTP_Hib_HepB_Schema <> DKTP_Hib_HepB_Schema_DT | Y|
Then:
'Aanpassing schema voor DKTP_Hib_HepB' | X|
# .......
rTable 2: Bepaal aanpassen schema Pneu
If: | 0|
Client.Pneu_Datum_vanaf = "0000-00-00" | N|
Client.Pneu_Datum_registratie = "0000-00-00" | Y|
Client.Pneu_Schema <> Pneu_Schema_DT | Y|
Then:
'Aanpassing schema voor Pneu' | X|
# .......
Database_view: Client
With_attributes:
Clientid, Naam, Geslacht, Geboortedatum, Datum_instroom_RVP,
DKTP_Hib_HepB_Schema, DKTP_Hib_HepB_Datum_vanaf, DKTP_Hib_HepB_Datum_registratie,
Pneu_Schema, Pneu_Datum_vanaf, Pneu_Datum_registratie
Query:
SELECT a.Clientid as Clientid,
a.Naam as Naam,
a.Geslacht as Geslacht,
a.Geboortedatum as Geboortedatum,
a.Datum_instroom_RVP as Datum_instroom_RVP,
b.Schema AS DKTP_Hib_HepB_Schema,
b.Datum_vanaf as DKTP_Hib_HepB_Datum_vanaf,
b.Datum_registratie AS DKTP_Hib_HepB_Datum_registratie,
c.Schema AS Pneu_Schema,
c.Datum_vanaf AS Pneu_Datum_vanaf,
c.Datum_registratie AS Pneu_Datum_registratie
FROM Client AS a
LEFT JOIN
(select clientid, schema, datum_vanaf, datum_registratie
from serie_vaccin
where serie_vaccin_info_id = 1 and
volgnr = 1 ) as b
on a.clientid = b.clientid
LEFT JOIN
(select clientid, schema, datum_vanaf, datum_registratie
from serie_vaccin
where serie_vaccin_info_id = 2 and
volgnr = 1 ) as c
on a.clientid = c.clientid
LIMIT 1 OFFSET %s
With_arguments: Client.auto_index
# Serie_Vaccin_Info_id: 1=DKTP_Hib_HepB ; 2=Pneu
Attribute: Nuldatum Type: Integer
Equals: 0
Attribute: Client.Geboortedatum Type: Text
Attribute: Datumwaarop14dagen Type: Integer
Equals: to_integer(fdatum(Client.Geboortedatum) + fdeltadagen(14))
Attribute: Datumwaarop4weken Type: Integer
Equals: to_integer(fdatum(Client.Geboortedatum) + fdeltaweken(4))
Attribute: Datumwaarop10weken Type: Integer
Equals: to_integer(fdatum(Client.Geboortedatum) + fdeltaweken(10))
Attribute: Datumwaarop3maanden Type: Integer
Equals: to_integer(fdatum(Client.Geboortedatum) + fdeltamaanden(3))
Attribute: Datumwaarop6maanden Type: Integer
Equals: to_integer(fdatum(Client.Geboortedatum) + fdeltamaanden(6))
Attribute: Datumwaarop14maanden Type: Integer
Equals: to_integer(fdatum(Client.Geboortedatum) + fdeltamaanden(14))
Attribute: Datumwaarop1jaar Type: Integer
Equals: to_integer(fdatum(Client.Geboortedatum) + fdeltajaren(1))
Attribute: Datumwaarop2jaar Type: Integer
Equals: to_integer(fdatum(Client.Geboortedatum) + fdeltajaren(2))
Attribute: Datumwaarop4jaar Type: Integer
Equals: to_integer(fdatum(Client.Geboortedatum) + fdeltajaren(4))
Attribute: Datumwaarop9jaar Type: Integer
Equals: to_integer(fdatum(Client.Geboortedatum) + fdeltajaren(9))
Attribute: Datumwaarop14jaar Type: Integer
Equals: to_integer(fdatum(Client.Geboortedatum) + fdeltajaren(14))
Attribute: Client.Geslacht Type: Text
Attribute: Datumwaarop12jaaralsvrouw Type: Integer
Equals: to_integer(fdatum(Client.Geboortedatum) + fdeltajaren(12)) if Client.Geslacht == "V" else 0
Attribute: Datumwaarop12jaarplus6maandenalsvrouw Type: Integer
Equals: to_integer(fdatum(Client.Geboortedatum) + fdeltajaren(12) + fdeltamaanden(6)) if Client.Geslacht == "V" else 0
## Overbodige tussenstappen; gaan weer verdwijnen...
Attribute: DKTP_Hib_HepB_Schema_DT Type: Integer
Equals: DKTP_Hib_HepB_Schema
Attribute: Pneu_Schema_DT Type: Integer
Equals: Pneu_Schema
## Type kan worden afgeleid van de conclusie: <var.> = 1 ; 1.0 ; "1A"
# Serie vaccin-id's
Attribute: DKTP_Hib_HepB_id Type: Integer
Equals: 1
Attribute: Pneu_id Type: Integer
Equals: 2
# Losse vaccin-id's
Attribute: BMR_id Type: Integer
Equals: 1
Attribute: MenACWY_id Type: Integer
Equals: 2
Attribute: HPV_id Type: Integer
Equals: 3
# Vaccin-Onderdelen-id's
Attribute: D_id Type: Integer
Equals: 1
Attribute: K_id Type: Integer
Equals: 2
Attribute: T_id Type: Integer
Equals: 3
Attribute: P_id Type: Integer
Equals: 4
Attribute: Hib_id Type: Integer
Equals: 5
Attribute: HepB_id Type: Integer
Equals: 6
-- Overbodige tussenstappen; gaan weer verdwijnen----
Attribute: Datum_vanaf_SV1_DT Type: Integer
Equals: Datum_vanaf_SV1
Attribute: Vroegste_datum_vanaf_SV1_DT Type: Integer
Equals: Vroegste_datum_vanaf_SV1
Attribute: Datum_vanaf_SV2_DT Type: Integer
Equals: Datum_vanaf_SV2
Attribute: Vroegste_datum_vanaf_SV2_DT Type: Integer
Equals: Vroegste_datum_vanaf_SV2
-----------------------------------------------------
GoalAttribute: Actie
Repeat_until: Verwerking_beeindigd
Case: Verwerking_beeindigd
Print: "Verwerking beeindigd"
Case: Opvoeren_schema_voor_instromer
Print: "Schema opgevoerd voor: %s met id: %s." Client.Naam Client.Clientid
>SQL: "UPDATE Client "
-SQL: " SET Datum_instroom_RVP = %s " Jobdatum
<SQL: " WHERE Clientid = %s " Client.Clientid
>SQL: "INSERT INTO Serie_Vaccin (Clientid, Serie_Vaccin_Info_id, Volgnr, Schema, Datum_vanaf, Vroegste_datum_vanaf, Interval_verkort) "
-SQL: "VALUES (%s, %s, 1, " Client.Clientid DKTP_Hib_HepB_id
-SQL: " %s, " DKTP_Hib_HepB_Schema_DT
<SQL: " %s, %s, 0) " Datum_vanaf_SV1_DT Vroegste_datum_vanaf_SV1_DT
>SQL: "INSERT INTO Serie_Vaccin (Clientid, Serie_Vaccin_Info_id, Volgnr, Schema, Datum_vanaf, Vroegste_datum_vanaf, Interval_verkort) "
-SQL: "VALUES (%s, %s, 6, " Client.Clientid DKTP_Hib_HepB_id
-SQL: " 0, "
<SQL: " %s, %s, 0) " Datumwaarop4jaar Datumwaarop4jaar
>SQL: "INSERT INTO Serie_Vaccin (Clientid, Serie_Vaccin_Info_id, Volgnr, Schema, Datum_vanaf, Vroegste_datum_vanaf, Interval_verkort) "
-SQL: "VALUES (%s, %s, 7, " Client.Clientid DKTP_Hib_HepB_id
-SQL: " 0, "
<SQL: " %s, %s, 0) " Datumwaarop9jaar Datumwaarop9jaar
>SQL: "INSERT INTO Serie_Vaccin (Clientid, Serie_Vaccin_Info_id, Volgnr, Schema, Datum_vanaf, Vroegste_datum_vanaf, Interval_verkort) "
-SQL: "VALUES (%s, %s, 1, " Client.Clientid Pneu_id
-SQL: " %s, " Pneu_Schema_DT
<SQL: " %s, %s, 0) " Datum_vanaf_SV2_DT Vroegste_datum_vanaf_SV2_DT
>SQL: "INSERT INTO Serie_Vaccin_Onderdeel (Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id, Datum_vanaf, Vroegste_datum_vanaf) "
<SQL: "VALUES (%s, %s, 1, %s, %s, %s)" Client.Clientid DKTP_Hib_HepB_id D_id Datum_vanaf_SV1_DT Vroegste_datum_vanaf_SV1_DT
>SQL: "INSERT INTO Serie_Vaccin_Onderdeel (Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id, Datum_vanaf, Vroegste_datum_vanaf) "
<SQL: "VALUES (%s, %s, 1, %s, %s, %s)" Client.Clientid DKTP_Hib_HepB_id K_id Datum_vanaf_SV1_DT Vroegste_datum_vanaf_SV1_DT
>SQL: "INSERT INTO Serie_Vaccin_Onderdeel (Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id, Datum_vanaf, Vroegste_datum_vanaf) "
<SQL: "VALUES (%s, %s, 1, %s, %s, %s)" Client.Clientid DKTP_Hib_HepB_id T_id Datum_vanaf_SV1_DT Vroegste_datum_vanaf_SV1_DT
>SQL: "INSERT INTO Serie_Vaccin_Onderdeel (Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id, Datum_vanaf, Vroegste_datum_vanaf) "
<SQL: "VALUES (%s, %s, 1, %s, %s, %s)" Client.Clientid DKTP_Hib_HepB_id P_id Datum_vanaf_SV1_DT Vroegste_datum_vanaf_SV1_DT
>SQL: "INSERT INTO Serie_Vaccin_Onderdeel (Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id, Datum_vanaf, Vroegste_datum_vanaf) "
<SQL: "VALUES (%s, %s, 1, %s, %s, %s)" Client.Clientid DKTP_Hib_HepB_id Hib_id Datum_vanaf_SV1_DT Vroegste_datum_vanaf_SV1_DT
>SQL: "INSERT INTO Serie_Vaccin_Onderdeel (Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id, Datum_vanaf, Vroegste_datum_vanaf) "
<SQL: "VALUES (%s, %s, 1, %s, %s, %s)" Client.Clientid DKTP_Hib_HepB_id HepB_id Datum_vanaf_SV1_DT Vroegste_datum_vanaf_SV1_DT
>SQL: "INSERT INTO Serie_Vaccin_Onderdeel (Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id, Datum_vanaf, Vroegste_datum_vanaf) "
<SQL: "VALUES (%s, %s, 6, %s, %s, %s)" Client.Clientid DKTP_Hib_HepB_id D_id Datumwaarop4jaar Datumwaarop4jaar
>SQL: "INSERT INTO Serie_Vaccin_Onderdeel (Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id, Datum_vanaf, Vroegste_datum_vanaf) "
<SQL: "VALUES (%s, %s, 6, %s, %s, %s)" Client.Clientid DKTP_Hib_HepB_id K_id Datumwaarop4jaar Datumwaarop4jaar
>SQL: "INSERT INTO Serie_Vaccin_Onderdeel (Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id, Datum_vanaf, Vroegste_datum_vanaf) "
<SQL: "VALUES (%s, %s, 6, %s, %s, %s)" Client.Clientid DKTP_Hib_HepB_id T_id Datumwaarop4jaar Datumwaarop4jaar
>SQL: "INSERT INTO Serie_Vaccin_Onderdeel (Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id, Datum_vanaf, Vroegste_datum_vanaf) "
<SQL: "VALUES (%s, %s, 6, %s, %s, %s)" Client.Clientid DKTP_Hib_HepB_id P_id Datumwaarop4jaar Datumwaarop4jaar
>SQL: "INSERT INTO Serie_Vaccin_Onderdeel (Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id, Datum_vanaf, Vroegste_datum_vanaf) "
<SQL: "VALUES (%s, %s, 6, %s, %s, %s)" Client.Clientid DKTP_Hib_HepB_id Hib_id Nuldatum Nuldatum
>SQL: "INSERT INTO Serie_Vaccin_Onderdeel (Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id, Datum_vanaf, Vroegste_datum_vanaf) "
<SQL: "VALUES (%s, %s, 6, %s, %s, %s)" Client.Clientid DKTP_Hib_HepB_id HepB_id Nuldatum Nuldatum
>SQL: "INSERT INTO Serie_Vaccin_Onderdeel (Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id, Datum_vanaf, Vroegste_datum_vanaf) "
<SQL: "VALUES (%s, %s, 7, %s, %s, %s)" Client.Clientid DKTP_Hib_HepB_id D_id Datumwaarop9jaar Datumwaarop9jaar
>SQL: "INSERT INTO Serie_Vaccin_Onderdeel (Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id, Datum_vanaf, Vroegste_datum_vanaf) "
<SQL: "VALUES (%s, %s, 7, %s, %s, %s)" Client.Clientid DKTP_Hib_HepB_id K_id Nuldatum Nuldatum
>SQL: "INSERT INTO Serie_Vaccin_Onderdeel (Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id, Datum_vanaf, Vroegste_datum_vanaf) "
<SQL: "VALUES (%s, %s, 7, %s, %s, %s)" Client.Clientid DKTP_Hib_HepB_id T_id Datumwaarop9jaar Datumwaarop9jaar
>SQL: "INSERT INTO Serie_Vaccin_Onderdeel (Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id, Datum_vanaf, Vroegste_datum_vanaf) "
<SQL: "VALUES (%s, %s, 7, %s, %s, %s)" Client.Clientid DKTP_Hib_HepB_id P_id Datumwaarop9jaar Datumwaarop9jaar
>SQL: "INSERT INTO Serie_Vaccin_Onderdeel (Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id, Datum_vanaf, Vroegste_datum_vanaf) "
<SQL: "VALUES (%s, %s, 7, %s, %s, %s)" Client.Clientid DKTP_Hib_HepB_id Hib_id Nuldatum Nuldatum
>SQL: "INSERT INTO Serie_Vaccin_Onderdeel (Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id, Datum_vanaf, Vroegste_datum_vanaf) "
<SQL: "VALUES (%s, %s, 7, %s, %s, %s)" Client.Clientid DKTP_Hib_HepB_id HepB_id Nuldatum Nuldatum
>SQL: "INSERT INTO Los_Vaccin (Clientid, Los_Vaccin_Info_id, Volgnr, Datum_vanaf) "
<SQL: "VALUES (%s, %s, 1, %s)" Client.Clientid BMR_id Datumwaarop14maanden
>SQL: "INSERT INTO Los_Vaccin (Clientid, Los_Vaccin_Info_id, Volgnr, Datum_vanaf) "
<SQL: "VALUES (%s, %s, 1, %s)" Client.Clientid MenACWY_id Datumwaarop14maanden
>SQL: "INSERT INTO Los_Vaccin (Clientid, Los_Vaccin_Info_id, Volgnr, Datum_vanaf) "
<SQL: "VALUES (%s, %s, 2, %s)" Client.Clientid BMR_id Datumwaarop9jaar
>SQL: "INSERT INTO Los_Vaccin (Clientid, Los_Vaccin_Info_id, Volgnr, Datum_vanaf) "
<SQL: "VALUES (%s, %s, 1, %s)" Client.Clientid HPV_id Datumwaarop12jaaralsvrouw
>SQL: "INSERT INTO Los_Vaccin (Clientid, Los_Vaccin_Info_id, Volgnr, Datum_vanaf) "
<SQL: "VALUES (%s, %s, 2, %s)" Client.Clientid HPV_id Datumwaarop12jaarplus6maandenalsvrouw
>SQL: "INSERT INTO Los_Vaccin (Clientid, Los_Vaccin_Info_id, Volgnr, Datum_vanaf) "
<SQL: "VALUES (%s, %s, 2, %s)" Client.Clientid MenACWY_id Datumwaarop14jaar
Case: Aanpassen_schema_DKTP_Hib_HepB
Print: "Schema aangepast voor: %s met id: %s." Client.Naam Client.Clientid
Print: "-- Schema DKTP_Hib_HepB gewijzigd van %s naar %s." Client.DKTP_Hib_HepB_Schema DKTP_Hib_HepB_Schema_DT
>SQL: "UPDATE Serie_Vaccin "
-SQL: " SET Schema = %s " DKTP_Hib_HepB_Schema_DT
-SQL: " WHERE Clientid = %s " Client.Clientid
-SQL: " AND Serie_Vaccin_Info_id = %s " DKTP_Hib_HepB_id
<SQL: " AND Volgnr = 1 "
Case: Aanpassen_schema_Pneu
Print: "Schema aangepast voor: %s met id: %s." Client.Naam Client.Clientid
Print: "-- Schema Pneu gewijzigd van %s naar %s." Client.Pneu_Schema Pneu_Schema_DT
>SQL: "UPDATE Serie_Vaccin "
-SQL: " SET Schema = %s " Pneu_Schema_DT
-SQL: " WHERE Clientid = %s " Client.Clientid
-SQL: " AND Serie_Vaccin_Info_id = %s " Pneu_id
<SQL: " AND Volgnr = 1 "
Case: Aanpassen_schema_DKTP_Hib_HepB_en_Pneu
Print: "Schema aangepast voor: %s met id: %s." Client.Naam Client.Clientid
Print: "-- Schema DKTP_Hib_HepB gewijzigd van %s naar %s." Client.DKTP_Hib_HepB_Schema DKTP_Hib_HepB_Schema_DT
Print: "-- Schema Pneu gewijzigd van %s naar %s." Client.Pneu_Schema Pneu_Schema_DT
>SQL: "UPDATE Serie_Vaccin "
-SQL: " SET Schema = %s " DKTP_Hib_HepB_Schema_DT
-SQL: " WHERE Clientid = %s " Client.Clientid
-SQL: " AND Serie_Vaccin_Info_id = %s " DKTP_Hib_HepB_id
<SQL: " AND Volgnr = 1 "
>SQL: "UPDATE Serie_Vaccin "
-SQL: " SET Schema = %s " Pneu_Schema_DT
-SQL: " WHERE Clientid = %s " Client.Clientid
-SQL: " AND Serie_Vaccin_Info_id = %s " Pneu_id
<SQL: " AND Volgnr = 1 "
Case: Geen_aanpassing
Print: "Schema niet opgevoerd of aangepast voor: %s met id: %s." Client.Naam Client.Clientid
Table 3: Bepaal schema voor DKTP_Hib_HepB op draaidatum
If: | 0| 1| 2| 3| 4|
Jobdatum < Datumwaarop10weken | Y| N| N| N| N|
Jobdatum < Datumwaarop6maanden | -| Y| N| N| N|
Jobdatum < Datumwaarop1jaar | -| -| Y| N| N|
Jobdatum < Datumwaarop2jaar | -| -| -| Y| N|
Then:
DKTP_Hib_HepB_Schema = 0 | X| | | | |
DKTP_Hib_HepB_Schema = 1 | | X| | | |
DKTP_Hib_HepB_Schema = 2 | | | X| | |
DKTP_Hib_HepB_Schema = 3 | | | | X| |
DKTP_Hib_HepB_Schema = 4 | | | | | X|
Datum_vanaf_SV1 = Datumwaarop10weken | X| | | | |
Datum_vanaf_SV1 = Datumwaarop3maanden | | X| | | |
Datum_vanaf_SV1 = Jobdatum | | | X| X| X|
Vroegste_datum_vanaf_SV1 = Datumwaarop4weken | X| | | | |
Vroegste_datum_vanaf_SV1 = Datumwaarop10weken | | X| | | |
Vroegste_datum_vanaf_SV1 = Jobdatum | | | X| X| X|
# .......
# Schema-nummers DKTP-HIB-HEPB:
# 0 (=1B) - eerste prik vanaf 4 weken (indicatie vervroegd) of 6 weken tot 10 weken; totaal: 4.
# 1 (=1A) - eerste prik vanaf 10 weken (indicatie vervroegd) of 3 maand; totaal: 3.
# 2 - eerste prik vanaf 6 maand tot 1 jaar: totaal: 4.
# 3 - eerste prik vanaf 1 jaar tot 2 jaar: totaal: 3.
# 4 - eerste prik vanaf 2 jaar tot 18 jaar: totaal: 3.
Table 4: Bepaal schema voor Pneu op draaidatum
If: | 0| 1| 2| 3|
Jobdatum < Datumwaarop6maanden | Y| N| N| N|
Jobdatum < Datumwaarop1jaar | -| Y| N| N|
Jobdatum < Datumwaarop2jaar | -| -| Y| N|
Then:
Pneu_Schema = 1 | X| | | |
Pneu_Schema = 2 | | X| | |
Pneu_Schema = 3 | | | X| |
Pneu_Schema = 4 | | | | X|
Datum_vanaf_SV2 = Datumwaarop3maanden | X| | | |
Datum_vanaf_SV2 = Jobdatum | | X| X| |
Datum_vanaf_SV2 = Nuldatum | | | | X|
Vroegste_datum_vanaf_SV2 = Datumwaarop4weken | X| | | |
Vroegste_datum_vanaf_SV2 = Jobdatum | | X| X| |
Vroegste_datum_vanaf_SV2 = Nuldatum | | | | X|
# .......
# 1=3xPneu, 2=3xPneu (ander intervalschema), 3=2xPneu, 4=0xPneu
OPZET voor rijksvaccinatie-programma deel2
# Serievaccin 1 = DKTP_Hib_HepB - DKTP - DTP met volgnummers 1-4 of 1-3 en 6 (DKTP, 4jaar),7 (DTP, 9 jaar).
# (SV1) Volgnummers 1, 6 en 7 worden direct bij overname vastgelegd.
# Gegevens bij volgnr 1 kunnen worden gewijzigd als gevolg van wijzigen schema.
# Serievaccin 2 = Pneu (met volgnummers 1-3, afhankelijk van schema)
# (SV2) Gegevens bij volgnr 1 kunnen worden gewijzigd als gevolg van wijzigen schema.
SQLite_database: "Database/RIVM RVP V3.db"
Table 0:
If: | 0| 1|
'Volgende vaccinatie registratie' | Y| N|
Then:
Evaluatie is Verwerking_beeindigd | | X|
# .......
Proposition: 'Volgende vaccinatie registratie'
Obtain_instance_from_database_view: Vaccinatie
Database_view: Vaccinatie
With_attributes:
Clientid, Omschrijving, Datum_registratie, Statusid
Query:
SELECT *
FROM vaccinatie
WHERE statusid = 1
LIMIT 1
End_Query
Attribute: Vaccinatie.Datum_registratie Type: Text
Attribute: Vaccinatie_Datum_registratie Type: Integer
Equals: to_integer(fdatum(Vaccinatie.Datum_registratie))
# Equals: to_integer(fdatum(Vaccinatie.Datum_registratie))
# datumtext_to_integer(Vaccinatie.Datum_registratie)
Attribute: Jobdatum Type: Integer
Equals: Vaccinatie_Datum_registratie
# Vaccinatie_Datum_registratie
# 20211129 <= of handmatig..
Attribute: Vaccinatie_Bevat_D_
Equals: strcontains(Vaccinatie.Omschrijving, "D")
Attribute: Vaccinatie_Bevat_K_
Equals: strcontains(Vaccinatie.Omschrijving, "K")
Attribute: Vaccinatie_Bevat_T_
Equals: strcontains(Vaccinatie.Omschrijving, "T")
Attribute: Vaccinatie_Bevat_P_
Equals: strcontains(Vaccinatie.Omschrijving, "P")
## Overbodige tussenstappen; gaan weer verdwijnen...
Attribute: D_Reden_DT Type: Integer
Equals: D_Reden
Attribute: K_Reden_DT Type: Integer
Equals: K_Reden
Attribute: T_Reden_DT Type: Integer
Equals: T_Reden
Attribute: P_Reden_DT Type: Integer
Equals: P_Reden
Attribute: Hib_Reden_DT Type: Integer
Equals: Hib_Reden
Attribute: HepB_Reden_DT Type: Integer
Equals: HepB_Reden
Attribute: Pneu_Reden_DT Type: Integer
Equals: Pneu_Reden
Attribute: BMR_Reden_DT Type: Integer
Equals: BMR_Reden
Attribute: MenACWY_Reden_DT Type: Integer
Equals: MenACWY_Reden
Attribute: HPV_Reden_DT Type: Integer
Equals: HPV_Reden
## Type kan worden afgeleid van de conclusie: <var.> = 1 ; 1.0 ; "1A"
# Serie vaccin-id's
Attribute: DKTP_Hib_HepB_id Type: Integer
Equals: 1
Attribute: Pneu_id Type: Integer
Equals: 2
# Losse vaccin-id's
Attribute: BMR_id Type: Integer
Equals: 1
Attribute: MenACWY_id Type: Integer
Equals: 2
Attribute: HPV_id Type: Integer
Equals: 3
# Vaccin-Onderdelen-id's
Attribute: D_id Type: Integer
Equals: 1
Attribute: K_id Type: Integer
Equals: 2
Attribute: T_id Type: Integer
Equals: 3
Attribute: P_id Type: Integer
Equals: 4
Attribute: Hib_id Type: Integer
Equals: 5
Attribute: HepB_id Type: Integer
Equals: 6
############# Database Views voor losse vaccins. ##########################
1. BMR 14 maand; volgnr = 1 (combi-enting; met MenACWY1, maar kan ook met DKTP(-Hib)-HepB); 9 jaar; volgnr = 2
2. MenACWY 14 maand; volgnr = 1 (combi-enting; met BMR, maar kan ook met DKTP(-Hib)-HepB); 14 jaar; volgnr = 2
3. HPV 12/13 jaar; volgnr = 1; half jaar later: volgnr = 2 (alleen V)
nb. een los vaccin kan ook bestaan uit onderdelen, maar dat komt op dit moment niet voor.
nb. de mogelijkheid van combinatie-entingen wordt in een ander proces bepaald!
Proposition: 'Openstaand los vaccin BMR'
Obtain_instance_from_database_view: Los_Vaccin_BMR
Database_view: Los_Vaccin_BMR
With_attributes:
Clientid, Los_Vaccin_Info_id, Volgnr, Datum_vanaf, Datum_registratie
Query:
SELECT *
FROM Los_Vaccin
WHERE Clientid = %s AND
Los_Vaccin_Info_id = 1 AND
Datum_vanaf <> '0000-00-00' AND
Datum_vanaf <= %s AND
Datum_registratie = '0000-00-00'
ORDER BY Volgnr
LIMIT 1
With_arguments: Vaccinatie.Clientid, Jobdatum
Proposition: 'Openstaand los vaccin MenACWY'
Obtain_instance_from_database_view: Los_Vaccin_MenACWY
Database_view: Los_Vaccin_MenACWY
With_attributes:
Clientid, Los_Vaccin_Info_id, Volgnr, Datum_vanaf, Datum_registratie
Query:
SELECT *
FROM Los_Vaccin
WHERE Clientid = %s AND
Los_Vaccin_Info_id = 2 AND
Datum_vanaf <> '0000-00-00' AND
Datum_vanaf <= %s AND
Datum_registratie = '0000-00-00'
ORDER BY Volgnr
LIMIT 1
With_arguments: Vaccinatie.Clientid, Jobdatum
Proposition: 'Openstaand los vaccin HPV'
Obtain_instance_from_database_view: Los_Vaccin_HPV
Database_view: Los_Vaccin_HPV
With_attributes:
Clientid, Los_Vaccin_Info_id, Volgnr, Datum_vanaf, Datum_registratie
Query:
SELECT *
FROM Los_Vaccin
WHERE Clientid = %s AND
Los_Vaccin_Info_id = 3 AND
Datum_vanaf <> '0000-00-00' AND
Datum_vanaf <= %s AND
Datum_registratie = '0000-00-00'
ORDER BY Volgnr
LIMIT 1
With_arguments: Vaccinatie.Clientid, Jobdatum
############# Database Views voor serie vaccins. ##########################
1. DKTP-HIB-HEPB volgnummers 1-3 of 1-4 (afhankelijk van schema); volgnr 6 = DKTP (4 jaar); volgnr 7 = DTP (9 jaar).
2. Pneu volgnummers 1 of 1,2 of 1,2,3 (afhankelijk van schema).
nb. voor serievaccins worden vaccinaties met volgnummers 2, 3 en 4 pas geregistreerd als de vorige vaccinatie volledig heeft plaatsgevonden.
Proposition: 'Openstaand serievaccin Pneu'
Obtain_instance_from_database_view: Serie_Vaccin_Pneu
Database_view: Serie_Vaccin_Pneu
With_attributes:
Clientid, Serie_Vaccin_Info_id, Volgnr, Schema, Datum_vanaf, Vroegste_datum_vanaf, Datum_registratie, Interval_verkort
Query:
SELECT *
FROM Serie_Vaccin
WHERE Clientid = %s AND
Serie_Vaccin_Info_id = 2 AND
Datum_vanaf <> '0000-00-00' AND
Vroegste_datum_vanaf <= %s AND
Datum_registratie = '0000-00-00'
ORDER BY Volgnr
LIMIT 1
With_arguments: Vaccinatie.Clientid, Jobdatum
# SV1 = Serie_Vaccin 1 = serievaccin DKTP-HIB-HEPB
Proposition: 'Openstaand serievaccin DKTP-HIB-HEPB'
Obtain_instance_from_database_view: SV1
Database_view: SV1
With_attributes:
Clientid, Serie_Vaccin_Info_id, Volgnr, Schema, Datum_vanaf, Vroegste_datum_vanaf, Datum_registratie, Interval_verkort
Query:
SELECT *
FROM Serie_Vaccin
WHERE Clientid = %s AND
Serie_Vaccin_Info_id = 1 AND
Datum_vanaf <> '0000-00-00' AND
Vroegste_datum_vanaf <= %s AND
Datum_registratie = '0000-00-00'
ORDER BY Volgnr
LIMIT 1
With_arguments: Vaccinatie.Clientid, Jobdatum
Proposition: 'Onderdeel D van toepassing'
Obtain_instance_from_database_view: Onderdeel_D
Database_view: Onderdeel_D
With_attributes:
Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id,Datum_vanaf,Vroegste_datum_vanaf,Datum_registratie
Query:
SELECT *
FROM Serie_Vaccin_Onderdeel
WHERE Clientid = %s AND
Serie_Vaccin_Info_id = 1 AND
Volgnr = %s AND
Vaccin_Onderdeel_Info_id = 1 AND
Datum_vanaf <> '0000-00-00'
ORDER BY Volgnr
LIMIT 1
With_arguments: Vaccinatie.Clientid, SV1.Volgnr
Proposition: 'Onderdeel K van toepassing'
Obtain_instance_from_database_view: Onderdeel_K
Database_view: Onderdeel_K
With_attributes:
Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id,Datum_vanaf,Vroegste_datum_vanaf,Datum_registratie
Query:
SELECT *
FROM Serie_Vaccin_Onderdeel
WHERE Clientid = %s AND
Serie_Vaccin_Info_id = 1 AND
Volgnr = %s AND
Vaccin_Onderdeel_Info_id = 2 AND
Datum_vanaf <> '0000-00-00'
ORDER BY Volgnr
LIMIT 1
With_arguments: Vaccinatie.Clientid, SV1.Volgnr
Proposition: 'Onderdeel T van toepassing'
Obtain_instance_from_database_view: Onderdeel_T
Database_view: Onderdeel_T
With_attributes:
Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id,Datum_vanaf,Vroegste_datum_vanaf,Datum_registratie
Query:
SELECT *
FROM Serie_Vaccin_Onderdeel
WHERE Clientid = %s AND
Serie_Vaccin_Info_id = 1 AND
Volgnr = %s AND
Vaccin_Onderdeel_Info_id = 3 AND
Datum_vanaf <> '0000-00-00'
ORDER BY Volgnr
LIMIT 1
With_arguments: Vaccinatie.Clientid, SV1.Volgnr
Proposition: 'Onderdeel P van toepassing'
Obtain_instance_from_database_view: Onderdeel_P
Database_view: Onderdeel_P
With_attributes:
Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id,Datum_vanaf,Vroegste_datum_vanaf,Datum_registratie
Query:
SELECT *
FROM Serie_Vaccin_Onderdeel
WHERE Clientid = %s AND
Serie_Vaccin_Info_id = 1 AND
Volgnr = %s AND
Vaccin_Onderdeel_Info_id = 4 AND
Datum_vanaf <> '0000-00-00'
ORDER BY Volgnr
LIMIT 1
With_arguments: Vaccinatie.Clientid, SV1.Volgnr
Proposition: 'Onderdeel Hib van toepassing'
Obtain_instance_from_database_view: Onderdeel_Hib
Database_view: Onderdeel_Hib
With_attributes:
Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id,Datum_vanaf,Vroegste_datum_vanaf,Datum_registratie
Query:
SELECT *
FROM Serie_Vaccin_Onderdeel
WHERE Clientid = %s AND
Serie_Vaccin_Info_id = 1 AND
Volgnr = %s AND
Vaccin_Onderdeel_Info_id = 5 AND
Datum_vanaf <> '0000-00-00'
ORDER BY Volgnr
LIMIT 1
With_arguments: Vaccinatie.Clientid, SV1.Volgnr
Proposition: 'Onderdeel HepB van toepassing'
Obtain_instance_from_database_view: Onderdeel_Hib
Database_view: Onderdeel_HepB
With_attributes:
Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id,Datum_vanaf,Vroegste_datum_vanaf,Datum_registratie
Query:
SELECT *
FROM Serie_Vaccin_Onderdeel
WHERE Clientid = %s AND
Serie_Vaccin_Info_id = 1 AND
Volgnr = %s AND
Vaccin_Onderdeel_Info_id = 6 AND
Datum_vanaf <> '0000-00-00'
ORDER BY Volgnr
LIMIT 1
With_arguments: Vaccinatie.Clientid, SV1.Volgnr
Attribute: Onderdeel_D.Datum_vanaf Type: Text
Attribute: Onderdeel_D.Vroegste_datum_vanaf Type: Text
Attribute: Onderdeel_K.Datum_vanaf Type: Text
Attribute: Onderdeel_K.Vroegste_datum_vanaf Type: Text
Attribute: Onderdeel_T.Datum_vanaf Type: Text
Attribute: Onderdeel_T.Vroegste_datum_vanaf Type: Text
Attribute: Onderdeel_P.Datum_vanaf Type: Text
Attribute: Onderdeel_P.Vroegste_datum_vanaf Type: Text
Attribute: Onderdeel_Hib.Datum_vanaf Type: Text
Attribute: Onderdeel_Hib.Vroegste_datum_vanaf Type: Text
Attribute: Onderdeel_HepB.Datum_vanaf Type: Text
Attribute: Onderdeel_HepB.Vroegste_datum_vanaf Type: Text
Attribute: Serie_Vaccin_Pneu.Datum_vanaf Type: Text
Attribute: Serie_Vaccin_Pneu.Vroegste_datum_vanaf Type: Text
Attribute: Los_Vaccin_BMR.Datum_vanaf Type: Text
Attribute: Los_Vaccin_MenACWY.Datum_vanaf Type: Text
Attribute: Los_Vaccin_HPV.Datum_vanaf Type: Text
########## DKTP-HIB-HEPB ##################################################################################
Schema-nummers DKTP-HIB-HEPB:
0 (=1B) - eerste prik vanaf 4 weken (indicatie vervroegd) of 6 weken tot 10 weken; totaal: 4.
1 (=1A) - eerste prik vanaf 10 weken (indicatie vervroegd) of 3 maand; totaal: 3.
2 - eerste prik vanaf 6 maand tot 1 jaar: totaal: 4.
3 - eerste prik vanaf 1 jaar tot 2 jaar: totaal: 3.
4 - eerste prik vanaf 2 jaar tot 18 jaar: totaal: 3.
en als los vaccin (= serievaccin met volgnummers 6 en 7:
DKTP 4 jaar (vervalt als DKTP(-Hib)-HepB na 2de verjaardag)
DTP 9 jaar (vervalt als DKTP(-Hib)-HepB na 6de verjaardag, anders combi-enting met BMR2)
########## D-registratie ##################################
Table 1: Verwerk D-registratie
If: | 0| 1| 2| 3| 4| 5| 6|
Vaccinatie_Bevat_D_ = 1 | Y| Y| Y| Y| Y| Y| N|
'Openstaand serievaccin DKTP-HIB-HEPB' | Y| Y| Y| Y| Y| N| -|
'Onderdeel D van toepassing' | Y| Y| Y| Y| N| -| -|
Onderdeel_D.Datum_registratie = "0000-00-00" | Y| Y| Y| N| -| -| -|
Vaccinatie_Datum_registratie >= to_int(Onderdeel_D.Datum_vanaf) | Y| N| N| -| -| -| -|
Vaccinatie_Datum_registratie >= to_int(Onderdeel_D.Vroegste_datum_vanaf) | -| Y| N| -| -| -| -|
Then:
Evaluatie is D-OK | X| X| | | | | |
Interval_verkort = 1 | | X| | | | | |
DKTP-HIB-HEPB_Onderdeel_geregistreerd = 1 | X| X| | | | | |
Evaluatie is D-NOK | | | X| X| X| X| |
D_Reden = 1 | | | X| | | | |
D_Reden = 2 | | | | X| | | |
D_Reden = 3 | | | | | X| | |
D_Reden = 4 | | | | | | X| |
# .......
########## K-registratie ##################################
Table 2: Verwerk K-registratie
If: | 0| 1| 2| 3| 4| 5| 6|
Vaccinatie_Bevat_K_ = 1 | Y| Y| Y| Y| Y| Y| N|
'Openstaand serievaccin DKTP-HIB-HEPB' | Y| Y| Y| Y| Y| N| -|
'Onderdeel K van toepassing' | Y| Y| Y| Y| N| -| -|
Onderdeel_K.Datum_registratie = "0000-00-00" | Y| Y| Y| N| -| -| -|
Vaccinatie_Datum_registratie >= to_int(Onderdeel_K.Datum_vanaf) | Y| N| N| -| -| -| -|
Vaccinatie_Datum_registratie >= to_int(Onderdeel_K.Vroegste_datum_vanaf) | -| Y| N| -| -| -| -|
Then:
Evaluatie is K-OK | X| X| | | | | |
Interval_verkort = 1 | | X| | | | | |
DKTP-HIB-HEPB_Onderdeel_geregistreerd = 1 | X| X| | | | | |
Evaluatie is K-NOK | | | X| X| X| X| |
K_Reden = 1 | | | X| | | | |
K_Reden = 2 | | | | X| | | |
K_Reden = 3 | | | | | X| | |
K_Reden = 4 | | | | | | X| |
# .......
########## T-registratie ##################################
Table 3: Verwerk T-registratie
If: | 0| 1| 2| 3| 4| 5| 6|
Vaccinatie_Bevat_T_ = 1 | Y| Y| Y| Y| Y| Y| N|
'Openstaand serievaccin DKTP-HIB-HEPB' | Y| Y| Y| Y| Y| N| -|
'Onderdeel T van toepassing' | Y| Y| Y| Y| N| -| -|
Onderdeel_T.Datum_registratie = "0000-00-00" | Y| Y| Y| N| -| -| -|
Vaccinatie_Datum_registratie >= to_int(Onderdeel_T.Datum_vanaf) | Y| N| N| -| -| -| -|
Vaccinatie_Datum_registratie >= to_int(Onderdeel_T.Vroegste_datum_vanaf) | -| Y| N| -| -| -| -|
Then:
Evaluatie is T-OK | X| X| | | | | |
Interval_verkort = 1 | | X| | | | | |
DKTP-HIB-HEPB_Onderdeel_geregistreerd = 1 | X| X| | | | | |
Evaluatie is T-NOK | | | X| X| X| X| |
T_Reden = 1 | | | X| | | | |
T_Reden = 2 | | | | X| | | |
T_Reden = 3 | | | | | X| | |
T_Reden = 4 | | | | | | X| |
# .......
########## P-registratie ##################################
Table 4: Verwerk P-registratie
If: | 0| 1| 2| 3| 4| 5| 6|
Vaccinatie_Bevat_P_ = 1 | Y| Y| Y| Y| Y| Y| N|
'Openstaand serievaccin DKTP-HIB-HEPB' | Y| Y| Y| Y| Y| N| -|
'Onderdeel P van toepassing' | Y| Y| Y| Y| N| -| -|
Onderdeel_P.Datum_registratie = "0000-00-00" | Y| Y| Y| N| -| -| -|
Vaccinatie_Datum_registratie >= to_int(Onderdeel_P.Datum_vanaf) | Y| N| N| -| -| -| -|
Vaccinatie_Datum_registratie >= to_int(Onderdeel_P.Vroegste_datum_vanaf) | -| Y| N| -| -| -| -|
Then:
Evaluatie is P-OK | X| X| | | | | |
Interval_verkort = 1 | | X| | | | | |
DKTP-HIB-HEPB_Onderdeel_geregistreerd = 1 | X| X| | | | | |
Evaluatie is P-NOK | | | X| X| X| X| |
P_Reden = 1 | | | X| | | | |
P_Reden = 2 | | | | X| | | |
P_Reden = 3 | | | | | X| | |
P_Reden = 4 | | | | | | X| |
# .......
########## Hib-registratie ##################################
Table 5: Verwerk Hib-registratie
If: | 0| 1| 2| 3| 4| 5| 6|
Vaccinatie.Omschrijving = "Hib" | Y| Y| Y| Y| Y| Y| N|
'Openstaand serievaccin DKTP-HIB-HEPB' | Y| Y| Y| Y| Y| N| -|
'Onderdeel Hib van toepassing' | Y| Y| Y| Y| N| -| -|
Onderdeel_Hib.Datum_registratie = "0000-00-00" | Y| Y| Y| N| -| -| -|
Vaccinatie_Datum_registratie >= to_int(Onderdeel_Hib.Datum_vanaf) | Y| N| N| -| -| -| -|
Vaccinatie_Datum_registratie >= to_int(Onderdeel_Hib.Vroegste_datum_vanaf) | -| Y| N| -| -| -| -|
Then:
Evaluatie is Hib-OK | X| X| | | | | |
Interval_verkort = 1 | | X| | | | | |
DKTP-HIB-HEPB_Onderdeel_geregistreerd = 1 | X| X| | | | | |
Evaluatie is Hib-NOK | | | X| X| X| X| |
Hib_Reden = 1 | | | X| | | | |
Hib_Reden = 2 | | | | X| | | |
Hib_Reden = 3 | | | | | X| | |
Hib_Reden = 4 | | | | | | X| |
# .......
########## HepB-registratie ##################################
Table 6: Verwerk HepB-registratie
If: | 0| 1| 2| 3| 4| 5| 6|
Vaccinatie.Omschrijving = "HepB" | Y| Y| Y| Y| Y| Y| N|
'Openstaand serievaccin DKTP-HIB-HEPB' | Y| Y| Y| Y| Y| N| -|
'Onderdeel HepB van toepassing' | Y| Y| Y| Y| N| -| -|
Onderdeel_HepB.Datum_registratie = "0000-00-00" | Y| Y| Y| N| -| -| -|
Vaccinatie_Datum_registratie >= to_int(Onderdeel_HepB.Datum_vanaf) | Y| N| N| -| -| -| -|
Vaccinatie_Datum_registratie >= to_int(Onderdeel_HepB.Vroegste_datum_vanaf) | -| Y| N| -| -| -| -|
Then:
Evaluatie is HepB-OK | X| X| | | | | |
Interval_verkort = 1 | | X| | | | | |
DKTP-HIB-HEPB_Onderdeel_geregistreerd = 1 | X| X| | | | | |
Evaluatie is HepB-NOK | | | X| X| X| X| |
HepB_Reden = 1 | | | X| | | | |
HepB_Reden = 2 | | | | X| | | |
HepB_Reden = 3 | | | | | X| | |
HepB_Reden = 4 | | | | | | X| |
# .......
########## Pneu ###########################################################################################
Schema-nummers Pneu:
1 - eerste prik vanaf 4 weken (indicatie vervroegd?) of 3 maand; totaal: 3.
2 - eerste prik vanaf 6 maand tot 1 jaar: totaal: 3 (ander intervalschema).
3 - eerste prik vanaf 1 jaar tot 2 jaar: totaal: 2.
4 - eerste prik vanaf 2 jaar tot 18 jaar: totaal: 0.
########## Pneu-registratie ##################################
Table 7: Verwerk Pneu-registratie (als onderdeel van serieel vaccin)
If: | 0| 1| 2| 3| 4|
Vaccinatie.Omschrijving = "Pneu" | Y| Y| Y| Y| N|
'Openstaand serievaccin Pneu' | Y| Y| Y| N| -|
Vaccinatie_Datum_registratie >= to_int(Serie_Vaccin_Pneu.Datum_vanaf) | Y| N| N| -| -|
Vaccinatie_Datum_registratie >= to_int(Serie_Vaccin_Pneu.Vroegste_datum_vanaf) | -| Y| N| -| -|
Then:
Evaluatie is Pneu-OK | X| X| | | |
Interval_verkort = 1 | | X| | | |
Pneu_geregistreerd = 1 | X| X| | | |
Evaluatie is Pneu-NOK | | | X| X| |
Pneu_Reden = 1 | | | X| | |
Pneu_Reden = 2 | | | | X| |
# .......
########## Losse vaccins ##################################################################################
BMR1 14 maand (combi-enting; met MenACWY1, maar kan ook met DKTP(-Hib)-HepB)
MenACWY1 14 maand (combi-enting; met BMR1, maar kan ook met DKTP(-Hib)-HepB)
BMR2 9 jaar
HPV1 12/13 jaar (alleen v)
HPV2 12/13 jaar (alleen v) half jaar na HPV1
MenACWY2 14 jaar
Al verwerkt in comb
DKTP 4 jaar (vervalt als DKTP(-Hib)-HepB na 2de verjaardag)
DTP 9 jaar (vervalt als DKTP(-Hib)-HepB na 6de verjaardag, anders combi-enting met BMR2)
########## BMR-registratie ##################################
Table 8: Verwerk registratie van los vaccin BMR
If: | 0| 1| 2| 3|
Vaccinatie.Omschrijving = "BMR" | Y| Y| Y| N|
'Openstaand los vaccin BMR' | Y| Y| N| -|
Vaccinatie_Datum_registratie >= to_int(Los_Vaccin_BMR.Datum_vanaf) | Y| N| -| -|
Then:
Evaluatie is BMR-OK | X| | | |
Evaluatie is BMR-NOK | | X| X| |
BMR_Reden = 1 | | X| | |
BMR_Reden = 2 | | | X| |
# .......
########## MenACWY-registratie ##################################
Table 9: Verwerk registratie van los vaccin MenACWY
If: | 0| 1| 2| 3|
Vaccinatie.Omschrijving = "MenACWY" | Y| Y| Y| N|
'Openstaand los vaccin MenACWY' | Y| Y| N| -|
Vaccinatie_Datum_registratie >= to_int(Los_Vaccin_MenACWY.Datum_vanaf) | Y| N| -| -|
Then:
Evaluatie is MenACWY-OK | X| | | |
Evaluatie is MenACWY-NOK | | X| X| |
MenACWY_Reden = 1 | | X| | |
MenACWY_Reden = 2 | | | X| |
# .......
########## HPV-registratie ##################################
Table 10: Verwerk registratie van los vaccin HPV
If: | 0| 1| 2| 3|
Vaccinatie.Omschrijving = "HPV" | Y| Y| Y| N|
'Openstaand los vaccin HPV' | Y| Y| N| -|
Vaccinatie_Datum_registratie >= to_int(Los_Vaccin_HPV.Datum_vanaf) | Y| N| -| -|
Then:
Evaluatie is HPV-OK | X| | | |
Evaluatie is HPV-NOK | | X| X| |
HPV_Reden = 1 | | X| | |
HPV_Reden = 2 | | | X| |
# .......
########## Opvoeren volgende registratie voor serievaccin DKTP-HIB-HEPB ################################
Schema-nummers DKTP-HIB-HEPB:
0 (=1B) - eerste prik vanaf 4 weken (indicatie vervroegd) of 6 weken tot 10 weken; totaal: 4.
1 (=1A) - eerste prik vanaf 10 weken (indicatie vervroegd) of 3 maand; totaal: 3.
2 - eerste prik vanaf 6 maand tot 1 jaar: totaal: 4.
3 - eerste prik vanaf 1 jaar tot 2 jaar: totaal: 3.
4 - eerste prik vanaf 2 jaar tot 18 jaar: totaal: 3.
Database_view: Check_SV1
With_attributes:
Aantal_openstaande_onderdelen
Query:
SELECT COUNT(*) AS Aantal_openstaande_onderdelen
FROM Serie_Vaccin AS a
LEFT JOIN Serie_Vaccin_Onderdeel AS b
ON (a.Clientid = b.Clientid and a.Serie_Vaccin_Info_id = b.Serie_Vaccin_Info_id and a.Volgnr=b.Volgnr)
WHERE a.Clientid = %s
AND b.Serie_Vaccin_Info_id = 1
AND b.Volgnr = %s
AND b.Datum_vanaf <> '0000-00-00'
AND b.Datum_registratie = '0000-00-00'
With_arguments: Vaccinatie.Clientid, SV1.Volgnr
rTable 11: Controle compleetheid huidige serievaccin DKTP-HIB-HEPB
If: | 0| 1| 2| 3|
DKTP-HIB-HEPB_Onderdeel_geregistreerd = 1 | Y| Y| Y| Y|
Check_SV1.Aantal_openstaande_onderdelen = 0 | Y| Y| Y| Y|
SV1.Schema in [0,2] | Y| Y| N| N|
SV1.Schema in [1,3,4] | -| -| Y| Y|
SV1.Volgnr <= 3 | Y| N| -| -|
SV1.Volgnr <= 2 | -| -| Y| N|
Then:
Evaluatie is Opvoeren_volgende_vaccinatie_DKTP-HIB-HEPB | X| | X| |
Evaluatie is Afsluiten_huidige_vaccinatie_DKTP-HIB-HEPB | X| X| X| X|
# .......
########## Opvoeren volgende registratie voor serievaccin PNEU ################################
Schema-nummers Pneu:
1 - eerste prik vanaf 4 weken (indicatie vervroegd?) of 3 maand; totaal: 3.
2 - eerste prik vanaf 6 maand tot 1 jaar: totaal: 3 (ander intervalschema).
3 - eerste prik vanaf 1 jaar tot 2 jaar: totaal: 2.
4 - eerste prik vanaf 2 jaar tot 18 jaar: totaal: 0.
rTable 12: Controle compleetheid huidige serievaccin Pneu
If: | 0| 1| 2| 3|
Pneu_geregistreerd = 1 | Y| Y| Y| Y|
Serie_Vaccin_Pneu.Schema in [1,2] | Y| Y| N| N|
Serie_Vaccin_Pneu.Schema = 3 | -| -| Y| Y|
Serie_Vaccin_Pneu.Volgnr <= 2 | Y| N| -| -|
Serie_Vaccin_Pneu.Volgnr <= 1 | -| -| Y| N|
Then:
Evaluatie is Opvoeren_volgende_vaccinatie_Pneu | X| | X| |
# .......
########## Afsluiten evaluatie ##################################
rTable 13:
If: | 0|
Vaccinatie_Bevat_D_ = 1 | N|
Vaccinatie_Bevat_K_ = 1 | N|
Vaccinatie_Bevat_T_ = 1 | N|
Vaccinatie_Bevat_P_ = 1 | N|
Vaccinatie.Omschrijving = "Hib" | N|
Vaccinatie.Omschrijving = "HepB" | N|
Vaccinatie.Omschrijving = "Pneu" | N|
Vaccinatie.Omschrijving = "BMR" | N|
Vaccinatie.Omschrijving = "MenACWY" | N|
Vaccinatie.Omschrijving = "HPV" | N|
Then:
Evaluatie is NOK | X|
# .......
Table 14: Bepaal interval verkort voor volgende vaccinatie SV1
If: | 0| 1| 2|
SV1.Interval_verkort = 1 | Y| N| N|
Interval_verkort = 1 | -| Y| N|
Then:
Interval_verkort_SV1_DT = 1 | X| X| |
Interval_verkort_SV1_DT = 0 | | | X|
# .......
## tussenstap om fout in verkrijg_waarde_voor_formula (formuletext) te vermijden...
Attribute: SV1_Volgnr Type: Integer
Equals: SV1.Volgnr
Attribute: Volgnr_SV1_DT Type: Integer
Equals: SV1_Volgnr + 1
-- Overbodige tussenstappen; gaan weer verdwijnen----
Attribute: Datum_vanaf_SV1_DT Type: Integer
Equals: Datum_vanaf_SV1
Attribute: Vroegste_datum_vanaf_SV1_DT Type: Integer
Equals: Vroegste_datum_vanaf_SV1
-----------------------------------------------------
# Attribute: Vaccinatie.Datum_registratie Type: Text
Attribute: DatumPlus2weken Type: Integer
Equals: to_integer(fdatum(Vaccinatie.Datum_registratie) + fdeltaweken(2))
Attribute: DatumPlus4weken Type: Integer
Equals: to_integer(fdatum(Vaccinatie.Datum_registratie) + fdeltaweken(4))
Attribute: DatumPlus6weken Type: Integer
Equals: to_integer(fdatum(Vaccinatie.Datum_registratie) + fdeltaweken(6))
Attribute: DatumPlus1maand Type: Integer
Equals: to_integer(fdatum(Vaccinatie.Datum_registratie) + fdeltamaanden(1))
Attribute: DatumPlus2maand Type: Integer
Equals: to_integer(fdatum(Vaccinatie.Datum_registratie) + fdeltamaanden(2))
Attribute: DatumPlus3maand Type: Integer
Equals: to_integer(fdatum(Vaccinatie.Datum_registratie) + fdeltamaanden(3))
Attribute: DatumPlus5maand Type: Integer
Equals: to_integer(fdatum(Vaccinatie.Datum_registratie) + fdeltamaanden(5))
Attribute: DatumPlus6maand Type: Integer
Equals: to_integer(fdatum(Vaccinatie.Datum_registratie) + fdeltamaanden(6))
rTable 15: Bepaal volgende datum voor SV1 Schema 0
If: | 0| 1| 2| 3| 4| 5|
SV1.Schema = 0 | Y| Y| Y| Y| Y| Y|
SV1.Volgnr = 1 | Y| Y| N| N| N| N|
SV1.Volgnr = 2 | -| -| Y| Y| N| N|
SV1.Volgnr = 3 | -| -| -| -| Y| Y|
Interval_verkort_SV1_DT = 1 | Y| N| Y| N| Y| N|
Then:
Datum_vanaf_SV1 = DatumPlus1maand | X| X| | | | |
Datum_vanaf_SV1 = DatumPlus2maand | | | X| X| | |
Datum_vanaf_SV1 = DatumPlus6maand | | | | | X| X|
Vroegste_datum_vanaf_SV1 = DatumPlus2weken | | X| | X| | |
Vroegste_datum_vanaf_SV1 = DatumPlus1maand | X| | | | | |
Vroegste_datum_vanaf_SV1 = DatumPlus2maand | | | X| | | |
Vroegste_datum_vanaf_SV1 = DatumPlus5maand | | | | | | X|
Vroegste_datum_vanaf_SV1 = DatumPlus6maand | | | | | X| |
# .......
rTable 16: Bepaal volgende datum voor SV1 Schema 1
If: | 0| 1| 2| 3|
SV1.Schema = 1 | Y| Y| Y| Y|
SV1.Volgnr = 1 | Y| Y| N| N|
SV1.Volgnr = 2 | -| -| Y| Y|
Interval_verkort_SV1_DT = 1 | Y| N| Y| N|
Then:
Datum_vanaf_SV1 = DatumPlus2maand | X| X| | |
Datum_vanaf_SV1 = DatumPlus6maand | | | X| X|
Vroegste_datum_vanaf_SV1 = DatumPlus6weken | | X| | |
Vroegste_datum_vanaf_SV1 = DatumPlus2maand | X| | | |
Vroegste_datum_vanaf_SV1 = DatumPlus5maand | | | | X|
Vroegste_datum_vanaf_SV1 = DatumPlus6maand | | | X| |
# .......
rTable 17: Bepaal volgende datum voor SV1 Schema 2
If: | 0| 1| 2| 3| 4| 5|
SV1.Schema = 2 | Y| Y| Y| Y| Y| Y|
SV1.Volgnr = 1 | Y| Y| N| N| N| N|
SV1.Volgnr = 2 | -| -| Y| Y| N| N|
SV1.Volgnr = 3 | -| -| -| -| Y| Y|
Interval_verkort_SV1_DT = 1 | Y| N| Y| N| Y| N|
Then:
Datum_vanaf_SV1 = DatumPlus4weken | X| X| | | | |
Datum_vanaf_SV1 = DatumPlus2maand | | | X| X| | |
Datum_vanaf_SV1 = DatumPlus6maand | | | | | X| X|
Vroegste_datum_vanaf_SV1 = DatumPlus2weken | | X| | X| | |
Vroegste_datum_vanaf_SV1 = DatumPlus4weken | X| | | | | |
Vroegste_datum_vanaf_SV1 = DatumPlus2maand | | | X| | | |
Vroegste_datum_vanaf_SV1 = DatumPlus5maand | | | | | | X|
Vroegste_datum_vanaf_SV1 = DatumPlus6maand | | | | | X| |
# .......
rTable 18: Bepaal volgende datum voor SV1 Schema 3 en 4
If: | 0| 1| 2| 3|
SV1.Schema in [3,4] | Y| Y| Y| Y|
SV1.Volgnr = 1 | Y| Y| N| N|
SV1.Volgnr = 2 | -| -| Y| Y|
Interval_verkort_SV1_DT = 1 | Y| N| Y| N|
Then:
Datum_vanaf_SV1 = DatumPlus2maand | X| X| | |
Datum_vanaf_SV1 = DatumPlus6maand | | | X| X|
Vroegste_datum_vanaf_SV1 = DatumPlus2weken | | X| | |
Vroegste_datum_vanaf_SV1 = DatumPlus2maand | X| | | |
Vroegste_datum_vanaf_SV1 = DatumPlus5maand | | | | X|
Vroegste_datum_vanaf_SV1 = DatumPlus6maand | | | X| |
# .......
## tussenstap om fout in verkrijg_waarde_voor_formula (formuletext) te vermijden...
Attribute: Serie_Vaccin_Pneu_Volgnr Type: Integer
Equals: Serie_Vaccin_Pneu.Volgnr
Attribute: Volgnr_SV2_DT Type: Integer
Equals: Serie_Vaccin_Pneu_Volgnr + 1
-- Overbodige tussenstappen; gaan weer verdwijnen----
Attribute: Datum_vanaf_SV2_DT Type: Integer
Equals: Datum_vanaf_SV2
Attribute: Vroegste_datum_vanaf_SV2_DT Type: Integer
Equals: Vroegste_datum_vanaf_SV2
-----------------------------------------------------
Table 19: Bepaal interval verkort voor volgende vaccinatie SV2
If: | 0| 1| 2|
Serie_Vaccin_Pneu.Interval_verkort = 1 | Y| N| N|
Interval_verkort = 1 | -| Y| N|
Then:
Interval_verkort_SV2_DT = 1 | X| X| |
Interval_verkort_SV2_DT = 0 | | | X|
# .......
rTable 20: Bepaal volgende datum voor SV2 Schema 1
If: | 0| 1| 2| 3|
Serie_Vaccin_Pneu.Schema = 1 | Y| Y| Y| Y|
Serie_Vaccin_Pneu.Volgnr = 1 | Y| Y| N| N|
Serie_Vaccin_Pneu.Volgnr = 2 | -| -| Y| Y|
Interval_verkort_SV2_DT = 1 | Y| N| Y| N|
Then:
Datum_vanaf_SV2 = DatumPlus2maand | X| X| | |
Datum_vanaf_SV2 = DatumPlus6maand | | | X| X|
Vroegste_datum_vanaf_SV2 = DatumPlus6weken | | X| | |
Vroegste_datum_vanaf_SV2 = DatumPlus2maand | X| | | |
Vroegste_datum_vanaf_SV2 = DatumPlus5maand | | | | X|
Vroegste_datum_vanaf_SV2 = DatumPlus6maand | | | X| |
# .......
rTable 21: Bepaal volgende datum voor SV2 Schema 2
If: | 0| 1| 2| 3|
Serie_Vaccin_Pneu.Schema = 2 | Y| Y| Y| Y|
Serie_Vaccin_Pneu.Volgnr = 1 | Y| Y| N| N|
Serie_Vaccin_Pneu.Volgnr = 2 | -| -| Y| Y|
Interval_verkort_SV2_DT = 1 | Y| N| Y| N|
Then:
Datum_vanaf_SV2 = DatumPlus3maand | X| X| | |
Datum_vanaf_SV2 = DatumPlus6maand | | | X| X|
Vroegste_datum_vanaf_SV2 = DatumPlus6weken | | X| | |
Vroegste_datum_vanaf_SV2 = DatumPlus3maand | X| | | |
Vroegste_datum_vanaf_SV2 = DatumPlus5maand | | | | X|
Vroegste_datum_vanaf_SV2 = DatumPlus6maand | | | X| |
# .......
rTable 22: Bepaal volgende datum voor SV2 Schema 3
If: | 0| 1|
Serie_Vaccin_Pneu.Schema = 3 | Y| Y|
Serie_Vaccin_Pneu.Volgnr = 1 | Y| Y|
Interval_verkort_SV2_DT = 1 | Y| N|
Then:
Datum_vanaf_SV2 = DatumPlus2maand | X| X|
Vroegste_datum_vanaf_SV2 = DatumPlus6weken | | X|
Vroegste_datum_vanaf_SV2 = DatumPlus2maand | X| |
# .......
########## Nabewerking 1 ##################################################################################
Een serievaccin zonder onderdelen kan direkt worden afgesloten en de volgende prik kan worden vastgelegd indien nog nodig.
Een serievaccin met onderdelen kan pas worden afgesloten als alle vereiste onderdelen zijn binnengekomen.
Als dat het geval is kan de volgende prik worden vastgelegd indien nog nodig.
Tabel nodig voor deze nabewerking (per serievaccin met onderdelen).
########## Nabewerking 2 ##################################################################################
tbv.
DKTP 4 jaar (vervalt als DKTP(-Hib)-HepB3 na 2de verjaardag)
DTP 9 jaar (vervalt als DKTP(-Hib)-HepB3 na 6de verjaardag, anders combi-enting)
sowieso annuleren (datum_vanaf wordt 0) maar eventuele registratie blijft staan, als annuleren te laat is:
XrTable :
If: | 0| 1|
Vaccinatie_Datum_registratie meest recente DKTP(-Hib)-HepB > geboortedatum + 6 jaar | Y| N|
Vaccinatie_Datum_registratie meest recente DKTP(-Hib)-HepB > geboortedatum + 2 jaar | -| Y|
Then:
Annuleer DKTP en DTP (datum_vanaf = 0000-00-00) | X| |
Annuleer DTP (datum_vanaf = 0000-00-00) | | X|
# .......
of meer intelligent annuleren (maar ook nu blijft een eventuele registratie gewoon staan):
XrTable :
If: | 0| 1| 2| 3| 4| 5| 6| 7|
Los vaccin DKTP.datum_vanaf = "0000-00-00" | Y| Y| Y| N| N| N| N| N|
Los vaccin DKP.datum_vanaf = "0000-00-00" | Y| N| N| Y| Y| -| N| N|
Vaccinatie_Datum_registratie meest recente DKTP(-Hib)-HepB > geboortedatum + 6 jaar | -| Y| N| Y| N| N| Y| N|
Vaccinatie_Datum_registratie meest recente DKTP(-Hib)-HepB > geboortedatum + 2 jaar | -| -| -| -| Y| N| -| Y|
Then:
Geen annulering | X| | X| | | X| | |
Annuleer DTP (datum_vanaf = 0000-00-00) | | X| | | | | | |
Annuleer DKTP (datum_vanaf = 0000-00-00) | | | | X| X| | | X|
Annuleer DKTP en DTP (datum_vanaf = 0000-00-00) | | | | | | | X| |
# .......
Attribute: Interval_verkort_print Type: Integer
Equals: Interval_verkort
GoalAttribute: Evaluatie
Multivalued_until: Verwerking_beeindigd
Repeat_until: Verwerking_beeindigd
Case: Verwerking_beeindigd
Print: "Verwerking beeindigd"
Case: D-OK
Print: "Client %s: onderdeel D voor serie-vaccin 1 met volgnummer: %s is: Goedgekeurd." Vaccinatie.Clientid Onderdeel_D.Volgnr
>SQL: "UPDATE Vaccinatie "
-SQL: " SET Statusid = 2 "
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Omschrijving = '%s' " Vaccinatie.Omschrijving
<SQL: " AND Datum_registratie = %s " Vaccinatie_Datum_registratie
>SQL: "UPDATE Serie_Vaccin_Onderdeel "
-SQL: " SET Datum_registratie = %s " Vaccinatie_Datum_registratie
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Serie_Vaccin_Info_id = 1 "
-SQL: " AND Volgnr = %s " Onderdeel_D.Volgnr
<SQL: " AND Vaccin_Onderdeel_Info_id = 1 "
Case: D-NOK
Print: "Client %s: onderdeel D voor serie-vaccin 1 is: Afgekeurd (met reden: %s)." Vaccinatie.Clientid D_Reden_DT
>SQL: "UPDATE Vaccinatie "
-SQL: " SET Statusid = 3 "
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Omschrijving = '%s' " Vaccinatie.Omschrijving
<SQL: " AND Datum_registratie = %s " Vaccinatie_Datum_registratie
Case: K-OK
Print: "Client %s: onderdeel K voor serie-vaccin 1 met volgnummer: %s is: Goedgekeurd." Vaccinatie.Clientid Onderdeel_K.Volgnr
>SQL: "UPDATE Vaccinatie "
-SQL: " SET Statusid = 2 "
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Omschrijving = '%s' " Vaccinatie.Omschrijving
<SQL: " AND Datum_registratie = %s " Vaccinatie_Datum_registratie
>SQL: "UPDATE Serie_Vaccin_Onderdeel "
-SQL: " SET Datum_registratie = %s " Vaccinatie_Datum_registratie
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Serie_Vaccin_Info_id = 1 "
-SQL: " AND Volgnr = %s " Onderdeel_K.Volgnr
<SQL: " AND Vaccin_Onderdeel_Info_id = 2 "
Case: K-NOK
Print: "Client %s: onderdeel K voor serie-vaccin 1 is: Afgekeurd (met reden: %s)." Vaccinatie.Clientid K_Reden_DT
>SQL: "UPDATE Vaccinatie "
-SQL: " SET Statusid = 3 "
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Omschrijving = '%s' " Vaccinatie.Omschrijving
<SQL: " AND Datum_registratie = %s " Vaccinatie_Datum_registratie
Case: T-OK
Print: "Client %s: onderdeel T voor serie-vaccin 1 met volgnummer: %s is: Goedgekeurd." Vaccinatie.Clientid Onderdeel_T.Volgnr
>SQL: "UPDATE Vaccinatie "
-SQL: " SET Statusid = 2 "
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Omschrijving = '%s' " Vaccinatie.Omschrijving
<SQL: " AND Datum_registratie = %s " Vaccinatie_Datum_registratie
>SQL: "UPDATE Serie_Vaccin_Onderdeel "
-SQL: " SET Datum_registratie = %s " Vaccinatie_Datum_registratie
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Serie_Vaccin_Info_id = 1 "
-SQL: " AND Volgnr = %s " Onderdeel_T.Volgnr
<SQL: " AND Vaccin_Onderdeel_Info_id = 3 "
Case: T-NOK
Print: "Client %s: onderdeel T voor serie-vaccin 1 is: Afgekeurd (met reden: %s)." Vaccinatie.Clientid T_Reden_DT
>SQL: "UPDATE Vaccinatie "
-SQL: " SET Statusid = 3 "
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Omschrijving = '%s' " Vaccinatie.Omschrijving
<SQL: " AND Datum_registratie = %s " Vaccinatie_Datum_registratie
Case: P-OK
Print: "Client %s: onderdeel P voor serie-vaccin 1 met volgnummer: %s is: Goedgekeurd." Vaccinatie.Clientid Onderdeel_P.Volgnr
>SQL: "UPDATE Vaccinatie "
-SQL: " SET Statusid = 2 "
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Omschrijving = '%s' " Vaccinatie.Omschrijving
<SQL: " AND Datum_registratie = %s " Vaccinatie_Datum_registratie
>SQL: "UPDATE Serie_Vaccin_Onderdeel "
-SQL: " SET Datum_registratie = %s " Vaccinatie_Datum_registratie
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Serie_Vaccin_Info_id = 1 "
-SQL: " AND Volgnr = %s " Onderdeel_P.Volgnr
<SQL: " AND Vaccin_Onderdeel_Info_id = 4 "
Case: P-NOK
Print: "Client %s: onderdeel P voor serie-vaccin 1 is: Afgekeurd (met reden: %s)." Vaccinatie.Clientid P_Reden_DT
>SQL: "UPDATE Vaccinatie "
-SQL: " SET Statusid = 3 "
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Omschrijving = '%s' " Vaccinatie.Omschrijving
<SQL: " AND Datum_registratie = %s " Vaccinatie_Datum_registratie
Case: Hib-OK
Print: "Client %s: onderdeel Hib voor serie-vaccin 1 met volgnummer: %s is: Goedgekeurd." Vaccinatie.Clientid Onderdeel_Hib.Volgnr
>SQL: "UPDATE Vaccinatie "
-SQL: " SET Statusid = 2 "
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Omschrijving = '%s' " Vaccinatie.Omschrijving
<SQL: " AND Datum_registratie = %s " Vaccinatie_Datum_registratie
>SQL: "UPDATE Serie_Vaccin_Onderdeel "
-SQL: " SET Datum_registratie = %s " Vaccinatie_Datum_registratie
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Serie_Vaccin_Info_id = 1 "
-SQL: " AND Volgnr = %s " Onderdeel_Hib.Volgnr
<SQL: " AND Vaccin_Onderdeel_Info_id = 5 "
Case: Hib-NOK
Print: "Client %s: onderdeel Hib voor serie-vaccin 1 is: Afgekeurd (met reden: %s)." Vaccinatie.Clientid Hib_Reden_DT
>SQL: "UPDATE Vaccinatie "
-SQL: " SET Statusid = 3 "
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Omschrijving = '%s' " Vaccinatie.Omschrijving
<SQL: " AND Datum_registratie = %s " Vaccinatie_Datum_registratie
Case: HepB-OK
Print: "Client %s: onderdeel HepB voor serie-vaccin 1 met volgnummer: %s is: Goedgekeurd." Vaccinatie.Clientid Onderdeel_HepB.Volgnr
>SQL: "UPDATE Vaccinatie "
-SQL: " SET Statusid = 2 "
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Omschrijving = '%s' " Vaccinatie.Omschrijving
<SQL: " AND Datum_registratie = %s " Vaccinatie_Datum_registratie
>SQL: "UPDATE Serie_Vaccin_Onderdeel "
-SQL: " SET Datum_registratie = %s " Vaccinatie_Datum_registratie
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Serie_Vaccin_Info_id = 1 "
-SQL: " AND Volgnr = %s " Onderdeel_HepB.Volgnr
<SQL: " AND Vaccin_Onderdeel_Info_id = 6 "
Case: HepB-NOK
Print: "Client %s: onderdeel HepB voor serie-vaccin 1 is: Afgekeurd (met reden: %s)." Vaccinatie.Clientid HepB_Reden_DT
>SQL: "UPDATE Vaccinatie "
-SQL: " SET Statusid = 3 "
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Omschrijving = '%s' " Vaccinatie.Omschrijving
<SQL: " AND Datum_registratie = %s " Vaccinatie_Datum_registratie
Case: Pneu-OK
Print: "Client %s: serie-vaccin 2: PNEU met volgnummer: %s is: Goedgekeurd." Vaccinatie.Clientid Serie_Vaccin_Pneu.Volgnr
>SQL: "UPDATE Vaccinatie "
-SQL: " SET Statusid = 2 "
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Omschrijving = '%s' " Vaccinatie.Omschrijving
<SQL: " AND Datum_registratie = %s " Vaccinatie_Datum_registratie
>SQL: "UPDATE Serie_Vaccin "
-SQL: " SET Datum_registratie = %s, " Vaccinatie_Datum_registratie
-SQL: " Interval_verkort = %s " Interval_verkort_SV2_DT
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Serie_Vaccin_Info_id = 2 "
<SQL: " AND Volgnr = %s " Serie_Vaccin_Pneu.Volgnr
Case: Pneu-NOK
Print: "Client %s: serie-vaccin 2: Pneu is: Afgekeurd (met reden: %s)." Vaccinatie.Clientid Pneu_Reden_DT
>SQL: "UPDATE Vaccinatie "
-SQL: " SET Statusid = 3 "
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Omschrijving = '%s' " Vaccinatie.Omschrijving
<SQL: " AND Datum_registratie = %s " Vaccinatie_Datum_registratie
Case: BMR-OK
Print: "Client %s: los vaccin 1: BMR met volgnummer: %s is: Goedgekeurd." Vaccinatie.Clientid Los_Vaccin_BMR.Volgnr
>SQL: "UPDATE Vaccinatie "
-SQL: " SET Statusid = 2 "
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Omschrijving = '%s' " Vaccinatie.Omschrijving
<SQL: " AND Datum_registratie = %s " Vaccinatie_Datum_registratie
>SQL: "UPDATE Los_Vaccin "
-SQL: " SET Datum_registratie = %s " Vaccinatie_Datum_registratie
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Los_Vaccin_Info_id = 1 "
<SQL: " AND Volgnr = %s " Los_Vaccin_BMR.Volgnr
Case: BMR-NOK
Print: "Client %s: los vaccin 1: BMR is: Afgekeurd (met reden: %s)." Vaccinatie.Clientid BMR_Reden_DT
>SQL: "UPDATE Vaccinatie "
-SQL: " SET Statusid = 3 "
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Omschrijving = '%s' " Vaccinatie.Omschrijving
<SQL: " AND Datum_registratie = %s " Vaccinatie_Datum_registratie
Case: MenACWY-OK
Print: "Client %s: los vaccin 2: MenACWY met volgnummer: %s is: Goedgekeurd." Vaccinatie.Clientid Los_Vaccin_MenACWY.Volgnr
>SQL: "UPDATE Vaccinatie "
-SQL: " SET Statusid = 2 "
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Omschrijving = '%s' " Vaccinatie.Omschrijving
<SQL: " AND Datum_registratie = %s " Vaccinatie_Datum_registratie
>SQL: "UPDATE Los_Vaccin "
-SQL: " SET Datum_registratie = %s " Vaccinatie_Datum_registratie
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Los_Vaccin_Info_id = 2 "
<SQL: " AND Volgnr = %s " Los_Vaccin_MenACWY.Volgnr
Case: MenACWY-NOK
Print: "Client %s: los vaccin 2: MenACWY is: Afgekeurd (met reden: %s)." Vaccinatie.Clientid MenACWY_Reden_DT
>SQL: "UPDATE Vaccinatie "
-SQL: " SET Statusid = 3 "
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Omschrijving = '%s' " Vaccinatie.Omschrijving
<SQL: " AND Datum_registratie = %s " Vaccinatie_Datum_registratie
Case: HPV-OK
Print: "Client %s: los vaccin 3: HPV met volgnummer: %s is: Goedgekeurd." Vaccinatie.Clientid Los_Vaccin_HPV.Volgnr
>SQL: "UPDATE Vaccinatie "
-SQL: " SET Statusid = 2 "
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Omschrijving = '%s' " Vaccinatie.Omschrijving
<SQL: " AND Datum_registratie = %s " Vaccinatie_Datum_registratie
>SQL: "UPDATE Los_Vaccin "
-SQL: " SET Datum_registratie = %s " Vaccinatie_Datum_registratie
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Los_Vaccin_Info_id = 3 "
<SQL: " AND Volgnr = %s " Los_Vaccin_HPV.Volgnr
Case: HPV-NOK
Print: "Client %s: los vaccin 3: HPV is: Afgekeurd (met reden: %s)." Vaccinatie.Clientid HPV_Reden_DT
>SQL: "UPDATE Vaccinatie "
-SQL: " SET Statusid = 3 "
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Omschrijving = '%s' " Vaccinatie.Omschrijving
<SQL: " AND Datum_registratie = %s " Vaccinatie_Datum_registratie
Case: Opvoeren_volgende_vaccinatie_DKTP-HIB-HEPB
Print: "==> Volgende vaccinatiedatum voor serie vaccin 1: DKTP-HIB-HEPB met volgnr %s vastgelegd." Volgnr_SV1_DT
>SQL: "INSERT INTO Serie_Vaccin (Clientid, Serie_Vaccin_Info_id, Volgnr, Schema, Datum_vanaf, Vroegste_datum_vanaf, Interval_verkort) "
-SQL: "VALUES (%s, " Vaccinatie.Clientid
-SQL: " %s, " DKTP_Hib_HepB_id
-SQL: " %s, " Volgnr_SV1_DT
-SQL: " %s, " SV1.Schema
-SQL: " %s, " Datum_vanaf_SV1_DT
-SQL: " %s, " Vroegste_datum_vanaf_SV1_DT
<SQL: " %s) " Interval_verkort_SV1_DT
>SQL: "INSERT INTO Serie_Vaccin_Onderdeel (Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id, Datum_vanaf, Vroegste_datum_vanaf) "
-SQL: "VALUES (%s, %s, %s, " Vaccinatie.Clientid DKTP_Hib_HepB_id Volgnr_SV1_DT
<SQL: " %s, %s, %s) " D_id Datum_vanaf_SV1_DT Vroegste_datum_vanaf_SV1_DT
>SQL: "INSERT INTO Serie_Vaccin_Onderdeel (Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id, Datum_vanaf, Vroegste_datum_vanaf) "
-SQL: "VALUES (%s, %s, %s, " Vaccinatie.Clientid DKTP_Hib_HepB_id Volgnr_SV1_DT
<SQL: " %s, %s, %s) " K_id Datum_vanaf_SV1_DT Vroegste_datum_vanaf_SV1_DT
>SQL: "INSERT INTO Serie_Vaccin_Onderdeel (Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id, Datum_vanaf, Vroegste_datum_vanaf) "
-SQL: "VALUES (%s, %s, %s, " Vaccinatie.Clientid DKTP_Hib_HepB_id Volgnr_SV1_DT
<SQL: " %s, %s, %s) " T_id Datum_vanaf_SV1_DT Vroegste_datum_vanaf_SV1_DT
>SQL: "INSERT INTO Serie_Vaccin_Onderdeel (Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id, Datum_vanaf, Vroegste_datum_vanaf) "
-SQL: "VALUES (%s, %s, %s, " Vaccinatie.Clientid DKTP_Hib_HepB_id Volgnr_SV1_DT
<SQL: " %s, %s, %s) " P_id Datum_vanaf_SV1_DT Vroegste_datum_vanaf_SV1_DT
>SQL: "INSERT INTO Serie_Vaccin_Onderdeel (Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id, Datum_vanaf, Vroegste_datum_vanaf) "
-SQL: "VALUES (%s, %s, %s, " Vaccinatie.Clientid DKTP_Hib_HepB_id Volgnr_SV1_DT
<SQL: " %s, %s, %s) " Hib_id Datum_vanaf_SV1_DT Vroegste_datum_vanaf_SV1_DT
>SQL: "INSERT INTO Serie_Vaccin_Onderdeel (Clientid, Serie_Vaccin_Info_id, Volgnr, Vaccin_Onderdeel_Info_id, Datum_vanaf, Vroegste_datum_vanaf) "
-SQL: "VALUES (%s, %s, %s, " Vaccinatie.Clientid DKTP_Hib_HepB_id Volgnr_SV1_DT
<SQL: " %s, %s, %s) " HepB_id Datum_vanaf_SV1_DT Vroegste_datum_vanaf_SV1_DT
Case: Afsluiten_huidige_vaccinatie_DKTP-HIB-HEPB
Print: " Vaccinatie met serie vaccin 1: DKTP-HIB-HEPB met volgnr %s is afgesloten." SV1.Volgnr
>SQL: "UPDATE Serie_Vaccin "
-SQL: " SET Datum_registratie = %s, " Vaccinatie_Datum_registratie
-SQL: " Interval_verkort = %s " Interval_verkort_SV1_DT
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Serie_Vaccin_Info_id = 1 "
<SQL: " AND Volgnr = %s " SV1.Volgnr
Case: Opvoeren_volgende_vaccinatie_Pneu
Print: "==> Volgende vaccinatiedatum voor serie vaccin 2: PNEU met volgnr %s vastgelegd." Volgnr_SV2_DT
>SQL: "INSERT INTO Serie_Vaccin (Clientid, Serie_Vaccin_Info_id, Volgnr, Schema, Datum_vanaf, Vroegste_datum_vanaf, Interval_verkort) "
-SQL: "VALUES (%s, " Vaccinatie.Clientid
-SQL: " %s, " Pneu_id
-SQL: " %s, " Volgnr_SV2_DT
-SQL: " %s, " Serie_Vaccin_Pneu.Schema
-SQL: " %s, " Datum_vanaf_SV2_DT
-SQL: " %s, " Vroegste_datum_vanaf_SV2_DT
<SQL: " %s) " Interval_verkort_SV2_DT
Case: NOK
Print: "Client %s: ongeldige vaccinatie %s is: Afgekeurd." Vaccinatie.Clientid Vaccinatie.Omschrijving
>SQL: "UPDATE Vaccinatie "
-SQL: " SET Statusid = 3 "
-SQL: " WHERE Clientid = %s " Vaccinatie.Clientid
-SQL: " AND Omschrijving = '%s' " Vaccinatie.Omschrijving
<SQL: " AND Datum_registratie = %s " Vaccinatie_Datum_registratie
Covid engine
SQLite_database: "Database/Coviddemo.sqlite3"
Table 0:
If: | 0| 1| 2| 3| 4| 5|
'Volgende_Client?' | Y| Y| Y| Y| Y| N|
Stap1_symptomen >= Minimum_voor_PCR_tests | Y| N| N| N| N| -|
Stap1_symptomen > 0 | -| Y| Y| N| N| -|
Stap2_symptoom = 1 | -| Y| N| Y| N| -|
Then:
Actie is AlleClientenVerwerkt | | | | | | X|
Actie is PCR_test | X| X| | | | |
Actie is InQuarantaine | | | X| X| | |
Actie is AllesOK | | | | | X| |
# .......
Proposition: 'Volgende_Client?'
Obtain_instance_from_database_view: Client
Attribute: Stap1_symptomen
Equals: Niezen + Hoesten
Attribute: Niezen Type: Integer
Obtain_value_from_database_view: Client.sneezing
Attribute: Hoesten Type: Integer
Obtain_value_from_database_view: Client.coughing
Attribute: Minimum_voor_PCR_tests Type: Integer
Equals: 2
Attribute: Stap2_symptoom
Equals: Koorts
Table 1:
If: | 0| 1| 2| 3|
Leeftijd >= 10 | Y| Y| N| N|
Temperatuur >= 38.0 | Y| N| -| -|
Temperatuur >= 37.2 | -| -| Y| N|
Then:
Koorts = 1 | X| | X| |
Koorts = 0 | | X| | X|
# .......
Attribute: Leeftijd
Obtain_value_from_database_view: Client.age
Attribute: Temperatuur
Obtain_value_from_database_view: Client.temperature
Database_view: Client
With_attributes:
personid,name,age,temperature,sneezing,coughing
Query:
SELECT *
FROM client
LIMIT 1 OFFSET %s
With_arguments: Client.auto_index
GoalAttribute: Actie
Repeat_until: AlleClientenVerwerkt
Case: AlleClientenVerwerkt
Print: "Klaar met verwerken!"
Case: PCR_test
Print: "Resultaat %s: moet voor een Pcr-test..." Client.name
>SQL: "UPDATE client "
-SQL: " SET result = 'PCR test', "
-SQL: " fever = %s " Koorts.getvalue
<SQL: " WHERE Name = '%s' " Client.name
Case: InQuarantaine
Print: "Resultaat %s: moet in Quarantaine..." Client.name
>SQL: "UPDATE client "
-SQL: " SET result = 'Standard quarantine practice', "
-SQL: " fever = %s " Koorts.getvalue
<SQL: " WHERE Name = '%s' " Client.name
Case: AllesOK
Print: "Resultaat %s: geen actie vereist..." Client.name
>SQL: "UPDATE client "
-SQL: " SET result = 'No action required', "
-SQL: " fever = %s " Koorts.getvalue
<SQL: " WHERE Name = '%s' " Client.name
Initial_database_setup: delete_clients
Query:
DELETE FROM client
End_Query
Initial_database_setup: insert_new_clients
Query:
INSERT INTO client
(personid,name, age,temperature,sneezing,coughing)
VALUES
(1, 'TC0', 33, Null, 1, 1),
(2, 'TC1a', 10, 38.0, 0, 1),
(3, 'TC1b', 9, 37.2, 1, 0),
(4, 'TC2a', 10, 37.9, 0, 1),
(5, 'TC2b', 9, 37.1, 1, 0),
(6, 'TC3', 10, 38.0, 0, 0),
(7, 'TC4', 9, 37.1, 0, 0)
End_Query