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