va: Visual acuity notation conversion

Description Usage Arguments Value VA conversion Qualitative visual acuity entries VA chart Accepted VA formats / Plausibility checks Entries with mixed VA notations Snellen "+/-" entries VA cleaning VA classes See Also Examples

View source: R/va.R

Description

Cleans and converts visual acuity notations (classes) between Snellen (decimal, meter and feet), ETDRS, and logMAR.

Usage

1
va(x, from = NULL, to = NULL, type = "ft", smallstep = FALSE, noplus = FALSE)

Arguments

x

Vector with visual acuity entries. Must be atomic. Snellen fractions need to be entered with "/"

from

will force to evaluate from which notation to convert - Must be "etdrs", "logmar", "snellen" or "snellendec". Ignored if the value should not be plausible.

to

To which class to convert. "etdrs", "logmar" or "snellen" - any case allowed. If NULL (default), will simply "clean up" VA entries. This may then result in a vector of "mixed" VA notations.

type

To which Snellen notation to convert: "m", "dec" or "ft"

smallstep

how +/- entries are evaluated. FALSE: increase/decrease Snellen fractions by lines. TRUE: plus/minus entries equivalent to 0.02 logmar

noplus

ignoring plus/minus entries and just returning the snellen fraction. This overrides the smallstep argument.

Value

vector of va class. See also "VA classes"

VA conversion

Qualitative visual acuity entries

In order to calculate with qualitative entries counting fingers, hand movement and (no) perception of light, use logMAR ! Qualitative visual acuity lower than counting fingers is assigned 0 ETDRS letter, in order to keep it as a measurement (not: NA). It is very difficult to justify a "negative" letter score in a test which only has a specific range (0-100).

VA chart

You can find with eye:::va_chart. This chart and VA conversion formulas are based on charts in Holladay et al.doi: 10.1016/j.jcrs.2004.01.014, Beck et al. doi: 10.1016/s0002-9394(02)01825-1Beck et al., and Gregori et al.doi: 10.1097/iae.0b013e3181d87e04. The etdrs values for NLP and PL are deliberately set at those values because they are unlikely to happen by chance as a wrong entry (and as integers), and it has internal reasons that make conversion easier.

Accepted VA formats / Plausibility checks

Entries with mixed VA notations

Use va_mixed instead.

Snellen "+/-" entries

By default, plus/minus entries are evaluated as intended by the test design: Snellen fractions increase/decrease only by lines.

1
2
3
- if entry -2 to +2 : take same Snellen value
- if < -2 : take Snellen value one line below
- if > +2 : take Snellen value one line above

If smallstep = TRUE, each snellen optotype will be considered equivalent to 0.02 logmar (assuming 5 letters in a row in a chart)

VA cleaning

For more details see clean_va()

  1. NA is assigned to strings such as "." or "", "n/a" or " "

  2. notation for qualitative entries is simplified.

VA classes

convertVA returns a vector of three classes:

  1. va

  2. One of snellen, snellendec, logmar, etdrs or quali.

  3. Either of character (for Snellen, snellendec, and qualitative), numeric (for logMAR), or integer (for ETDRS).

See Also

Other Ophthalmic functions: va_mixed()

Other VA converter: VAwrapper, plausibility_methods, snellen_steps, va_methods, va_mixed(), which_va()

Other VA cleaner: clean_va()

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
## will automatically detect VA class and convert to logMAR by default
## ETDRS letters
x <- c(23, 56, 74, 58)
va(x)

## ... or convert to snellen
va(x, to = "snellen")

## snellen, mixed with categories. Also dealing with those "plus/minus" entries
va(c("NLP", "NPL", "PL", "LP", "HM", "CF", "6/60", "20/200", "6/9",
 "20/40", "20/40+3", "20/50-2"))

## A mix of notations is also possible
x <- c("NLP", "0.8", "34", "3/60", "2/200", "20/40+3", "20/50-2")
va(x)

## Any fraction is possible, and empty values
x <- c("CF", "3/60", "2/200", "", "20/40+3", ".", "      ")
va(x)

## but this not any fraction when converting from one class to the other
x <- c("3/60", "2/200", "6/60", "20/200", "6/9")
va(x, to="snellen", type = "m")

Example output

x: from etdrs
[1] 1.24 0.58 0.22 0.54
x: from etdrs
[1] "20/320" "20/80"  "20/32"  "20/70" 
c("NLP", "NPL", "PL", "LP", "HM", "CF", "6/60", "20/200", "6/9", : from snellen    "20/40", "20/40+3", "20/50-2"): from snellen
 [1] 3.00 3.00 2.70 2.70 2.30 2.00 1.00 1.00 0.18 0.30 0.30 0.48
Mixed object (x) - converting one by one
[1] 3.00 0.80 1.02 1.30 2.00 0.30 0.48
x: from snellen
[1] 2.0 1.3 2.0  NA 0.3  NA  NA
x: from snellen
[1] NA     NA     "6/60" "6/60" "6/9" 

eye documentation built on Sept. 5, 2021, 5:25 p.m.