From ddd9a907d75422bc12b5247b97fc4785d99542f7 Mon Sep 17 00:00:00 2001 From: Agnibho Mondal Date: Fri, 15 Sep 2023 00:11:56 +0530 Subject: [PATCH] Added markdown support --- config.py | 1 + config/config.json | 1 + renderer.py | 11 +++++++++++ requirements.txt | 1 + setting.py | 5 +++++ 5 files changed, 19 insertions(+) diff --git a/config.py b/config.py index 8bfe45c..ad0db95 100644 --- a/config.py +++ b/config.py @@ -40,6 +40,7 @@ default = { "preset_directory": "preset", "preset_newline": "True", "preset_delimiter": ",", + "markdown": "False", "smime": "False", "root_bundle": "", "private_key": "", diff --git a/config/config.json b/config/config.json index 65d9130..0555e7b 100644 --- a/config/config.json +++ b/config/config.json @@ -9,6 +9,7 @@ "preset_directory": "preset", "preset_newline": true, "preset_delimiter": ",", + "markdown": false, "smime": false, "root_bundle": "", "certificate": "", diff --git a/renderer.py b/renderer.py index 43cc27a..d046aaa 100644 --- a/renderer.py +++ b/renderer.py @@ -6,6 +6,7 @@ # You should have received a copy of the GNU General Public License along with MedScript. If not, see . import os, shutil, tempfile, json, datetime, re +from markdown import markdown from jinja2 import Template from config import config @@ -23,6 +24,8 @@ class Renderer: with open(template) as template_file: template_data = Template(template_file.read()) data=self.process_medication(self.process_diagnosis(json.loads(source_file.read()))) + if config["markdown"]: + data=self.render_markdown(data) try: data["date"]=datetime.datetime.strptime(data["date"], "%Y-%m-%d %H:%M:%S") except Exception as e: @@ -51,3 +54,11 @@ class Renderer: medication_list.append([line, ""]) data["medication_list"]=medication_list return data + + def render_markdown(self, data): + data["note"]=markdown(data["note"]) + data["report"]=markdown(data["report"]) + data["advice"]=markdown(data["advice"]) + data["investigation"]=markdown(data["investigation"]) + data["additional"]=markdown(data["additional"]) + return data diff --git a/requirements.txt b/requirements.txt index 13cc2d9..11ac063 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,7 @@ Jinja2==3.1.2 lxml==4.9.2 M2Crypto==0.38.0 +Markdown==3.4.4 PyQt6==6.5.2 PyQt6_sip==13.5.2 python_dateutil==2.8.2 diff --git a/setting.py b/setting.py index 02037ed..3722db2 100644 --- a/setting.py +++ b/setting.py @@ -43,6 +43,7 @@ class EditConfiguration(QMainWindow): self.input_prescriber.setText(self.config["prescriber"]) self.input_newline.setChecked(bool(self.config["preset_newline"])) self.input_delimiter.setCurrentText(self.config["preset_delimiter"]) + self.input_markdown.setChecked(bool(self.config["markdown"])) if sign_available: self.input_smime.setChecked(bool(self.config["smime"])) self.input_key.setText(self.config["private_key"]) @@ -59,6 +60,7 @@ class EditConfiguration(QMainWindow): self.config["prescriber"]=self.input_prescriber.text() self.config["preset_newline"]=self.input_newline.isChecked() self.config["preset_delimiter"]=self.input_delimiter.currentText() + self.config["markdown"]=self.input_markdown.isChecked() if sign_available: self.config["smime"]=self.input_smime.isChecked() self.config["private_key"]=self.input_key.text() @@ -77,6 +79,7 @@ class EditConfiguration(QMainWindow): with open(config_file) as f: self.config=json.loads(f.read()) + self.config=self.config|config self.setWindowTitle("MedScript") self.setGeometry(200, 200, 300, 200) @@ -102,6 +105,8 @@ class EditConfiguration(QMainWindow): self.input_delimiter=QComboBox(self) self.input_delimiter.addItems([",", ";"]) layout.addRow("Preset Delimiter", self.input_delimiter) + self.input_markdown=QCheckBox("Enable markdown formatting", self) + layout.addRow("Markdown", self.input_markdown) if sign_available: self.input_smime=QCheckBox("Enable digital signature (experimental)", self) layout.addRow("S/MIME", self.input_smime) -- 2.39.5