summaryrefslogtreecommitdiff
path: root/ksh-scan3.el
blob: 93a9592563c90c2543475da8292cc4d266f46d4d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
;; -*- lexical-binding: t -*-

(require 'ksh-forms)
(require 'ksh-report)

;; Datafile path and fields
(setq forms-file (expand-file-name "data/scan3.dat" ksh-path))
(setq forms-number-of-fields
      (forms-enumerate
       (list 'ksh-scan3-ip-op-no 'ksh-scan3-patient-name 'ksh-scan3-age 'ksh-scan3-sex
             'ksh-scan3-visit-date 'ksh-scan3-lmp-date 'ksh-scan3-lmp-edd
	     'ksh-scan3-scan
	     'ksh-scan3-survey-presentation 'ksh-scan3-survey-placenta 'ksh-scan3-survey-liquor
	     'ksh-scan3-survey-amniotic-fluid-index 'ksh-scan3-survey-umbilical-cord
	     'ksh-scan3-survey-fetal-activity 'ksh-scan3-survey-cardiac-activity
	     'ksh-scan3-survey-fetal-heart-rate
	     'ksh-scan3-biometry-bpd 'ksh-scan3-biometry-bpd-age 'ksh-scan3-biometry-bpd-percentile
	     'ksh-scan3-biometry-hc 'ksh-scan3-biometry-hc-age 'ksh-scan3-biometry-hc-percentile
	     'ksh-scan3-biometry-ac 'ksh-scan3-biometry-ac-age 'ksh-scan3-biometry-ac-percentile
	     'ksh-scan3-biometry-fl 'ksh-scan3-biometry-fl-age 'ksh-scan3-biometry-fl-percentile
	     'ksh-scan3-biometry-fetal-weight
	     'ksh-scan3-impression-gestational-age 'ksh-scan3-impression-menstrual-age
	     'ksh-scan3-impression-corrected-edd 'ksh-scan3-impression-notes
	     'ksh-scan3-sonologist)))

;; Default values for fields
(setq default-field-values
      `((,ksh-scan3-sex . "F")
        (,ksh-scan3-scan . "Single intrauterine gestation")
	(,ksh-scan3-survey-presentation . "cephalic")
	(,ksh-scan3-survey-placenta . "posterior")
	(,ksh-scan3-survey-liquor . "normal")
	(,ksh-scan3-survey-fetal-activity . "normal")
	(,ksh-scan3-survey-cardiac-activity . "normal")
	(,ksh-scan3-sonologist . "Dr. Mekalai")))

;; Format specification for form display
(setq forms-format-list
      (append
       (list "Trimester 3 - Scan Report\n\n")
       (seq-mapcat 'form-entry
                   '(("IP/OP No" . ksh-scan3-ip-op-no)
                     ("Patient Name" . ksh-scan3-patient-name)
                     ("Age" . ksh-scan3-age)
                     ("Sex" . ksh-scan3-sex)
                     ("Visit Date" . ksh-scan3-visit-date)
                     ("LMP Date" . ksh-scan3-lmp-date)
                     ("LMP EDD" . ksh-scan3-lmp-edd)))
       (list "Indications\n" "Growth Scan\n"
             "Real time B-mode ultrasonography of gravid uterus done.\n"
             "Route: Transabdominal\n" ksh-scan3-scan "\n\n")
       (list "Fetal Survey\n")
       (seq-mapcat 'form-entry
                   '(("Presentation" . ksh-scan3-survey-presentation)
                     ("Placenta" . ksh-scan3-survey-placenta)
                     ("Liquor" . ksh-scan3-survey-liquor)
                     ("Amniotic fluid index" . ksh-scan3-survey-amniotic-fluid-index)
                     ("Umbilical cord" . ksh-scan3-survey-umbilical-cord)
                     ("Fetal activity" . ksh-scan3-survey-fetal-activity)
                     ("Cardiac activity" . ksh-scan3-survey-cardiac-activity)
                     ("Fetal heart rate" . ksh-scan3-survey-fetal-heart-rate)))
       (list "Fetal Biometry\n")
       (seq-mapcat 'form-entry
                   '(("BPD" . ksh-scan3-biometry-bpd)
                     ("BPD-Age" . ksh-scan3-biometry-bpd-age)
                     ("BPD-Percentile" . ksh-scan3-biometry-bpd-percentile)
                     ("HC" . ksh-scan3-biometry-hc)
                     ("HC-Age" . ksh-scan3-biometry-hc-age)
                     ("HC-Percentile" . ksh-scan3-biometry-hc-percentile)
                     ("AC" . ksh-scan3-biometry-ac)
                     ("AC-Age" . ksh-scan3-biometry-ac-age)
                     ("AC-Percentile" . ksh-scan3-biometry-ac-percentile)
                     ("FL" . ksh-scan3-biometry-fl)
                     ("FL-Age" . ksh-scan3-biometry-fl-age)
                     ("FL-Percentile" . ksh-scan3-biometry-fl-percentile)
                     ("Estimated fetal weight according to BPD, HC, AC, FL" . ksh-scan3-biometry-fetal-weight)))
       (list "Impression\n")
       (seq-mapcat 'form-entry
                   '(("Gestational age" . ksh-scan3-impression-gestational-age)
                     ("Menstrual age" . ksh-scan3-impression-menstrual-age)
                     ("Corrected EDD" . ksh-scan3-impression-corrected-edd)
                     ("Notes" . ksh-scan3-impression-notes)
                     ("Sonologist" . ksh-scan3-sonologist)))))

(setq form-to-org
      (lambda ()
        (with-output-to-string
          (make-report-header "OB - 3/3 TRIMESTER SCAN REPORT")
          (seq-do 'single-line-org-entry
                  `(("IP/OP No" . ,ksh-scan3-ip-op-no)
                    ("Age" . ,ksh-scan3-age)
                    ("Sex" . ,ksh-scan3-sex)
                    ("Name of Patient" . ,ksh-scan3-patient-name)
                    ("Visit Date" . ,ksh-scan3-visit-date)
                    ("LMP Date" . ,ksh-scan3-lmp-date)
                    ("LMP EDD" . ,ksh-scan3-lmp-edd)))
          (mapc 'princ `("* Indications\n" "** Growth Scan\n"
                         "Real time B-mode ultrasonography of gravid uterus done.\n\n"))
          (seq-do 'single-line-org-entry
                  `(("Route" . "Transabdominal")))
          (text-if-non-blank (get-field ksh-scan3-scan))
          (princ "* Fetal Survey\n")
          (seq-do 'single-line-org-entry
                  `(("Presentation" . ,ksh-scan3-survey-presentation)
                    ("Placenta" . ,ksh-scan3-survey-placenta)
                    ("Liquor" . ,ksh-scan3-survey-liquor)
                    ("Amniotic fluid index" . ,ksh-scan3-survey-amniotic-fluid-index)
                    ("Umbilical cord" . ,ksh-scan3-survey-umbilical-cord)
                    ("Fetal activity" . ,ksh-scan3-survey-fetal-activity)
                    ("Cardiac activity" . ,ksh-scan3-survey-cardiac-activity)
                    ("Fetal heart rate" . ,ksh-scan3-survey-fetal-heart-rate)))
          (insert-biometry
           "Fetal Biometry"
           `(("BPD" ,ksh-scan3-biometry-bpd ,ksh-scan3-biometry-bpd-age ,ksh-scan3-biometry-bpd-percentile)
             ("HC" ,ksh-scan3-biometry-hc ,ksh-scan3-biometry-hc-age ,ksh-scan3-biometry-hc-percentile)
             ("AC" ,ksh-scan3-biometry-ac ,ksh-scan3-biometry-ac-age ,ksh-scan3-biometry-ac-percentile)
             ("FL" ,ksh-scan3-biometry-fl ,ksh-scan3-biometry-fl-age ,ksh-scan3-biometry-fl-percentile)))
          (princ "* Impression\n")
          (princ (format "%s corresponding to a gestational age of %s as per biometry (CRL)\n\n"
			 (get-field ksh-scan3-scan) (get-field ksh-scan3-impression-gestational-age)))
          (seq-do 'single-line-org-entry
                  `(("Menstrual age" . ,ksh-scan3-impression-menstrual-age)
                    ("Corrected EDD" . ,ksh-scan3-impression-corrected-edd)
                    ("Placenta" . ,ksh-scan3-survey-placenta)
                    ("Presentation" . ,ksh-scan3-survey-presentation)
                    ("Liquor" . ,ksh-scan3-survey-liquor)
                    ("Estimated fetal weight according to BPD, HC, AC, FL" . ,ksh-scan3-biometry-fetal-weight)))
          (text-if-non-blank (get-field ksh-scan3-impression-notes))
          (multi-line-org-entry `("Sonologist" . ,ksh-scan3-sonologist)))))