///|
fn usage() -> Unit {
println("neuroscore catalog")
println("neuroscore calc gcs EYE VERBAL MOTOR")
println("neuroscore explain ich-score GCS AGE VOLUME IVH INFRATENTORIAL")
}
///|
fn parse_int(value : String) -> Int? {
Some(@string.parse_int(value)) catch {
_ => None
}
}
///|
fn main {
let args = @env.args()
if args.length() < 2 {
usage()
return
}
match args[1:] {
["catalog"] =>
for descriptor in @neuroscore.scale_catalog() {
println(
"\{descriptor.id}\t\{descriptor.title}\t\{descriptor.minimum}..\{descriptor.maximum}",
)
}
["calc", "gcs", eye, verbal, motor] =>
match parse_int(eye) {
Some(e) =>
match parse_int(verbal) {
Some(v) =>
match parse_int(motor) {
Some(m) =>
println(
@neuroscore.score_result_json(@neuroscore.gcs(e, v, m)),
)
None => usage()
}
None => usage()
}
None => usage()
}
["explain", "ich-score", gcs, age, volume, ivh, infratentorial] =>
match parse_int(gcs) {
Some(g) =>
match parse_int(age) {
Some(a) =>
match parse_int(volume) {
Some(v) =>
match parse_int(ivh) {
Some(i) =>
match parse_int(infratentorial) {
Some(f) =>
println(
@neuroscore.score_result_json(
@neuroscore.ich_score(g, a, v, i, f),
),
)
None => usage()
}
None => usage()
}
None => usage()
}
None => usage()
}
None => usage()
}
_ => usage()
}
}