(require 'seq) (defun draw-biometry (param-name param param-age percentile) (let ((temp-script-file (make-temp-script (format "%s %s" param-name param) param-age (string-to-number percentile)))) (message "Drawing %s..." temp-script-file) (shell-command (format "asy -f pdf -o %s %s" (file-name-directory temp-script-file) temp-script-file)) (delete-file temp-script-file) (format "%s.pdf" temp-script-file))) (defun make-temp-script (param param-age percentile) (let ((temp-script-file (make-temp-file "biometry"))) (with-temp-file temp-script-file (insert "include \"biometry\";\n") (insert (format "draw_biometry(\"%s\", \"%s\", %d);" param param-age percentile))) temp-script-file)) (defun insert-biometry (readings) (princ (format "[[%s]]\n" (crop-pdf (combine-pdfs (mapcar (lambda (reading) (apply 'draw-biometry (mapcar 'get-field reading))) readings)))))) (defun combine-pdfs (pdfs) (let ((temp-combination (make-temp-file "pdfjam" nil ".pdf"))) (apply 'call-process "pdfjam" nil nil nil "--nup" "4x1" "--outfile" temp-combination pdfs) (mapc 'delete-file pdfs) temp-combination)) (defun crop-pdf (pdf) (message "Cropping %s..." pdf) (let ((output-pdf (format "%s-crop.pdf" (file-name-sans-extension pdf)))) (shell-command (format "pdfcrop %s %s" pdf output-pdf)) (delete-file pdf) output-pdf)) (defun latex-use-package (package &optional arguments) (if arguments (format "\\usepackage[%s]{%s}" arguments package) (format "\\usepackage{%s}" package))) (defun make-report-header (title) (seq-do 'ksh-forms-org-keyword '(("TITLE" . "Kuzhanthai Sanjeevi Hospital") ("AUTHOR" . "Dr. Serene Isaac, MD, DGO, DNB"))) (seq-do 'ksh-forms-org-latex-header (list (latex-use-package "fullpage") (latex-use-package "nopageno") (latex-use-package "datetime" "ddmmyyyy") "\\renewcommand{\\dateseparator}{-}" "\\setlength{\\parindent}{0cm}" (latex-use-package "titlesec" "tiny") (latex-use-package "wasysym") (latex-use-package "titling") ,(format "\\pretitle{\\hrule \\begin{center} {\\Large \\textbf{%s}} \\par \\small \\sc}" title) "\\posttitle{\\par 17, Jawahar Street, Ramavarmapuram, Nagercoil - 629001 \\par \\phone \\, 223374 \\end{center}}" "\\preauthor{}" "\\postauthor{\\par Obstetrician and Gynaecologist}" "\\predate{\\hfill \\textbf{Date: }}" "\\date{\\today}" "\\postdate{\\vspace{1em} \\hrule \\par}"))) (provide 'ksh-report)