;; -*- lexical-binding: t -*-
(require 'ksh-forms)
(require 'ksh-report)
;; Datafile path and fields
(setq forms-file (expand-file-name "data/scan2.dat" ksh-path))
(setq forms-number-of-fields
(forms-enumerate
(list 'ksh-scan2-ip-op-no 'ksh-scan2-patient-name 'ksh-scan2-age 'ksh-scan2-sex
'ksh-scan2-visit-date 'ksh-scan2-lmp-date 'ksh-scan2-lmp-edd
'ksh-scan2-scan
'ksh-scan2-maternal-cervix 'ksh-scan2-maternal-internal-os
'ksh-scan2-survey-presentation 'ksh-scan2-survey-placenta 'ksh-scan2-survey-liquor
'ksh-scan2-survey-umbilical-cord 'ksh-scan2-survey-fetal-activity 'ksh-scan2-survey-cardiac-activity
'ksh-scan2-biometry-bpd 'ksh-scan2-biometry-bpd-age 'ksh-scan2-biometry-bpd-percentile
'ksh-scan2-biometry-hc 'ksh-scan2-biometry-hc-age 'ksh-scan2-biometry-hc-percentile
'ksh-scan2-biometry-ac 'ksh-scan2-biometry-ac-age 'ksh-scan2-biometry-ac-percentile
'ksh-scan2-biometry-fl 'ksh-scan2-biometry-fl-age 'ksh-scan2-biometry-fl-percentile
'ksh-scan2-biometry-fetal-weight
'ksh-scan2-extended-foot-length 'ksh-scan2-extended-tcd
'ksh-scan2-anatomy-intracranial 'ksh-scan2-anatomy-neck 'ksh-scan2-anatomy-spine
'ksh-scan2-anatomy-face 'ksh-scan2-anatomy-lungs 'ksh-scan2-anatomy-heart
'ksh-scan2-anatomy-abdominal-situs 'ksh-scan2-anatomy-kidneys-bladder
'ksh-scan2-anatomy-long-bones
'ksh-scan2-impression-gestational-age 'ksh-scan2-impression-menstrual-age
'ksh-scan2-impression-corrected-edd 'ksh-scan2-impression-notes
'ksh-scan2-sonologist)))
;; Default values for fields
(setq default-field-values
`((,ksh-scan2-sex . "F")
(,ksh-scan2-scan . "Single intrauterine gestation")
(,ksh-scan2-survey-presentation . "cephalic")
(,ksh-scan2-survey-placenta . "posterior")
(,ksh-scan2-survey-liquor . "normal")
(,ksh-scan2-survey-fetal-activity . "present")
(,ksh-scan2-survey-cardiac-activity . "present")
(,ksh-scan2-anatomy-intracranial . "normal")
(,ksh-scan2-anatomy-neck . "normal. No evidence of significant open neural tube defect")
(,ksh-scan2-anatomy-spine . "normal")
(,ksh-scan2-anatomy-face . "normal")
(,ksh-scan2-anatomy-lungs . "normal")
(,ksh-scan2-anatomy-heart . "normal")
(,ksh-scan2-anatomy-abdominal-situs . "normal")
(,ksh-scan2-anatomy-kidneys-bladder . "normal")
(,ksh-scan2-anatomy-long-bones . "normal for the period of gestation")
(,ksh-scan2-sonologist . "Dr. Mekalai")))
;; Format specification for form display
(setq forms-format-list
(append
(list "Trimester 2 - Scan Report\n\n")
(seq-mapcat 'form-entry
'(("IP/OP No" . ksh-scan2-ip-op-no)
("Patient Name" . ksh-scan2-patient-name)
("Age" . ksh-scan2-age)
("Sex" . ksh-scan2-sex)
("Visit Date" . ksh-scan2-visit-date)
("LMP Date" . ksh-scan2-lmp-date)
("LMP EDD" . ksh-scan2-lmp-edd)))
(list "Indications\n" "Target Scan\n"
"Real time B-mode ultrasonography of gravid uterus done.\n"
"Route: Transabdominal\n" ksh-scan2-scan "\n\n")
(list "Maternal\n")
(seq-mapcat 'form-entry
'(("Cervix" . ksh-scan2-maternal-cervix)
("Internal os" . ksh-scan2-maternal-internal-os)))
(list "Fetal Survey\n")
(seq-mapcat 'form-entry
'(("Presentation" . ksh-scan2-survey-presentation)
("Placenta" . ksh-scan2-survey-placenta)
("Liquor" . ksh-scan2-survey-liquor)
("Umbilical cord" . ksh-scan2-survey-umbilical-cord)
("Fetal activity" . ksh-scan2-survey-fetal-activity)
("Cardiac activity" . ksh-scan2-survey-cardiac-activity)))
(list "Fetal Biometry\n")
(seq-mapcat 'form-entry
'(("BPD" . ksh-scan2-biometry-bpd)
("BPD-Age" . ksh-scan2-biometry-bpd-age)
("BPD-Percentile" . ksh-scan2-biometry-bpd-percentile)
("HC" . ksh-scan2-biometry-hc)
("HC-Age" . ksh-scan2-biometry-hc-age)
("HC-Percentile" . ksh-scan2-biometry-hc-percentile)
("AC" . ksh-scan2-biometry-ac)
("AC-Age" . ksh-scan2-biometry-ac-age)
("AC-Percentile" . ksh-scan2-biometry-ac-percentile)
("FL" . ksh-scan2-biometry-fl)
("FL-Age" . ksh-scan2-biometry-fl-age)
("FL-Percentile" . ksh-scan2-biometry-fl-percentile)
("Estimated fetal weight according to BPD, HC, AC, FL" . ksh-scan2-biometry-fetal-weight)))
(list "Extended Biometry\n")
(seq-mapcat 'form-entry
'(("Foot Length" . ksh-scan2-extended-foot-length)
("TCD" . ksh-scan2-extended-tcd)))
(list "Fetal Anatomy\n")
(seq-mapcat 'form-entry
'(("Intracranial structures" . ksh-scan2-anatomy-intracranial)
("Neck" . ksh-scan2-anatomy-neck)
("Spine" . ksh-scan2-anatomy-spine)
("Fetal face" . ksh-scan2-anatomy-face)
("Both lungs" . ksh-scan2-anatomy-lungs)
("Heart" . ksh-scan2-anatomy-heart)
("Abdominal situs" . ksh-scan2-anatomy-abdominal-situs)
("Both kidneys and bladder" . ksh-scan2-anatomy-kidneys-bladder)
("All long bones" . ksh-scan2-anatomy-long-bones)))
(list "Impression\n")
(seq-mapcat 'form-entry
'(("Gestational age" . ksh-scan2-impression-gestational-age)
("Menstrual age" . ksh-scan2-impression-menstrual-age)
("Corrected EDD" . ksh-scan2-impression-corrected-edd)
("Notes" . ksh-scan2-impression-notes)
("Sonologist" . ksh-scan2-sonologist)))))
(setq form-to-org
(lambda ()
(with-output-to-string
(make-report-header "OB - 2/3 TRIMESTER SCAN REPORT")
(seq-do 'single-line-org-entry
`(("IP/OP No" . ,ksh-scan2-ip-op-no)
("Age" . ,ksh-scan2-age)
("Sex" . ,ksh-scan2-sex)
("Name of Patient" . ,ksh-scan2-patient-name)
("Visit Date" . ,ksh-scan2-visit-date)
("LMP Date" . ,ksh-scan2-lmp-date)
("LMP EDD" . ,ksh-scan2-lmp-edd)))
(mapc 'princ `("* Indications\n" "** Target Scan\n"
"Real time B-mode ultrasonography of gravid uterus done.\n\n"))
(single-line-org-entry '("Route" . "Transabdominal"))
(princ (get-field ksh-scan2-scan))
(princ "\n\n* Maternal\n")
(seq-do 'single-line-org-entry
`(("Cervix" . ,ksh-scan2-maternal-cervix)
("Internal os" . ,ksh-scan2-maternal-internal-os)))
(princ "* Fetal Survey\n")
(seq-do 'single-line-org-entry
`(("Presentation" . ,ksh-scan2-survey-presentation)
("Placenta" . ,ksh-scan2-survey-placenta)
("Liquor" . ,ksh-scan2-survey-liquor)
("Umbilical cord" . ,ksh-scan2-survey-umbilical-cord)
("Fetal activity" . ,ksh-scan2-survey-fetal-activity)
("Cardiac activity" . ,ksh-scan2-survey-cardiac-activity)))
(insert-biometry
"Fetal Biometry"
`(("BPD" ,ksh-scan2-biometry-bpd ,ksh-scan2-biometry-bpd-age ,ksh-scan2-biometry-bpd-percentile)
("HC" ,ksh-scan2-biometry-hc ,ksh-scan2-biometry-hc-age ,ksh-scan2-biometry-hc-percentile)
("AC" ,ksh-scan2-biometry-ac ,ksh-scan2-biometry-ac-age ,ksh-scan2-biometry-ac-percentile)
("FL" ,ksh-scan2-biometry-fl ,ksh-scan2-biometry-fl-age ,ksh-scan2-biometry-fl-percentile)))
(princ "* Extended Biometry\n")
(seq-do 'single-line-org-entry
`(("Foot Length" . ,ksh-scan2-extended-foot-length)
("TCD" . ,ksh-scan2-extended-tcd)))
(princ "* Fetal Anatomy\n")
(seq-do 'single-line-org-entry
`(("Intracranial structures" . ,ksh-scan2-anatomy-intracranial)
("Neck" . ,ksh-scan2-anatomy-neck)
("Spine" . ,ksh-scan2-anatomy-spine)
("Fetal face" . ,ksh-scan2-anatomy-face)
("Both lungs" . ,ksh-scan2-anatomy-lungs)
("Heart" . ,ksh-scan2-anatomy-heart)
("Abdominal situs" . ,ksh-scan2-anatomy-abdominal-situs)
("Both kidneys and bladder" . ,ksh-scan2-anatomy-kidneys-bladder)
("All long bones" . ,ksh-scan2-anatomy-long-bones)))
(princ "* Impression\n")
(princ (format "%s corresponding to a gestational age of %s assigned as per biometry (CRL)\n\n"
(get-field ksh-scan2-scan) (get-field ksh-scan2-impression-gestational-age)))
(seq-do 'single-line-org-entry
`(("Menstrual age" . ,ksh-scan2-impression-menstrual-age)
("Corrected EDD" . ,ksh-scan2-impression-corrected-edd)
("Placenta" . ,ksh-scan2-survey-placenta)
("Presentation" . ,ksh-scan2-survey-presentation)
("Liquor" . ,ksh-scan2-survey-liquor)
("Estimated fetal weight according to BPD, HC, AC, FL" . ,ksh-scan2-biometry-fetal-weight)))
(text-if-non-blank (get-field ksh-scan2-impression-notes))
(multi-line-org-entry `("Sonologist" . ,ksh-scan2-sonologist)))))