systemreboot git repos ksh-reports / master ksh-scan2.el
master

Tree @master (Download .tar.gz)

ksh-scan2.el @masterraw · history · blame

;; -*- 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)))))