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
|
;; -*- 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
'(ip-op-no patient-name age sex visit-date lmp-date lmp-edd
scan
survey-presentation survey-placenta survey-liquor
survey-amniotic-fluid-index survey-umbilical-cord
survey-fetal-activity survey-cardiac-activity
survey-fetal-heart-rate
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
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 . "normal")
(,survey-cardiac-activity . "normal")
(,sonologist . "Dr. Bala Bharathy")))
;; Format specification for form display
(setq forms-format-list
(append
(list "Trimester 3 - 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" "Growth Scan\n"
"Real time B-mode ultrasonography of gravid uterus done.\n"
"Route: Transabdominal\n" scan "\n\n")
(list "Fetal Survey\n")
(seq-mapcat 'form-entry
'(("Presentation" . survey-presentation)
("Placenta" . survey-placenta)
("Liquor" . survey-liquor)
("Amniotic fluid index" . survey-amniotic-fluid-index)
("Umbilical cord" . survey-umbilical-cord)
("Fetal activity" . survey-fetal-activity)
("Cardiac activity" . survey-cardiac-activity)
("Fetal heart rate" . survey-fetal-heart-rate)))
(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 "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 - 3/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" "** 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 scan))
(princ "* Fetal Survey\n")
(seq-do 'single-line-org-entry
`(("Presentation" . ,survey-presentation)
("Placenta" . ,survey-placenta)
("Liquor" . ,survey-liquor)
("Amniotic fluid index" . ,survey-amniotic-fluid-index)
("Umbilical cord" . ,survey-umbilical-cord)
("Fetal activity" . ,survey-fetal-activity)
("Cardiac activity" . ,survey-cardiac-activity)
("Fetal heart rate" . ,survey-fetal-heart-rate)))
(princ "* Fetal Biometry\n")
(insert-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 "* 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)))))
|