...
# | Step | Status |
---|---|---|
1 | Responsible prepares rough business analysis/reqs doc | COMPLETE: Christina Riley |
2 | Get CHAI review | Pedro Pagalday Olivares reviewed & signed off. |
3 | Get Akros/VW Review | FYI: Pierre Dane |
4 | Get Ona feedback | FYI: Craig Appl |
5 | Responsible - 1 iteration for feedback | |
6 | Ona sign off | |
7 | Ona tech spec scoping | |
8 | Ona LOE | Small |
9 | Ona scheduling |
Table of Contents |
---|
High Level Steps
- Index Case arrives in BIOPHICS
- Nifi queries the BIOPHICS system on a regular schedule and identifies that a new index case has arrived
- Nifi creates the event in the server as defined in the Index Case Confirmation workflow
- Nifi creates a plan based on the details of the case classification
- Nifi POSTs this plan to Reveal
- Nifi creates tasks for each plan action (up to 10 actions), performing business logic based on the code and Intervention Unit (Person, Residential Structure, Mosquito Collection Point, etc.)
Assumptions
We assume the following with this process:
...
- We will create 1 plan for each index case classification that arrives
- BIOPHICS is the first customer for this automated feature and we will tailor the workflow for this system. We will make it more generic in the future
- We will work within the constraints of Reveal 2 when generating tasks. For example, the IRS tasks are hardcoded in the Android client when a family is created, so we will not create them in the server if a family isn't registered at a structure.
- All plans described below are to be generated as drafts within the Planning Module and only made active by a human user - this has been covered under the NiFI Business Logic to be Developed section.
...
title | New Scope |
---|
NEW Assumptions for Review
Craig Appl Annie Martin - the new assumptions below have been added based on recent conversations around missing scope pertaining to more than one FI plan being created when a case is linked to more than one foci (i.e. focus of infection and focus of residence).
Automation for case-triggered FIs when the Focus of Infection and the Focus of Residence are NOT THE SAME
**Section in progress**
- case to 1 focus investigation is completed according to Auto Plan and Task Gen: 1 case : 1 focus plan
- An extra focus investigation plan should be generated in certain cases - all templates and logic are not explicitly mentioned here should follow the above scoping document
Automation for case-triggered FIs when the Focus of Infection and the Focus of Residence are NOT THE SAME
If the BIOPHICS variables Focus_case_residence_classification_id and Focus_Source_of_Infection_classification_id are NOT the same, then the index case resides in a focus other than the focus in which they acquired the malaria infection. This means that two plans need to be generated - one plan for each focus. By definition, the case classification will be considered local for the focus of infection and imported for the focus of residence. The case classification variable that is imported from BIOPHICS is classified in relation to the focus of residence.
For the purposes of Thailand, local cases are defined as being from within the same focus (i.e. sub-village), as confirmed by Pedro.
- a plan should be generated for each focus associated with the index case
- A unique plan should be created for each focus. The plan generated for each focus is based on the given focus's focus classification and the case classification as defined by how the index case is associated with each focus.
- New assumptions:
- Focus classification defined - we have two focus types which each have their own variable for focus classification. These variables are the focus-type-specific equivalent of fiStatus variable.
- Focus of Infection: focus_Source_of_Infection_classification_
- Focus classification defined - we have two focus types which each have their own variable for focus classification. These variables are the focus-type-specific equivalent of fiStatus variable.
...
- code (BIOPHICS); responses (A1, A2, B1, B2)
- Focus of Residence: Focus_case_residence_classification_code (BIOPHICS); responses (A1, A2, B1, B2)
- Case classification defined - cases can be classified as either local (indigenous) or imported. The caseClassification variable is imported from BIOPHICS and is classified in relation to the focus of
...
- diagnosis.
- diagnosis.
For the purposes of Thailand, local cases are defined as being from within the same focus (i.e. sub-village), as confirmed by Pedro.
...
- Focus of Infection: there is no source of infection-specific variable for the focus of infection; by definition this is considered 'Local' and should be hard-coded as 'Local'
- Focus of Residence: caseClassification (BIOPHICS); responses (Local, Imported)
- Plan generation criteria defined - each plan should be generated according to the following variables/criteria:
- Focus of Infection: focus_Source_of_Infection_classification_code + hard-coded classification as 'Local'
- Focus of Residence: Focus_case_residence_classification_code + caseClassification
- Additional items needed in detail view Craig Appl - I've added these in the Active_FI_Detail_View tab of the Reveal Web UI & Reporting Data Dictionary
- Focus type - defined as either the Focus of Infection or the Focus of Residence
- Focus of Infection name: Focus_Source_of_Infection_
...
- name (BIOPHICS);
...
- show if focusType== 'Focus of Residence'
- Focus of Residence name: Focus_case_residence_
...
- name (BIOPHICS);
...
- Focus of Infection: there is no source of infection-specific variable for the focus of infection; by definition this is considered 'Local' and should be hard-coded as 'Local'
- Focus of Residence: caseClassification (BIOPHICS); responses (Local, Imported)
...
- Focus of Infection: focus_Source_of_Infection_classification_code + hard-coded classification as 'Local'
- Focus of Residence: Focus_case_residence_classification_code + caseClassification
...
- Focus type - defined as either the Focus of Infection or the Focus of Residence
- Focus of Infection name: Focus_Source_of_Infection_name (BIOPHICS); show if focusType== 'Focus of Residence'
- Focus of Residence name: Focus_case_residence_name (BIOPHICS); show if focusType== 'Focus of Infection'
Notes on Software Development required (Created by Craig on 23 July)
- This change is small because we need to update a Nifi processor to create an additional plan for the original operational area.
- Software to be developed is to create a Nifi processor that splits this request to two different jurisdictions and creates the same plan in both.
Sample Index Case Classification Form from BIOPHICS
This section contains the sample Index Case Classification form that's currently in BIOPHICS. This will be the original source for which business logic is defined.
Code Block | ||
---|---|---|
| ||
{
"case_id" : "141410007601031181107101758977",
"p_site_id" : "2301110301",
"p_site_name" : "ท่ากุ่มบน(ชายเขา)",
"p_site_area" : "B1",
"source_site_id" : "8800000000",
"source_site_name" : null,
"source_site_area" : null,
"case_classification" : "Bz",
"household_id" : "",
"blood_draw_date" : "20181106",
"investigation_date" : "20181106",
"ep1_create_date" : "2018-11-07 14:43:50.857",
"ep3_create_date" : "2018-11-07 14:50:34.877",
"house_number" : 161,
"patient_name" : "แล้",
"patient_surname" : "สมัครสุนทร",
"patient_age" : 22,
"species" : "V"
}
|
, p_site_name and p_site_area represent the focus area where the patient is from. While source_site_id, source_site_name and source_site_area represent the focus area that is the source of infection. For cases where the two are different, these fields will be populated with the details for a different focus area, and for situations where the source of infection and the location where the patient is from are the same, then the source site details will be null like above.p_site_id
Below is the index case above converted to an OpenSRP event:
Code Block |
---|
"clients": [],
"no_of_events": 0,
"events": [
{
"identifiers": {},
"baseEntityId": "2301110301",
"eventDate": "2018-11-06T00:00:00.000+0000",
"eventType": "Case Details",
"formSubmissionId": "81604cb9-1911-4b05-b92f-c4a7ee310b25",
"providerId": "nifi-user",
"duration": 0,
"entityType": "Case Details",
"details": {
"family_name": "สมัครสุนทร",
"focus_id": "2301110301",
"focus_name": "ท่ากุ่มบน(ชายเขา)",
"surname": "สมัครสุนทร",
"first_name": "แล้",
"age": "22",
"case_number": "141410007601031181107101758977",
"case_classification": "Bz",
"focus_status": "B1",
"focus_reason": "Investigation",
"species": "V",
"investigtion_date": "2018-11-06T00:00:00.000+0000",
"ep1_create_date" : "2018-11-07T10:10:27.673+0000",
"ep3_create_date" : "2018-11-07T10:17:58.977+0000",
"house_number" : "161"
},
"version": 1557860282617,
"teamId": "",
"dateCreated": "2018-11-07T10:17:58.977+0000",
"type": "Event"
}
]
} |
Case Classification Business Logic
This section defines the business logic and relationship to the templates below.
...
If (focus_status == A1 OR focus_status == A2)
then (choose Template 1)
...
If (focus_status == B1 )
then (choose Template 2)
...
If ((focus_status == B1 OR focus_status == B2) AND (case_classification == local) AND (historical_interventions == IRS))
then (choose template 3)
...
If ((focus_status == B1 OR focus_status == B2) AND (case_classification == local) AND (historical_interventions == Blood Screening))
then (choose template 4)
...
If (focus_status == NULL)
then (figure out based on case classification)
Unaccounted for Case Classification Scenarios
There are a number of unaccounted for case classification scenarios that we need to add to this document. (This section should be deleted when this document is finalized.)
- How do we trigger routine interventions? The BIOPHICS system only has case-triggered interventions. What will be the input before we have a user interface in FI planning?
- @Janette - These will be triggered via a button on the WebUI. There will need to be some discussion with Craig Appl, Matt Berg and @Kelvin about how this will integrate with your current NiFi process.
- Is there such a thing as an imported case classification for a B2 focus_status? (This doesn't appear to be covered in the templates)
- The answer is that an imported case could not transmit in a B2 focus_status, so no plan should be generated.
- Where will we get the historical intervention information IRS or Blood Screening? This information does not come in on the case classification form.
- We do NOT need to get the historical intervention information, Reveal will build up a history of interventions as these are carried out using the tool, but we don't need to import any from Biophics.
Case Classification Options
The case_classification field can have the following options. We need to map these against 'local' and 'imported' as defined above.
...
A
...
Plan Action Time Periods
This section defines time periods for all plans:
- Plan Execution Period
- Start: Today
- End: Today + 20 days
- Actions
- Index Case Confirmation
- Start: Plan Start
- End: Plan Start + 10 days
- Family Registration
- Start: Plan Start
- End: Plan Start + 20 days
- Bednet Distribution
- Start: Plan Start
- End: Plan Start + 20 days
- RACD Blood screening
- Start: Plan Start
- End: Plan Start + 20 days
- Larval Dipping
- Start: Plan Start
- End: Plan Start + 20 days
- Mosquito Collection
- Start: Plan Start
- End: Plan Start + 20 days
- Behavior Change Communication
- Start: Plan Start
- End: Plan Start + 20 days
- Index Case Confirmation
Nifi Business Logic to be Developed
This section defines the business logic that needs to be implemented in Nifi given the variables above.
Steps:
- Receive the case classification event
- Perform the logic defined in the Case Classification Business Logic section above which will determine which template to use
- Query the system to see if the house number defined in the case classification is already registered in the system as a location within the jurisdiction
- If the house number IS registered in the system we need to create a case classification with Action.code: Residential Structure
- If the house number IS NOT registered in the system we need to create a case classification with Action.code: Operational Area
- Load in the template in a replaceText processor
- Save the converted template to an attribute (the replaceText processor defines UUIDs and we need to reference these later)
- POST the draft plan to /rest/plans (Example)
- (BREAK) A human needs to convert the plan from draft to active
...
- Do nothing because the RACD Register Family task will automatically create a bednet distribution task in the Android client when the family is registered
...
Create a bednet distribution task at this location
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"identifier": "${UUID()}",
"planIdentifier": "${planIdentifier}",
"groupIdentifier": "${location.properties.parentId}",
"status": "Ready",
"businessStatus": "Not Visited",
"priority": 3,
"code": "${planActionCode}",
"description": "${planActionDescription}",
"focus": "${planActionIdentifier}",
"for": "${location.id}",
"executionStartDate": "${planActionTimingPeriodStart}",
"executionEndDate": "${planActionTimingPeriodEnd}",
"owner": "${taskOwner}",
"note": null
} |
...
Create a RACD Register Family task
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"identifier": "${UUID()}",
"planIdentifier": "${planIdentifier}",
"groupIdentifier": "${location.properties.parentId}",
"status": "Ready",
"businessStatus": "Not Visited",
"priority": 3,
"code": "${planActionCode}",
"description": "${planActionDescription}",
"focus": "${planActionIdentifier}",
"for": "${location.id}",
"executionStartDate": "${planActionTimingPeriodStart}",
"executionEndDate": "${planActionTimingPeriodEnd}",
"owner": "${taskOwner}",
"note": null
} |
...
- Do nothing
...
Create a case confirmation task
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"identifier": "${UUID()}",
"planIdentifier": "${planIdentifier}",
"groupIdentifier": "${location.properties.parentId}",
"status": "Ready",
"businessStatus": "Not Visited",
"priority": 3,
"code": "${planActionCode}",
"description": "${planActionDescription}",
"focus": "${planActionIdentifier}",
"for": "${location.id}",
"executionStartDate": "${planActionTimingPeriodStart}",
"executionEndDate": "${planActionTimingPeriodEnd}",
"reasonReference": "${openSRP_Case_Classification_Event_id}",
"owner": "${taskOwner}",
"note": null,
"serverVersion": 0
} |
...
Create a larval dipping task
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"identifier": "${UUID()}",
"planIdentifier": "${planIdentifier}",
"groupIdentifier": "${location.properties.parentId}",
"status": "Ready",
"businessStatus": "Not Visited",
"priority": 3,
"code": "${planActionCode}",
"description": "${planActionDescription}",
"focus": "${planActionIdentifier}",
"for": "${location.id}",
"executionStartDate": "${planActionTimingPeriodStart}",
"executionEndDate": "${planActionTimingPeriodEnd}",
"owner": "${taskOwner}",
"note": null
} |
...
Create a mosquito collection task
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"identifier": "${UUID()}",
"planIdentifier": "${planIdentifier}",
"groupIdentifier": "${location.properties.parentId}",
"status": "Ready",
"businessStatus": "Not Visited",
"priority": 3,
"code": "${planActionCode}",
"description": "${planActionDescription}",
"focus": "${planActionIdentifier}",
"for": "${location.id}",
"executionStartDate": "${planActionTimingPeriodStart}",
"executionEndDate": "${planActionTimingPeriodEnd}",
"owner": "${taskOwner}",
"note": null
} |
...
Create a blood screening task for each person
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"identifier": "${UUID()}",
"planIdentifier": "${planIdentifier}",
"groupIdentifier": "${jurisdiction.id}",
"status": "Ready",
"businessStatus": "Not Visited",
"priority": 3,
"code": "${planActionCode}",
"description": "${planActionDescription}",
"focus": "${planActionIdentifier}",
"for": "${client.baseEntityId}",
"executionStartDate": "${planActionTimingPeriodStart}",
"executionEndDate": "${planActionTimingPeriodEnd}",
"owner": "${taskOwner}",
"note": null
} |
...
Create a BCC task in the system
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"identifier": "${UUID()}",
"planIdentifier": "${planIdentifier}",
"groupIdentifier": "${jurisdiction.id}",
"status": "Ready",
"businessStatus": "Not Visited",
"priority": 3,
"code": "${planActionCode}",
"description": "${planActionDescription}",
"focus": "${planActionIdentifier}",
"for": "${jurisdiction.id}",
"executionStartDate": "${planActionTimingPeriodStart}",
"executionEndDate": "${planActionTimingPeriodEnd}",
"owner": "${taskOwner}",
"note": null
} |
...
Create a case confirmation task for the operational area
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"identifier": "${UUID()}",
"planIdentifier": "${planIdentifier}",
"groupIdentifier": "${jurisdiction.id}",
"status": "Ready",
"businessStatus": "Not Visited",
"priority": 3,
"code": "${planActionCode}",
"description": "${planActionDescription}",
"focus": "${planActionIdentifier}",
"for": "${jurisdiction.id}",
"executionStartDate": "${planActionTimingPeriodStart}",
"executionEndDate": "${planActionTimingPeriodEnd}",
"reasonReference": "${openSRP_Case_Classification_Event_id}",
"owner": "${taskOwner}",
"note": null,
"serverVersion": 0
} |
...
Plan Templates
This section includes the plan templates using the Nifi expression language.
For the purposes of plan automation, there are a total of six discrete, comprehensive protocols which have been translated into templates for the Thailand pilot. There are four protocols for case-triggered focus investigations (where fiReason==case-triggered); these protocols are dependent on the focus status (if fiStatus==A1 OR fiStatus==A2 OR fiStatus==B1 OR fiStatus==B2), the case classification (if case_classification==imported OR case_classification==local), and MAY be dependent on the historical vector control intervention employed (available in MIS). There are two protocols for routine focus interventions (where fiReason==routine); these protocols are dependent on the routine focus intervention selected (if actionCode==Bednet Distribution OR actionCode==Blood Screening).
Template 1: Local & Imported Case Triggered A1 & A2 - 7 Actions
Logic:
- Case Triggered
- There are 7 actions and goals
- Case Classification Form Mapping
Plan type 1: Automation for case-triggered FIs in A1 & A2 areas for both local and imported case classifications.
This plan type is initiated when a case is passively detected and entered into the MIS and the focus status is an A1 or A2 area (fiStatus==A1 OR fiStatus==A2) and the case is classified as either local or imported (if case_classification==imported OR case_classification==local). All focus investigation activities/actions, with the exception of IRS, should be available to be completed by the user for this protocol. The type of blood screening done for this area is RACD within 1km with a goal to screen the first 50 people or 10 households; we will use the goal of 'the first 50 people' for plan automation. Operationally, more individuals (both within and outside the 1km area) may be tested, so the hard-coding of blood screening to each family member registered is appropriate here.
If a structure already has a household registered during a previous plan, the user should not have a family registration task assigned to this structure, but the user should always be able to add additional family members.
This plan should close 20 days after the plan is initiated as per Pedro/Thailand.
- 1: actionTitle - Index case confirmation
- goalTargetMeasure: Case confirmation complete
- 2: actionTitle - Family Registration
- goalTargetMeasure: Percent of residential structures with families registered
- 3: actionTitle - Blood Screening
- goalTargetMeasure: Percent of registered people tested
- assumption: the protocol specifies RACD to be done within 1km; either the first 50 people or 10 households is the goal target; we will use the goal of 'the first 50 people' for plan automation. Operationally, more individuals (both within and outside the 1km area) may be tested.
- 4: actionTitle - Bednet Distribution
- goalTargetMeasure: Percent of residential structures received nets
- 5: actionTitle - Larval Dipping
- goalTargetMeasure: Number of larval dipping activities
- 6: actionTitle - Mosquito Collection
- goalTargetMeasure: Number of mosquito collection traps
- 7: actionTitle - Behaviour Change Communication
- goalTargetMeasure: BCC activity complete
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"identifier": "${UUID()}",
"version": "1",
"name": "${focus_status}-${jurisdiction.name}-${now():format("yyyy-MM-dd", "GMT")}",
"title": "${focus_status} - ${jurisdiction.name} - ${now():format("yyyy-MM-dd", "GMT")}",
"status": "active",
"date": "${now():format("yyyy-MM-dd", "GMT")}",
"effectivePeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"useContext": [
{
"code": "interventionType",
"valueCodableConcept": "FI"
},
{
"code": "fiStatus",
"valueCodableConcept": "${focus_status}"
},
{
"code": "fiReason",
"valueCodableConcept": "Case-triggered"
},
{
"code": "opensrpEventId",
"valueCodableConcept": "${opensrpCaseClassificationEventId}"
},
{
"code": "caseNum",
"valueCodableConcept": "${case_number}"
}
],
"jurisdiction": [
{
"code": "${revealLocationId}"
}
],
"serverVersion": 0,
"goal": [
{
"id": "Case_Confirmation",
"description": "Confirm the index case",
"priority": "medium-priority",
"target": [
{
"measure": "Number of case confirmation forms complete",
"detail": {
"detailQuantity": {
"value": 1,
"comparator": ">=",
"unit": "form(s)"
}
},
"due": "${now():toNumber():plus(864000000):format("yyyy-MM-dd")}"
}
]
},
{
"id": "RACD_register_all_families",
"description": "Register all families and family members in all residential structures enumerated or added (100%) within operational area",
"priority": "medium-priority",
"target": [
{
"measure": "Percent of residential structures with full family registration",
"detail": {
"detailQuantity": {
"value": 100,
"comparator": ">=",
"unit": "Percent"
}
},
"due": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
}
]
},
{
"id": "RACD_blood_screening_1km_radius",
"description": "Visit all residential structures (100%) within a 1 km radius of a confirmed index case and test each registered person",
"priority": "medium-priority",
"target": [
{
"measure": "Number of registered people tested",
"detail": {
"detailQuantity": {
"value": 50,
"comparator": ">=",
"unit": "person(s)"
}
},
"due": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
}
]
},
{
"id": "RACD_bednet_dist_1km_radius",
"description": "Visit 100% of residential structures in the operational area and provide nets",
"priority": "medium-priority",
"target": [
{
"measure": "Percent of residential structures received nets",
"detail": {
"detailQuantity": {
"value": 90,
"comparator": ">=",
"unit": "Percent"
}
},
"due": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
}
]
},
{
"id": "Larval_Dipping_Min_3_Sites",
"description": "Perform a minimum of three larval dipping activities in the operational area",
"priority": "medium-priority",
"target": [
{
"measure": "Number of larval dipping forms submitted",
"detail": {
"detailQuantity": {
"value": 3,
"comparator": ">=",
"unit": "form(s)"
}
},
"due": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
}
]
},
{
"id": "Mosquito_Collection_Min_3_Traps",
"description": "Set a minimum of three mosquito collection traps and complete the mosquito collection process",
"priority": "medium-priority",
"target": [
{
"measure": "Number of mosquito collection forms submitted",
"detail": {
"detailQuantity": {
"value": 3,
"comparator": ">=",
"unit": "form(s)"
}
},
"due": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
}
]
},
{
"id": "BCC_Focus",
"description": "Complete at least 1 BCC activity for the operational area",
"priority": "medium-priority",
"target": [
{
"measure": "Number of BCC forms submitted",
"detail": {
"detailQuantity": {
"value": 1,
"comparator": ">=",
"unit": "form(s)"
}
},
"due": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
}
]
}
],
"action": [
{
"identifier": "${UUID()}",
"prefix": 1,
"title": "Case Confirmation",
"description": "Confirm the index case",
"code": "Case Confirmation",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(864000000):format("yyyy-MM-dd")}"
},
"reason": "Investigation",
"goalId": "Case_Confirmation",
"subjectCodableConcept": {
"text": "Operational Area"
},
"taskTemplate": "Case_Confirmation"
},
{
"identifier": "${UUID()}",
"prefix": 2,
"title": "Family Registration",
"description": "Register all families & family members in all residential structures enumerated (100%) within the operational area",
"code": "RACD Register Family",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"reason": "Investigation",
"goalId": "RACD_register_all_families",
"subjectCodableConcept": {
"text": "Residential_Structure"
},
"taskTemplate": "RACD_register_families"
},
{
"identifier": "${UUID()}",
"prefix": 3,
"title": "Blood screening",
"description": "Visit all residential structures (100%) within a 1 km radius of a confirmed index case and test each registered person",
"code": "Blood Screening",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"reason": "Investigation",
"goalId": "RACD_blood_screening_1km_radius",
"subjectCodableConcept": {
"text": "Person"
},
"taskTemplate": "RACD_Blood_Screening"
},
{
"identifier": "${UUID()}",
"prefix": 4,
"title": "Bednet Distribution",
"description": "Visit 100% of residential structures in the operational area and provide nets",
"code": "Bednet Distribution",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"reason": "Routine",
"goalId": "RACD_bednet_dist_1km_radius",
"subjectCodableConcept": {
"text": "Residential_Structure"
},
"taskTemplate": "ITN_Visit_Structures"
},
{
"identifier": "${UUID()}",
"prefix": 5,
"title": "Larval Dipping",
"description": "Perform a minimum of three larval dipping activities in the operational area",
"code": "Larval Dipping",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"reason": "Investigation",
"goalId": "Larval_Dipping_Min_3_Sites",
"subjectCodableConcept": {
"text": "Breeding_Site"
},
"taskTemplate": "Larval_Dipping"
},
{
"identifier": "${UUID()}",
"prefix": 6,
"title": "Mosquito Collection",
"description": "Set a minimum of three mosquito collection traps and complete the mosquito collection process",
"code": "Mosquito Collection",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"reason": "Investigation",
"goalId": "Mosquito_Collection_Min_3_Traps",
"subjectCodableConcept": {
"text": "Mosquito_Collection_Point"
},
"taskTemplate": "Mosquito_Collection_Point"
},
{
"identifier": "${UUID()}",
"prefix": 7,
"title": "Behaviour Change Communication",
"description": "Conduct BCC activity",
"code": "BCC",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"reason": "Investigation",
"goalId": "BCC_Focus",
"subjectCodableConcept": {
"text": "Operational_Area"
},
"taskTemplate": "BCC_Focus"
}
]
}
|
Template 2: Imported Case Triggered B1 - 4 actions
Logic:
- Case Triggered
- There are 4 actions and goals
Plan type 2: Automation for case-triggered FIs in B1 areas for imported cases.
This plan type is initiated when a case is passively detected and entered into the MIS and the focus status is a B1 area (fiStatus==B1) and the case is classified as imported (if case_classification==imported). Only the following focus investigation activities/actions are specified for this protocol: index case confirmation, family registration, blood screening, and behavior change communication. The type of blood screening done for this area is RACD within 1km with a goal to screen the first 50 people or 10 households; we will use the goal of 'the first 50 people' for plan automation. Operationally, more individuals (both within and outside the 1km area) may be tested, so the hard-coding of blood screening to each family member registered is appropriate here. For the July 1 release, it is ok if bednet distribution is still hard-coded to family registration.
If a structure already has a household registered during a previous plan, the user should not have a family registration task assigned to this structure, but the user should always be able to add additional family members.
This plan should close 20 days after the plan is initiated as per Pedro/Thailand.
- 1: actionTitle - Index case confirmation
- goalTargetMeasure: Case confirmation complete
- 2: actionTitle - Family Registration
- goalTargetMeasure: Percent of residential structures with families registered
- 3: actionTitle - Blood Screening
- goalTargetMeasure: Percent of registered people tested
- assumption: the protocol specifies RACD to be done within 1km; either the first 50 people or 10 households is the goal target; we will use the goal of 'the first 50 people' for plan automation. Operationally, more individuals (both within and outside the 1km area) may be tested.
- 4: actionTitle - Behaviour Change Communication
- goalTargetMeasure: BCC activity complete
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"identifier": "${UUID()}",
"version": "1",
"name": "${focus_status}-${jurisdiction.name}-${now():format("yyyy-MM-dd", "GMT")}",
"title": "${focus_status} - ${jurisdiction.name} - ${now():format("yyyy-MM-dd", "GMT")}",
"status": "active",
"date": "${now():format("yyyy-MM-dd", "GMT")}",
"effectivePeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"useContext": [
{
"code": "interventionType",
"valueCodableConcept": "FI"
},
{
"code": "fiStatus",
"valueCodableConcept": "${focus_status}"
},
{
"code": "fiReason",
"valueCodableConcept": "Case-triggered"
},
{
"code": "opensrpEventId",
"valueCodableConcept": "${opensrpCaseClassificationEventId}"
},
{
"code": "caseNum",
"valueCodableConcept": "${case_number}"
}
],
"jurisdiction": [
{
"code": "${revealLocationId}"
}
],
"serverVersion": 0,
"goal": [
{
"id": "Case_Confirmation",
"description": "Confirm the index case",
"priority": "medium-priority",
"target": [
{
"measure": "Number of case confirmation forms complete",
"detail": {
"detailQuantity": {
"value": 1,
"comparator": ">=",
"unit": "form(s)"
}
},
"due": "${now():toNumber():plus(864000000):format("yyyy-MM-dd")}"
}
]
},
{
"id": "RACD_register_all_families",
"description": "Register all families and family members in all residential structures enumerated or added (100%) within operational area",
"priority": "medium-priority",
"target": [
{
"measure": "Percent of residential structures with full family registration",
"detail": {
"detailQuantity": {
"value": 100,
"comparator": ">=",
"unit": "Percent"
}
},
"due": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
}
]
},
{
"id": "RACD_blood_screening_1km_radius",
"description": "Visit all residential structures (100%) within a 1 km radius of a confirmed index case and test each registered person",
"priority": "medium-priority",
"target": [
{
"measure": "Number of registered people tested",
"detail": {
"detailQuantity": {
"value": 50,
"comparator": ">=",
"unit": "person(s)"
}
},
"due": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
}
]
},
{
"id": "BCC_Focus",
"description": "Complete at least 1 BCC activity for the operational area",
"priority": "medium-priority",
"target": [
{
"measure": "Number of BCC forms submitted",
"detail": {
"detailQuantity": {
"value": 1,
"comparator": ">=",
"unit": "form(s)"
}
},
"due": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
}
]
}
],
"action": [
{
"identifier": "${UUID()}",
"prefix": 1,
"title": "Case Confirmation",
"description": "Confirm the index case",
"code": "Case Confirmation",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(864000000):format("yyyy-MM-dd")}"
},
"reason": "Investigation",
"goalId": "Case_Confirmation",
"subjectCodableConcept": {
"text": "Operational Area"
},
"taskTemplate": "Case_Confirmation"
},
{
"identifier": "${UUID()}",
"prefix": 2,
"title": "Family Registration",
"description": "Register all families & family members in all residential structures enumerated (100%) within the operational area",
"code": "RACD Register Family",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"reason": "Investigation",
"goalId": "RACD_register_all_families",
"subjectCodableConcept": {
"text": "Residential_Structure"
},
"taskTemplate": "RACD_register_families"
},
{
"identifier": "${UUID()}",
"prefix": 3,
"title": "Blood screening",
"description": "Visit all residential structures (100%) within a 1 km radius of a confirmed index case and test each registered person",
"code": "Blood Screening",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"reason": "Investigation",
"goalId": "RACD_blood_screening_1km_radius",
"subjectCodableConcept": {
"text": "Person"
},
"taskTemplate": "RACD_Blood_Screening"
},
{
"identifier": "${UUID()}",
"prefix": 4,
"title": "Behaviour Change Communication",
"description": "Conduct BCC activity",
"code": "BCC",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"reason": "Investigation",
"goalId": "BCC_Focus",
"subjectCodableConcept": {
"text": "Operational_Area"
},
"taskTemplate": "BCC_Focus"
}
]
}
|
Template 3: Local Case Triggered B1 & B2 - 7 Actions | History = Bednet Distribution or Bednet Re-Dipping
Logic:
- Case Triggered
- There are 7 actions and goals
Plan type 3: Automation for case-triggered FIs in B1 & B2 areas for local cases if historic vector control was bednet distribution/bednet re-dipping.
This plan type is initiated when a case is passively detected and entered into the MIS and the focus status is a B1 or B2 area (fiStatus==B1 OR fiStatus==B2) and the case is classified as local (if case_classification==local). This plan is specifically for B1 and B2 areas that have historically employed bednet distribution (or bednet re-dipping) as the vector control measure of choice - this information is available in the MIS. All focus investigation activities/actions, with the exception of IRS, should be available to be completed by the user for this protocol. The entomological activities (larval dipping & mosquito collection should be prioritized following index case confirmation as they will determine whether or not the user should complete bednet distribution; this is dependent on confirmation of transmission. The type of blood screening done for this area is mass blood screening across the entire focus.
If a structure already has a household registered during a previous plan, the user should not have a family registration task assigned to this structure, but the user should always be able to add additional family members.
This plan should close 20 days after the plan is initiated as per Pedro/Thailand.
- 1: actionTitle - Index case confirmation
- goalTargetMeasure: Case confirmation complete
- 2: actionTitle - Family Registration
- goalTargetMeasure: Percent of residential structures with families registered
- 3: actionTitle - Larval Dipping
- goalTargetMeasure: Number of larval dipping activities
- 4: actionTitle - Mosquito Collection
- goalTargetMeasure: Number of mosquito collection traps
- 5: actionTitle - Blood Screening
- goalTargetMeasure: Percent of registered people tested
- assumption: the protocol specifies mass blood screening across the entire focus
- 6: actionTitle - Bednet Distribution
- goalTargetMeasure: Percent of residential structures received nets
- 7: actionTitle - Behaviour Change Communication
- goalTargetMeasure: BCC activity complete
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"identifier": "${UUID()}",
"version": "1",
"name": "${focus_status}-${jurisdiction.name}-${now():format("yyyy-MM-dd", "GMT")}",
"title": "${focus_status} - ${jurisdiction.name} - ${now():format("yyyy-MM-dd", "GMT")}",
"status": "active",
"date": "${now():format("yyyy-MM-dd", "GMT")}",
"effectivePeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"useContext": [
{
"code": "interventionType",
"valueCodableConcept": "FI"
},
{
"code": "fiStatus",
"valueCodableConcept": "${focus_status}"
},
{
"code": "fiReason",
"valueCodableConcept": "Case-triggered"
},
{
"code": "opensrpEventId",
"valueCodableConcept": "${opensrpCaseClassificationEventId}"
},
{
"code": "caseNum",
"valueCodableConcept": "${case_number}"
}
],
"jurisdiction": [
{
"code": "${revealLocationId}"
}
],
"serverVersion": 0,
"goal": [
{
"id": "Case_Confirmation",
"description": "Confirm the index case",
"priority": "medium-priority",
"target": [
{
"measure": "Number of case confirmation forms complete",
"detail": {
"detailQuantity": {
"value": 1,
"comparator": ">=",
"unit": "form(s)"
}
},
"due": "${now():toNumber():plus(864000000):format("yyyy-MM-dd")}"
}
]
},
{
"id": "RACD_register_all_families",
"description": "Register all families and family members in all residential structures enumerated or added (100%) within operational area",
"priority": "medium-priority",
"target": [
{
"measure": "Percent of residential structures with full family registration",
"detail": {
"detailQuantity": {
"value": 100,
"comparator": ">=",
"unit": "Percent"
}
},
"due": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
}
]
},
{
"id": "RACD_blood_screening",
"description": "Visit all residential structures (100%) and test each registered person",
"priority": "medium-priority",
"target": [
{
"measure": "Percent of registered people tested",
"detail": {
"detailQuantity": {
"value": 100,
"comparator": ">=",
"unit": "percent"
}
},
"due": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
}
]
},
{
"id": "RACD_bednet_dist_1km_radius",
"description": "Visit 100% of residential structures in the operational area and provide nets",
"priority": "medium-priority",
"target": [
{
"measure": "Percent of residential structures received nets",
"detail": {
"detailQuantity": {
"value": 90,
"comparator": ">=",
"unit": "Percent"
}
},
"due": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
}
]
},
{
"id": "Larval_Dipping_Min_3_Sites",
"description": "Perform a minimum of three larval dipping activities in the operational area",
"priority": "medium-priority",
"target": [
{
"measure": "Number of larval dipping forms submitted",
"detail": {
"detailQuantity": {
"value": 3,
"comparator": ">=",
"unit": "form(s)"
}
},
"due": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
}
]
},
{
"id": "Mosquito_Collection_Min_3_Traps",
"description": "Set a minimum of three mosquito collection traps and complete the mosquito collection process",
"priority": "medium-priority",
"target": [
{
"measure": "Number of mosquito collection forms submitted",
"detail": {
"detailQuantity": {
"value": 3,
"comparator": ">=",
"unit": "form(s)"
}
},
"due": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
}
]
},
{
"id": "BCC_Focus",
"description": "Complete at least 1 BCC activity for the operational area",
"priority": "medium-priority",
"target": [
{
"measure": "Number of BCC forms submitted",
"detail": {
"detailQuantity": {
"value": 1,
"comparator": ">=",
"unit": "form(s)"
}
},
"due": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
}
]
}
],
"action": [
{
"identifier": "${UUID()}",
"prefix": 1,
"title": "Case Confirmation",
"description": "Confirm the index case",
"code": "Case Confirmation",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(864000000):format("yyyy-MM-dd")}"
},
"reason": "Investigation",
"goalId": "Case_Confirmation",
"subjectCodableConcept": {
"text": "Operational Area"
},
"taskTemplate": "Case_Confirmation"
},
{
"identifier": "${UUID()}",
"prefix": 2,
"title": "Family Registration",
"description": "Register all families & family members in all residential structures enumerated (100%) within the operational area",
"code": "RACD Register Family",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"reason": "Investigation",
"goalId": "RACD_register_all_families",
"subjectCodableConcept": {
"text": "Residential_Structure"
},
"taskTemplate": "RACD_register_families"
},
{
"identifier": "${UUID()}",
"prefix": 3,
"title": "Blood screening",
"description": "Visit all residential structures (100%) and test each registered person",
"code": "Blood Screening",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"reason": "Investigation",
"goalId": "RACD_blood_screening",
"subjectCodableConcept": {
"text": "Person"
},
"taskTemplate": "RACD_Blood_Screening"
},
{
"identifier": "${UUID()}",
"prefix": 4,
"title": "Bednet Distribution",
"description": "Visit 100% of residential structures in the operational area and provide nets",
"code": "Bednet Distribution",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"reason": "Routine",
"goalId": "RACD_bednet_dist_1km_radius",
"subjectCodableConcept": {
"text": "Residential_Structure"
},
"taskTemplate": "ITN_Visit_Structures"
},
{
"identifier": "${UUID()}",
"prefix": 5,
"title": "Larval Dipping",
"description": "Perform a minimum of three larval dipping activities in the operational area",
"code": "Larval Dipping",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"reason": "Investigation",
"goalId": "Larval_Dipping_Min_3_Sites",
"subjectCodableConcept": {
"text": "Breeding_Site"
},
"taskTemplate": "Larval_Dipping"
},
{
"identifier": "${UUID()}",
"prefix": 6,
"title": "Mosquito Collection",
"description": "Set a minimum of three mosquito collection traps and complete the mosquito collection process",
"code": "Mosquito Collection",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"reason": "Investigation",
"goalId": "Mosquito_Collection_Min_3_Traps",
"subjectCodableConcept": {
"text": "Mosquito_Collection_Point"
},
"taskTemplate": "Mosquito_Collection_Point"
},
{
"identifier": "${UUID()}",
"prefix": 7,
"title": "Behaviour Change Communication",
"description": "Conduct BCC activity",
"code": "BCC",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"reason": "Investigation",
"goalId": "BCC_Focus",
"subjectCodableConcept": {
"text": "Operational_Area"
},
"taskTemplate": "BCC_Focus"
}
]
}
|
Template 4: Local Case Triggered B1 & B2 - 7 Actions | History = IRS
Logic:
- Case Triggered
- There are 7 actions and goals
Plan type 4: Automation for case-triggered FIs in B1 & B2 areas for local cases if historic vector control was indoor residual spraying.
This plan type is initiated when a case is passively detected and entered into the MIS and the focus status is an B1 or B2 area (fiStatus==B1 OR fiStatus==B2) and the case is classified as local (if case_classification==local). This plan is specifically for B1 and B2 areas that have historically employed indoor residual spraying as the vector control measure of choice - this information is available in the MIS. All focus investigation activities/actions should be available to be completed by the user for this protocol (we assume that bednet distribution is hardcoded). The entomological activities (larval dipping & mosquito collection should be prioritized following index case confirmation as they will determine whether or not the user should complete indoor residual spraying; this is dependent on confirmation of transmission. The type of blood screening done for this area is mass blood screening across the entire focus.
If a structure already has a household registered during a previous plan, the user should not have a family registration task assigned to this structure, but the user should always be able to add additional family members.
This plan should close 20 days after the plan is initiated as per Pedro/Thailand.
- 1: actionTitle - Index case confirmation
- goalTargetMeasure: Case confirmation complete
- 2: actionTitle - Family Registration
- goalTargetMeasure: Percent of residential structures with families registered
- 3: actionTitle - Larval Dipping
- goalTargetMeasure: Number of larval dipping activities
- 4: actionTitle - Mosquito Collection
- goalTargetMeasure: Number of mosquito collection traps
- 5: actionTitle - Blood Screening
- goalTargetMeasure: Percent of registered people tested
- assumption: the protocol specifies mass blood screening across the entire focus
- 6: actionTitle - Indoor Residual Spraying
- goalTargetMeasure: Percent of residential structures sprayed
- 7: actionTitle - Behaviour Change Communication
- goalTargetMeasure: BCC activity complete
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"identifier": "${UUID()}",
"version": "1",
"name": "${focus_status}-${jurisdiction.name}-${now():format("yyyy-MM-dd", "GMT")}",
"title": "${focus_status} - ${jurisdiction.name} - ${now():format("yyyy-MM-dd", "GMT")}",
"status": "active",
"date": "${now():format("yyyy-MM-dd", "GMT")}",
"effectivePeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"useContext": [
{
"code": "interventionType",
"valueCodableConcept": "FI"
},
{
"code": "fiStatus",
"valueCodableConcept": "${focus_status}"
},
{
"code": "fiReason",
"valueCodableConcept": "Case-triggered"
},
{
"code": "opensrpEventId",
"valueCodableConcept": "${opensrpCaseClassificationEventId}"
},
{
"code": "caseNum",
"valueCodableConcept": "${case_number}"
}
],
"jurisdiction": [
{
"code": "${revealLocationId}"
}
],
"serverVersion": 0,
"goal": [
{
"id": "Case_Confirmation",
"description": "Confirm the index case",
"priority": "medium-priority",
"target": [
{
"measure": "Number of case confirmation forms complete",
"detail": {
"detailQuantity": {
"value": 1,
"comparator": ">=",
"unit": "form(s)"
}
},
"due": "${now():toNumber():plus(864000000):format("yyyy-MM-dd")}"
}
]
},
{
"id": "RACD_register_all_families",
"description": "Register all families and family members in all residential structures enumerated or added (100%) within operational area",
"priority": "medium-priority",
"target": [
{
"measure": "Percent of residential structures with full family registration",
"detail": {
"detailQuantity": {
"value": 100,
"comparator": ">=",
"unit": "Percent"
}
},
"due": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
}
]
},
{
"id": "RACD_blood_screening",
"description": "Visit all residential structures (100%) and test each registered person",
"priority": "medium-priority",
"target": [
{
"measure": "Percent of registered people tested",
"detail": {
"detailQuantity": {
"value": 100,
"comparator": ">=",
"unit": "percent"
}
},
"due": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
}
]
},
{
"id": "Larval_Dipping_Min_3_Sites",
"description": "Perform a minimum of three larval dipping activities in the operational area",
"priority": "medium-priority",
"target": [
{
"measure": "Number of larval dipping forms submitted",
"detail": {
"detailQuantity": {
"value": 3,
"comparator": ">=",
"unit": "form(s)"
}
},
"due": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
}
]
},
{
"id": "Mosquito_Collection_Min_3_Traps",
"description": "Set a minimum of three mosquito collection traps and complete the mosquito collection process",
"priority": "medium-priority",
"target": [
{
"measure": "Number of mosquito collection forms submitted",
"detail": {
"detailQuantity": {
"value": 3,
"comparator": ">=",
"unit": "form(s)"
}
},
"due": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
}
]
},
{
"id": "BCC_Focus",
"description": "Complete at least 1 BCC activity for the operational area",
"priority": "medium-priority",
"target": [
{
"measure": "Number of BCC forms submitted",
"detail": {
"detailQuantity": {
"value": 1,
"comparator": ">=",
"unit": "form(s)"
}
},
"due": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
}
]
}
],
"action": [
{
"identifier": "${UUID()}",
"prefix": 1,
"title": "Case Confirmation",
"description": "Confirm the index case",
"code": "Case Confirmation",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(864000000):format("yyyy-MM-dd")}"
},
"reason": "Investigation",
"goalId": "Case_Confirmation",
"subjectCodableConcept": {
"text": "Operational Area"
},
"taskTemplate": "Case_Confirmation"
},
{
"identifier": "${UUID()}",
"prefix": 2,
"title": "Family Registration",
"description": "Register all families & family members in all residential structures enumerated (100%) within the operational area",
"code": "RACD Register Family",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"reason": "Investigation",
"goalId": "RACD_register_all_families",
"subjectCodableConcept": {
"text": "Residential_Structure"
},
"taskTemplate": "RACD_register_families"
},
{
"identifier": "${UUID()}",
"prefix": 3,
"title": "Blood screening",
"description": "Visit all residential structures (100%) and test each registered person",
"code": "Blood Screening",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"reason": "Investigation",
"goalId": "RACD_blood_screening",
"subjectCodableConcept": {
"text": "Person"
},
"taskTemplate": "RACD_Blood_Screening"
},
{
"identifier": "${UUID()}",
"prefix": 4,
"title": "Larval Dipping",
"description": "Perform a minimum of three larval dipping activities in the operational area",
"code": "Larval Dipping",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"reason": "Investigation",
"goalId": "Larval_Dipping_Min_3_Sites",
"subjectCodableConcept": {
"text": "Breeding_Site"
},
"taskTemplate": "Larval_Dipping"
},
{
"identifier": "${UUID()}",
"prefix": 5,
"title": "Mosquito Collection",
"description": "Set a minimum of three mosquito collection traps and complete the mosquito collection process",
"code": "Mosquito Collection",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"reason": "Investigation",
"goalId": "Mosquito_Collection_Min_3_Traps",
"subjectCodableConcept": {
"text": "Mosquito_Collection_Point"
},
"taskTemplate": "Mosquito_Collection_Point"
},
{
"identifier": "${UUID()}",
"prefix": 6,
"title": "Behaviour Change Communication",
"description": "Conduct BCC activity",
"code": "BCC",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"reason": "Investigation",
"goalId": "BCC_Focus",
"subjectCodableConcept": {
"text": "Operational_Area"
},
"taskTemplate": "BCC_Focus"
}
]
}
|
Template 5: Routine - Bednet Distribution - 2 Actions
Logic:
- Routine
- There are 2 actions and goals
Plan type 5: Automation for routine focus intervention for bednet distribution.
This plan type is initiated when the government wants to conduct a routine intervention (if fiReason==routine). Routine interventions are conducted in A1 and A2 areas according to Thailand protocol; however, there should not be a restriction to these areas given that focus status can change during the year. This plan is dependent on bednet distribution being selected as the routine focus intervention (if actionCode==Bednet Distribution). Craig Appl - I'm not sure if 'actionCode' is the correct variable to be selected to automate the plan - I think this needs to be selected on your end.
If a structure already has a household registered during a previous plan, the user should not have a Family registration task assigned to this structure, but the user should always be able to add additional family members.
This plan should close 20 days after the plan is initiated as per Pedro/Thailand.
- 1: actionTitle - Family Registration
- goalTargetMeasure: Percent of residential structures with families registered
- 2: actionTitle - Bednet Distribution
- goalTargetMeasure: Percent of residential structures received nets
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"identifier": "${UUID()}",
"version": "1",
"name": "${focus_status}-${jurisdiction.name}-${now():format("yyyy-MM-dd", "GMT")}",
"title": "${focus_status} - ${jurisdiction.name} - ${now():format("yyyy-MM-dd", "GMT")}",
"status": "active",
"date": "${now():format("yyyy-MM-dd", "GMT")}",
"effectivePeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"useContext": [
{
"code": "interventionType",
"valueCodableConcept": "FI"
},
{
"code": "fiStatus",
"valueCodableConcept": "${focus_status}"
},
{
"code": "fiReason",
"valueCodableConcept": "Routine"
}
],
"jurisdiction": [
{
"code": "${revealLocationId}"
}
],
"serverVersion": 0,
"goal": [
{
"id": "RACD_register_all_families",
"description": "Register all families and family members in all residential structures enumerated or added (100%) within operational area",
"priority": "medium-priority",
"target": [
{
"measure": "Percent of residential structures with full family registration",
"detail": {
"detailQuantity": {
"value": 100,
"comparator": ">=",
"unit": "Percent"
}
},
"due": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
}
]
},
{
"id": "RACD_bednet_dist",
"description": "Visit 100% of residential structures in the operational area and provide nets",
"priority": "medium-priority",
"target": [
{
"measure": "Percent of residential structures received nets",
"detail": {
"detailQuantity": {
"value": 90,
"comparator": ">=",
"unit": "Percent"
}
},
"due": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
}
]
}
],
"action": [
{
"identifier": "${UUID()}",
"prefix": 1,
"title": "Family Registration",
"description": "Register all families & family members in all residential structures enumerated (100%) within the operational area",
"code": "RACD Register Family",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"reason": "Investigation",
"goalId": "RACD_register_all_families",
"subjectCodableConcept": {
"text": "Residential_Structure"
},
"taskTemplate": "RACD_register_families"
},
{
"identifier": "${UUID()}",
"prefix": 2,
"title": "Bednet Distribution",
"description": "Visit 100% of residential structures in the operational area and provide nets",
"code": "Bednet Distribution",
"timingPeriod": {
"start": "${now():format("yyyy-MM-dd", "GMT")}",
"end": "${now():toNumber():plus(1728000000):format("yyyy-MM-dd")}"
},
"reason": "Routine",
"goalId": "RACD_bednet_dist",
"subjectCodableConcept": {
"text": "Residential_Structure"
},
"taskTemplate": "ITN_Visit_Structures"
}
]
} |
Template 6: Routine - Blood Screening - 2 Actions
Logic:
- Routine
- There are 2 actions and goals
Plan type 6: Automation for routine focus intervention for mass blood screening.
This plan type is initiated when the government wants to conduct a routine intervention (if fiReason==routine). Routine interventions are conducted in A1 and A2 areas according to Thailand protocol; however, there should not be a restriction to these areas given that focus status can change during the year. This plan is dependent on mass blood screening being selected as the routine focus intervention (if actionCode==Blood Screening). Craig Appl - I'm not sure if 'actionCode' is the correct variable to be selected to automate the plan - I think this needs to be selected on your end.
If a structure already has a household registered during a previous plan, the user should not have a Family registration task assigned to this structure, but the user should always be able to add additional family members.
- 1: actionTitle - Family Registration
- goalTargetMeasure: Percent of residential structures with families registered
- 2: actionTitle - Blood Screening
- goalTargetMeasure: Percent of registered people tested
- assumption: the protocol specifies mass blood screening across the entire focus
...
language | js |
---|---|
title | Template 6 |
linenumbers | true |
collapse | true |
...
- show if focusType== 'Focus of Infection'
Notes on Software Development required (Created by Craig on 23 July)
- This change is small because we need to update a Nifi processor to create an additional plan for the original operational area.
- Software to be developed is to create a Nifi processor that splits this request to two different jurisdictions and creates the same plan in both.
, p_site_name and p_site_area represent the focus area where the patient is from. While source_site_id, source_site_name and source_site_area represent the focus area that is the source of infection. For cases where the two are different, these fields will be populated with the details for a different focus area, and for situations where the source of infection and the location where the patient is from are the same, then the source site details will be null like above.p_site_id