| Field Type Legend | ||
| Field Type | Description | |
|---|---|---|
| ⭕ | Oval (single) | Bubble oval — mark one option with an X; max one X per question |
| 🔢 | Digit boxes | Square digit boxes — one digit per box, 0-9 |
| 🔡 | Letter boxes | Square letter boxes — one capital letter per box, A-Z |
| 🔣 | Mixed boxes | Combination of digit and letter boxes in a single field |
| 📅 | Date boxes | Pre-structured date entry with separators; may contain pre-printed characters |
| ✍️ | Handwriting | Free-form handwriting zone — not OCR-processed by ScanForm |
Variables
Overview
Page 1 Variables
Facility & Visit Information
| Variable Name | Label | Field Type | Options / Format | OCR Model | Required | Conditional | Notes |
|---|---|---|---|---|---|---|---|
| facilityState | State | Handwriting | 88 mm line | Not banded | — | — | Outside scannable area |
| facilityLga | LGA | Handwriting | 88 mm line | Not banded | — | — | Outside scannable area |
| facilityName | Facility Name | Handwriting | 120 mm line | Not banded | — | — | Outside scannable area |
| dateVisit | Date of Visit | Date boxes | [ ][ ]/[ ][ ]/[2][0][ ][ ] dd/mm/yyyy | date_dd, date_mm, two_digits_20, date_nearby_yy | — | — | Year century '20' pre-printed |
Client Identity & Demographics
| Variable Name | Label | Field Type | Options / Format | OCR Model | Required | Conditional | Notes |
|---|---|---|---|---|---|---|---|
| firstName | Client's First Name | Letter boxes | 17 boxes | string | — | — | |
| otherName | Middle Name | Letter boxes | 17 boxes | string | — | — | |
| surname | Surname | Letter boxes | 17 boxes | string | — | — | |
| age | Age (years) | Digit boxes | 3 boxes | int | — | — | |
| sex | Sex | Oval (single) | Male / Female | select_one_or_zero | — | — | |
| firstTimeVisit | First Time Visit | Oval (single) | Yes / No | select_one_or_zero | — | — | |
| employmentStatusId | Employment Status | Oval (single) | Employed / Unemployed / Student / Retired / Freelance | select_one_or_zero | — | — | |
| maritalStatus | Marital Status | Oval (single) | Married / Divorced / Widowed / Separated / Higher Secondary / Single | select_one_or_zero | — | — | |
| educationId | Education Level | Oval (single) | None / Primary School / Junior Secondary / Post Secondary / Quranic | select_one_or_zero | — | — | |
| numWives | No. of Wives/Co-wives | Digit boxes | 2 boxes | int | — | — | |
| numChildren | No. of own children <5 years | Digit boxes | 2 boxes | int | — | — | |
| clientCode | Client Code | Mixed boxes | [][][]-[][][]-[][][]-[][] | int x9, string x2 | — | — | Pre-printed; do not edit. Local format: Batch, Bundle, Page, Check |
| recency | Recency Number | Digit boxes | 4 boxes | int | — | — | |
| phoneNumber | Client's Telephone Number | Digit boxes | 11 boxes | int | — | — |
Address
| Variable Name | Label | Field Type | Options / Format | OCR Model | Required | Conditional | Notes |
|---|---|---|---|---|---|---|---|
| line | Street Address / Description | Mixed boxes | 72 mm | tokenwise_string_int | — | — | |
| nearestLandmark | Nearest Landmark/Compound | Mixed boxes | 36 mm | tokenwise_string_int | — | — | |
| state | State of Residence | Letter boxes | 17 mm | tokenwise_string_int | — | — | |
| lga | LGA of Residence | Letter boxes | 18 mm | tokenwise_string_int | — | — |
Referral & Testing Context
| Variable Name | Label | Field Type | Options / Format | OCR Model | Required | Conditional | Notes |
|---|---|---|---|---|---|---|---|
| referredFrom | Referred From | Oval (single) | Self / TB / OPD / Blood Bank / STI / FP / Ward / Other | select_one_or_zero | — | — | |
| referredFromOther | Referred From — specify | Letter boxes | 14 boxes | string | — | Yes | Fill when Referred From = Other |
| testingSetting | Setting | Oval (single) | CT / TB / OPD / Outreach / Ward / Standalone HTS / Other | select_one_or_zero | — | — | |
| testingSettingOther | Setting — specify | Letter boxes | 12 boxes | string | — | Yes | Fill when Setting = Other |
| typeConsueling | Type of Session | Oval (single) | Individual / Couple / Group / Previously Self-Tested | select_one_or_zero | — | — | |
| targetGroup | Target Group | Oval (single) | (see form) | select_one_or_zero | — | — | |
| previouslyTested | Previously tested within last 3 months | Oval (single) | Yes / No | select_one_or_zero | — | — | |
| indexClient | Index Testing: Is client from an index client? | Oval (single) | Yes / No | select_one_or_zero | — | — | |
| relationWithIndexClient | If yes — relation with index client | Oval (single) | Biological / Sexual / Social | select_one_or_zero | — | Yes | Fill when Index Client = Yes |
| indexClientCodeNew | Index Client Code (ScanForm) | Mixed boxes | [][][]-[][][]-[][][]-[][] | int x9, string x2 | — | Yes | Fill when Index Client = Yes; fill only one code |
| indexClientCodeOld | Index Client Code (Legacy) | Digit boxes | [][][][]-[][]-[][] | int | — | Yes | Fill when Index Client = Yes; fill only one code |
| pregnant | Client is Pregnant | Oval (single) | Yes / No | Not banded | — | — | Ensures linkage to PMTCT program |
| breastFeedingUnder6 | Client breastfeeding < 6 months | Oval (single) | Yes / No | select_one_or_zero | — | — | |
| breastFeedingOver6 | Client breastfeeding > 6 months | Oval (single) | Yes / No | select_one_or_zero | — | — |
Pre-Test Counseling & Risk Assessment
Section A — Knowledge Assessment
| Variable Name | Label | Field Type | Options / Format | OCR Model | Required | Conditional | Notes |
|---|---|---|---|---|---|---|---|
| previousTestedHIVNegative | Previously tested HIV negative | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| timeLastHIVNegativeTestResult | Time of last HIV Negative test Results | Oval (single) | <1 month / 1-3 months / 4-6 months / >6 months | select_one_or_zero | — | — | |
| clientInformHivTransRoutes | Client informed about HIV transmission routes | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| clientInformRiskkHivTrans | Client informed about risk factors for HIV transmission | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| clientInformPreventingsHivTrans | Client informed on preventing HIV transmission methods | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| clientInformPossibleTestResult | Client informed about possible test results | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| informConsentHivTest | Informed consent for HIV testing given | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| knowledgeAssessment | Knowledge Assessment Score (sum of 6 answers) | Digit box | 1 box | _score_6 | — | — | Auto-derived sum |
Section B — Personal HIV Risk Assessment (Last 3 months)
| Variable Name | Label | Field Type | Options / Format | OCR Model | Required | Conditional | Notes |
|---|---|---|---|---|---|---|---|
| everHadSexualIntercourse | Ever had sexual intercourse | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| moreThanOneSexPartnerLastThreeMonths | More than 1 sex partner | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| unprotectedVaginalSex | Unprotected Vaginal Sex | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| uprotectedAnalSex | Unprotected Anal Sex | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| bloodtransInlastThreeMonths | Blood transfusion in last 3 months | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| sexUnderInfluence | Sex under influence of drugs and alcohol | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| stiLastThreeMonths | History of STI | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| uprotectedSexWithCasualLastThreeMonths | Unprotected sex with casual partner | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| uprotectedSexWithRegularPartnerLastThreeMonths | Unprotected sex with regular partner | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| riskAssessment | Personal HIV Risk Assessment Score (sum of 9 answers) | Digit box | 1 box | int | — | — | Calculated sum |
Page 2 Variables
Section C — Clinical TB Screening
| Variable Name | Label | Field Type | Options / Format | OCR Model | Required | Conditional | Notes |
|---|---|---|---|---|---|---|---|
| currentCough | Current cough | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| weightLoss | Weight loss | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| fever | Fever | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| nightSweats | Night sweats | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| lymphadenopathy | Lymphadenopathy | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| tbScreening | TB screening score (sum of 5) | Digit box | 1 box | _score_5 | — | — | If >=1 refer for Xpert MTB RIF |
Section C — Syndromic STI Screening
| Variable Name | Label | Field Type | Options / Format | OCR Model | Required | Conditional | Notes |
|---|---|---|---|---|---|---|---|
| urethralDischargeFemale | Female: Vaginal discharge or burning when urinating? | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| lowerAbdominalPains | Female: Lower abdominal pains with/without vaginal discharge? | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| urethralDischargeMale | Male: Urethral discharge or burning when urinating? | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| complaintsOfScrotal | Male: Scrotal swelling and pain | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| complaintsGenitalSore | Genital sore(s) or swollen inguinal lymph nodes? | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| stiScreening | STI screening score (sum of 5) | Digit box | 1 box | _score_5 | — | — | If >=1 follow STI mgmt guidelines |
Section D — Sex Partner Risk (Last 3 months)
| Variable Name | Label | Field Type | Options / Format | OCR Model | Required | Conditional | Notes |
|---|---|---|---|---|---|---|---|
| sexPartnerHivPositive | Had sex with a partner who is HIV positive? | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| newDiagnosedHivlastThreeMonths | Partner newly diagnosed HIV, started treatment <3-6 months ago? | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| currentlyArvForPmtct | Partner pregnant and receiving ARV for PMTCT? | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| partnerAdolescent | Partner adolescent 10-19 yrs, HIV infected, on ARV or NOT? | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| knowHivPositiveOnArv | Partner on ARV with unsuppressed VL? | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| knowHivPositiveAfterLostToFollowUp | Partner returned to treatment after Lost to Follow Up? | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| sexPartnerUnprotectedAnal | Unprotected anal sex? | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| sexPartnerRiskAssessment | Sex Partner Risk Assessment Score (sum of 7) | Digit box | 1 box | _score_7 | — | — | Calculated sum |
Post-Test Counseling
| Variable Name | Label | Field Type | Options / Format | OCR Model | Required | Conditional | Notes |
|---|---|---|---|---|---|---|---|
| hivTestResult | HIV Test Result | Oval (single) | Negative / Positive | select_one_or_zero | — | — | |
| hivTestBefore | Tested for HIV before within this year? | Oval (single) | Not prev. tested / Prev. negative / Prev. positive in care / Prev. positive not in care | select_one_or_zero | — | — | |
| hivRequestResult | HIV Request & Result form signed by tester(s) | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| hivRequestResultCt | HIV Request & Result form filled with CT Intake Form | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| clientReceivedHivTestResult | Client received HIV test result | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| postTestCounseling | Post test counseling done | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| riskReduction | Risk reduction plan developed | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| postTestDisclosure | Post test disclosure plan developed | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| bringPartnerHivtesting | Will bring partner(s) for HIV testing | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| childrenHivtesting | Will bring own children <5 years for HIV testing | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| informationFp | Provided with information on FP and dual contraception | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| partnerFpThanCondom | Client/Partner use FP methods (other than condom) | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| partnerFpUseCondom | Client/Partner use condoms as FP method | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| correctCondomUse | Correct condom use demonstrated | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| condomProvidedToClient | Condoms provided to client | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| condomProvidedToClientCount | How many condoms provided to client | Digit boxes | 2 boxes | int | — | — | |
| lubricantProvidedToClient | Lubricants provided to client | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| lubricantProvidedToClientCount | How many lubricants provided to client | Digit boxes | 2 boxes | int | — | — | |
| referredToServices | Client referred to other services | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| discordantCouple | Discordant couple? | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — | |
| prepReferred | Referred for PrEP? | Oval (single) | No(0)/Yes(1) | select_one_or_zero | — | — |
Recency, Syphilis, CD4 & Hepatitis Testing
| Variable Name | Label | Field Type | Options / Format | OCR Model | Required | Conditional | Notes |
|---|---|---|---|---|---|---|---|
| recencyTest | Recency test with RTRI | Oval (single) | Recent / Long Term / Invalid | select_one_or_zero | — | Yes | For HIV-positive clients only |
| syphilisTestResult | Syphilis Test Result | Oval (single) | Non-Reactive / Reactive | select_one_or_zero | — | — | |
| cd4SemiQuantitative | CD4 Test Result - Semi-Quantitative | Oval (single) | <=200 / >200 | select_one_or_zero | — | Yes | For HIV-positive clients only |
| cd4FlowCytometry | CD4 Test Result - Flow Cytometry (cells/m3) | Digit boxes | 4 boxes | int | — | Yes | For HIV-positive clients only |
| hepatitisBTest | Hepatitis B Virus Test Result | Oval (single) | Negative / Positive | select_one_or_zero | — | — | |
| hepatitisCTest | Hepatitis C Virus Test Result | Oval (single) | Negative / Positive | select_one_or_zero | — | — |
Form Completion
| Variable Name | Label | Field Type | Options / Format | OCR Model | Required | Conditional | Notes |
|---|---|---|---|---|---|---|---|
| comment | Comments | Handwriting | 170 mm line | Not banded | — | — | Outside scannable area |
| completedBy | Completed by | Handwriting | 40 mm line | Not banded | — | — | Outside scannable area |
| designation | Designation | Handwriting | 40 mm line | Not banded | — | — | Outside scannable area |
| sign | Sign | Handwriting | 40 mm line | Not banded | — | — | Outside scannable area |
| endDate | Date (completion) | Date boxes | [ ][ ]/[ ][ ]/[2][0][ ][ ] dd/mm/yyyy | date_dd, date_mm, two_digits_20, date_nearby_yy | — | — | Year century '20' pre-printed |
| photoTaken | Photo taken | Oval (single) | (check) | select_one_or_zero | — | — | Administrative |
| discardPage | Discard both pages | Oval (single) | (check) | select_one_or_zero | — | — | Discards full photopack entry |
Summary Statistics
| Form Variable Summary | |
| Metric | Count |
|---|---|
| Total fields | 108 |
| OCR-banded fields | 100 |
| Handwriting (not banded) | 7 |
| Oval (single-select) | 74 |
| Digit boxes | 14 |
| Letter boxes | 7 |
| Mixed boxes | 4 |
| Date boxes | 2 |
| Conditional fields | 8 |
| Required fields | 0 |
OCR Models Reference
| OCR Models Used in This Form | ||
| OCR Model | Characters Detected | Typical Use in this Form |
|---|---|---|
| select_one_or_zero | Oval marked (X) or empty — enforces max one X per question group | All single-select oval questions |
| int | Digits 0-9 | Ages, counts, phone numbers, codes, scores |
| string | Letters A-Z | Names, text identifiers, specify fields |
| string_int | Letters A-Z and digits 0-9 | Mixed alphanumeric fields |
| tokenwise_string_int | Mixed tokens — each space-separated token classified as all-letters or all-digits | Street addresses, landmarks, LGA and state fields |
| date_dd | Integer 01-31 (day of month) | Day part of date fields |
| date_mm | Integer 01-12 (month) | Month part of date fields |
| date_nearby_yy | 2-digit year close to current year (+/- 1) | Year part of date fields |
| two_digits_20 | Always detects '20' — used for pre-printed century digits in year fields | Pre-printed '20' in year boxes |
| _score_5 / _score_6 / _score_7 | Integer sum of preceding Yes/No ovals in assessment sections | Knowledge, risk, TB, STI, sex partner score boxes |
| Not banded | Free handwriting — field is not OCR-processed | Clinician notes, signatures, facility names, free text |