]> Softwares of Agnibho - medscript.git/commitdiff
File .mpaz format 0.2
authorAgnibho Mondal <mondal@agnibho.com>
Mon, 4 Sep 2023 18:05:19 +0000 (23:35 +0530)
committerAgnibho Mondal <mondal@agnibho.com>
Mon, 4 Sep 2023 18:05:19 +0000 (23:35 +0530)
prescription.py
schema/prescription-0.1.schema
template/default/index.html
template/default/style.css
window.py

index 7efb3ccb69b15b3c766edbaae7969c3f58c53dac..3cce577f6cacafae32723cabbfee95804c42ae45 100644 (file)
@@ -36,14 +36,14 @@ class Prescription:
 
     file=""
 
-    def __init__(self, date="", id="", name="", age="", sex="", address="", contact="", extra="", mode="", daw="", note="", report="", investigation="", medication="", advice="", prescriber=None):
-        self.set_data(date, name, age, sex, address, contact, extra, mode, daw, note, report, investigation, medication, advice)
+    def __init__(self, date="", id="", name="", age="", sex="", address="", contact="", extra="", mode="", daw="", diagnosis="", note="", report="", advice="", investigation="", medication="", additional="", prescriber=None):
+        self.set_data(date, name, age, sex, address, contact, extra, mode, daw, diagnosis, note, report, advice, investigation, medication, additional)
         if prescriber is None:
             self.prescriber = Prescriber()
         else:
             self.prescriber = prescriber
 
-    def set_data(self, date="", id="", name="", age="", sex="", address="", contact="", extra="", mode="", daw="", note="", report="", investigation="", medication="", advice=""):
+    def set_data(self, date="", id="", name="", age="", sex="", address="", contact="", extra="", mode="", daw="", diagnosis="", note="", report="", advice="", investigation="", medication="", additional=""):
         self.date = date
         self.id = id
         self.name = name
@@ -54,29 +54,33 @@ class Prescription:
         self.extra = extra
         self.mode = mode
         self.daw = daw
+        self.diagnosis = diagnosis
         self.note = note
         self.report = report
+        self.advice = advice
         self.investigation = investigation
         self.medication = medication
-        self.advice = advice
+        self.additional = additional
 
     def set_data_from_json(self, data):
-        self.prescriber.set_data_from_json(data["prescriber"])
-        self.date = data["date"]
-        self.id = data["id"]
-        self.name = data["name"]
-        self.age = data["age"]
-        self.sex = data["sex"]
-        self.address = data["address"]
-        self.contact = data["contact"]
-        self.extra = data["extra"]
-        self.mode = data["mode"]
-        self.daw = data["daw"]
-        self.note = data["note"]
-        self.report = data["report"]
-        self.investigation = data["investigation"]
-        self.medication = data["medication"]
-        self.advice = data["advice"]
+        self.prescriber.set_data_from_json(data.get("prescriber"))
+        self.date = data.get("date")
+        self.id = data.get("id")
+        self.name = data.get("name")
+        self.age = data.get("age")
+        self.sex = data.get("sex")
+        self.address = data.get("address")
+        self.contact = data.get("contact")
+        self.extra = data.get("extra")
+        self.mode = data.get("mode")
+        self.daw = data.get("daw")
+        self.diagnosis = data.get("diagnosis")
+        self.note = data.get("note")
+        self.report = data.get("report")
+        self.advice = data.get("advice")
+        self.investigation = data.get("investigation")
+        self.medication = data.get("medication")
+        self.additional = data.get("additional")
 
     def get_json(self):
         return(json.dumps(self, default=lambda o: o.__dict__, indent=4))
index e4d2e7d4b213399e892d10e6f5ce0c3a1e10fc1b..6341fa583a4fa79cec0c4a570e6b98989fa9495c 100644 (file)
     "daw": {
       "type": "boolean"
     },
+    "diagnosis": {
+      "type": "string"
+    },
     "note": {
       "type": "string"
     },
     "report": {
       "type": "string"
     },
+    "advice": {
+      "type": "string"
+    },
     "investigation": {
       "type": "string"
     },
     "medication": {
       "type": "string"
     },
-    "advice": {
+    "additional": {
       "type": "string"
     },
     "prescriber": {
index 6dcfc0897e43921d3a17a9c9d73fed0b0600aad1..8dafdc48321a96aaf58fa91b7827eaae9f33e4f3 100644 (file)
                     <td class="w60 bbordered ctxt"><p><strong>Advice</strong></p></td>
                   </tr>
                   <tr>
-                    <td class="formatted rbordered">
-                      <p>{{note}}</p>
-                      <p>{{report}}</p>
+                    <td class="rbordered">
+                      {% if diagnosis %}<p class="formatted"><strong>{{diagnosis}}</strong></p>{% endif %}
+                      {% if note %}<p class="formatted">{{note}}</p>{% endif %}
+                      {% if report %}<p class="formatted">{{report}}</p>{% endif %}
                     </td>
                     <td class="lbordered">
-                      <div>
-                        <ol>
-                          {% for med in medication_list %}
-                          <li><strong>{{med[0]}}</strong><br>
-                            <small><em>{{med[1]}}</em></small></li>
-                          <hr>
-                          {% endfor %}
-                        </ol>
-                      </div>
-                      <div class="formatted">
-                        <p>{{investigation}}</p>
-                        <p>{{advice}}</p>
-                      </div>
+                      {% if advice %}<p class="formatted">{{advice}}</p>{% endif %}
+                      <ol>
+                        {% for med in medication_list %}
+                        <li><strong>{{med[0]}}</strong><br>
+                          <small><em>{{med[1]}}</em></small></li>
+                        <hr>
+                        {% endfor %}
+                      </ol>
+                      {% if investigation %}<p class="formatted">{{investigation}}</p>{% endif %}
+                      {% if additional %}<p class="formatted">{{additional}}</p>{% endif %}
                     </td>
                   </tr>
                 </table>
index c53bf7379d43bee9ac8adddeb96ccff08d26511f..a4bf2103f86caa12d8812f5e9f7ffe7e8a68b9d9 100644 (file)
@@ -48,7 +48,7 @@ td {
 
 .formatted {
        white-space: pre-wrap;
-       padding: 10px;
+       padding: 2px;
 }
 
 .ltxt {
index ed9234df9bda09d944c7a131744fa06ca3053e63..998b17ea8a62a4d2156ad1e480920d823c0e7a9a 100644 (file)
--- a/window.py
+++ b/window.py
@@ -124,6 +124,16 @@ class MainWindow(QMainWindow):
             self.input_report_preset.setCurrentIndex(-1)
             if config["preset_newline"]:
                 self.input_report.insertPlainText("\n")
+    def insert_preset_advice(self):
+        try:
+            self.input_advice.insertPlainText(self.preset_advice.data[self.input_advice_preset.currentText()])
+        except KeyError:
+            self.input_advice.insertPlainText(self.input_advice_preset.currentText())
+        finally:
+            self.input_advice_preset.setCurrentIndex(-1)
+            if config["preset_newline"]:
+                self.input_advice.insertPlainText("\n")
+
 
     def insert_preset_investigation(self):
         try:
@@ -145,17 +155,17 @@ class MainWindow(QMainWindow):
             if config["preset_newline"]:
                 self.input_medication.insertPlainText("\n")
 
-    def insert_preset_advice(self):
+    def insert_preset_additional(self):
         try:
-            self.input_advice.insertPlainText(self.preset_advice.data[self.input_advice_preset.currentText()])
+            self.input_additional.insertPlainText(self.preset_additional.data[self.input_additional_preset.currentText()])
         except KeyError:
-            self.input_advice.insertPlainText(self.input_advice_preset.currentText())
+            self.input_additional.insertPlainText(self.input_additional_preset.currentText())
         finally:
-            self.input_advice_preset.setCurrentIndex(-1)
+            self.input_additional_preset.setCurrentIndex(-1)
             if config["preset_newline"]:
-                self.input_advice.insertPlainText("\n")
+                self.input_additional.insertPlainText("\n")
 
-    def load_interface(self, file="", date=None, id="", name="", age="", sex="", address="", contact="", extra="", mode="", daw="", note="", report="", investigation="", medication="", advice=""):
+    def load_interface(self, file="", date=None, id="", name="", age="", sex="", address="", contact="", extra="", mode="", daw="", diagnosis="", note="", report="", advice="", investigation="", medication="", additional=""):
         try:
             self.statusbar.showMessage(self.current_file.file)
             if date is None:
@@ -166,7 +176,7 @@ class MainWindow(QMainWindow):
                     d=QDateTime.fromString(pdate.strftime("%Y-%m-%d %H:%M:%S"), "yyyy-MM-dd hh:mm:ss")
                 except Exception as e:
                     QMessageBox.warning(self,"Failed to load", str(e))
-                    raise(e)
+                    print(e)
             self.input_date.setDateTime(d)
             self.input_id.setText(id)
             self.input_name.setText(name)
@@ -177,11 +187,13 @@ class MainWindow(QMainWindow):
             self.input_extra.setText(extra)
             self.input_mode.setCurrentText(mode)
             self.input_daw.setChecked(bool(daw))
+            self.input_diagnosis.setText(diagnosis)
             self.input_note.setText(note)
             self.input_report.setText(report)
+            self.input_advice.setText(advice)
             self.input_investigation.setText(investigation)
             self.input_medication.setText(medication)
-            self.input_advice.setText(advice)
+            self.input_additional.setText(additional)
             self.label_prescriber.setText(self.prescription.prescriber.name)
         except Exception as e:
             QMessageBox.warning(self,"Failed to load", "Failed to load the data into the application.")
@@ -200,11 +212,13 @@ class MainWindow(QMainWindow):
                 extra=self.prescription.extra,
                 mode=self.prescription.mode,
                 daw=self.prescription.daw,
+                diagnosis=self.prescription.diagnosis,
                 note=self.prescription.note,
                 report=self.prescription.report,
+                advice=self.prescription.advice,
                 investigation=self.prescription.investigation,
                 medication=self.prescription.medication,
-                advice=self.prescription.advice
+                additional=self.prescription.additional
                 )
 
     def update_instance(self):
@@ -220,11 +234,13 @@ class MainWindow(QMainWindow):
                     extra=self.input_extra.toPlainText(),
                     mode=self.input_mode.currentText(),
                     daw=self.input_daw.isChecked(),
+                    diagnosis=self.input_diagnosis.text(),
                     note=self.input_note.toPlainText(),
                     report=self.input_report.toPlainText(),
+                    advice=self.input_advice.toPlainText(),
                     investigation=self.input_investigation.toPlainText(),
                     medication=self.input_medication.toPlainText(),
-                    advice=self.input_advice.toPlainText()
+                    additional=self.input_additional.toPlainText()
                     )
         except Exception as e:
             QMessageBox.critical(self,"Failed", "Critical failure happned. Please check console for more info.")
@@ -276,9 +292,10 @@ class MainWindow(QMainWindow):
 
         self.preset_note=Preset(os.path.join(config["preset_directory"], "note.csv"))
         self.preset_report=Preset(os.path.join(config["preset_directory"], "report.csv"))
+        self.preset_advice=Preset(os.path.join(config["preset_directory"], "advice.csv"))
         self.preset_investigation=Preset(os.path.join(config["preset_directory"], "investigation.csv"))
         self.preset_medication=Preset(os.path.join(config["preset_directory"], "medication.csv"), text_as_key=True)
-        self.preset_advice=Preset(os.path.join(config["preset_directory"], "advice.csv"))
+        self.preset_additional=Preset(os.path.join(config["preset_directory"], "additonal.csv"))
 
         action_new=QAction("New", self)
         action_new.triggered.connect(self.cmd_new)
@@ -341,6 +358,7 @@ class MainWindow(QMainWindow):
         toolbar.addWidget(self.label_prescriber)
         self.addToolBar(toolbar)
 
+
         tab_info=QWidget(self)
         layout_info=QFormLayout(tab_info)
         self.input_date=QDateTimeEdit(self)
@@ -360,6 +378,8 @@ class MainWindow(QMainWindow):
         layout_info.addRow("Address", self.input_address)
         self.input_contact=QLineEdit(self)
         layout_info.addRow("Contact", self.input_contact)
+        self.input_diagnosis=QLineEdit(self)
+        layout_info.addRow("Diagnosis", self.input_diagnosis)
         self.input_extra=QTextEdit(self)
         layout_info.addRow("Extra", self.input_extra)
         self.input_mode=QComboBox(self)
@@ -409,6 +429,26 @@ class MainWindow(QMainWindow):
         layout_report.addLayout(layout_report2)
         layout_report.addWidget(self.input_report)
 
+        tab_advice=QWidget(self)
+        layout_advice=QVBoxLayout(tab_advice)
+        layout_advice2=QHBoxLayout()
+        label_advice=QLabel("Advice")
+        self.input_advice_preset=QComboBox(self)
+        self.input_advice_preset.addItems(self.preset_advice.data.keys())
+        self.input_advice_preset.setCurrentIndex(-1)
+        self.input_advice_preset.setEditable(True)
+        self.input_advice_preset.completer().setCompletionMode(QCompleter.CompletionMode.PopupCompletion)
+        self.input_advice_preset.completer().setFilterMode(Qt.MatchFlag.MatchContains)
+        self.input_advice_preset.setPlaceholderText("Select a preset")
+        input_advice_preset_btn=QPushButton("Insert")
+        input_advice_preset_btn.clicked.connect(self.insert_preset_advice)
+        layout_advice2.addWidget(self.input_advice_preset, 2)
+        layout_advice2.addWidget(input_advice_preset_btn, 1)
+        self.input_advice=QTextEdit(self)
+        layout_advice.addWidget(label_advice)
+        layout_advice.addLayout(layout_advice2)
+        layout_advice.addWidget(self.input_advice)
+
         tab_investigation=QWidget(self)
         layout_investigation=QVBoxLayout(tab_investigation)
         layout_investigation2=QHBoxLayout()
@@ -449,25 +489,25 @@ class MainWindow(QMainWindow):
         layout_medication.addLayout(layout_medication2)
         layout_medication.addWidget(self.input_medication)
 
-        tab_advice=QWidget(self)
-        layout_advice=QVBoxLayout(tab_advice)
-        layout_advice2=QHBoxLayout()
-        label_advice=QLabel("Additional Advice")
-        self.input_advice_preset=QComboBox(self)
-        self.input_advice_preset.addItems(self.preset_advice.data.keys())
-        self.input_advice_preset.setCurrentIndex(-1)
-        self.input_advice_preset.setEditable(True)
-        self.input_advice_preset.completer().setCompletionMode(QCompleter.CompletionMode.PopupCompletion)
-        self.input_advice_preset.completer().setFilterMode(Qt.MatchFlag.MatchContains)
-        self.input_advice_preset.setPlaceholderText("Select a preset")
-        input_advice_preset_btn=QPushButton("Insert")
-        input_advice_preset_btn.clicked.connect(self.insert_preset_advice)
-        layout_advice2.addWidget(self.input_advice_preset, 2)
-        layout_advice2.addWidget(input_advice_preset_btn, 1)
-        self.input_advice=QTextEdit(self)
-        layout_advice.addWidget(label_advice)
-        layout_advice.addLayout(layout_advice2)
-        layout_advice.addWidget(self.input_advice)
+        tab_additional=QWidget(self)
+        layout_additional=QVBoxLayout(tab_additional)
+        layout_additional2=QHBoxLayout()
+        label_additional=QLabel("Additional Advice")
+        self.input_additional_preset=QComboBox(self)
+        self.input_additional_preset.addItems(self.preset_additional.data.keys())
+        self.input_additional_preset.setCurrentIndex(-1)
+        self.input_additional_preset.setEditable(True)
+        self.input_additional_preset.completer().setCompletionMode(QCompleter.CompletionMode.PopupCompletion)
+        self.input_additional_preset.completer().setFilterMode(Qt.MatchFlag.MatchContains)
+        self.input_additional_preset.setPlaceholderText("Select a preset")
+        input_additional_preset_btn=QPushButton("Insert")
+        input_additional_preset_btn.clicked.connect(self.insert_preset_additional)
+        layout_additional2.addWidget(self.input_additional_preset, 2)
+        layout_additional2.addWidget(input_additional_preset_btn, 1)
+        self.input_additional=QTextEdit(self)
+        layout_additional.addWidget(label_additional)
+        layout_additional.addLayout(layout_additional2)
+        layout_additional.addWidget(self.input_additional)
 
         tab_attachment=QWidget(self)
         layout_attachment=QVBoxLayout(tab_attachment)
@@ -491,9 +531,10 @@ class MainWindow(QMainWindow):
         tab.addTab(tab_info, "Patient")
         tab.addTab(tab_note, "Clinical")
         tab.addTab(tab_report, "Report")
+        tab.addTab(tab_advice, "Advice")
         tab.addTab(tab_investigation, "Investigation")
         tab.addTab(tab_medication, "Medication")
-        tab.addTab(tab_advice, "Advice")
+        tab.addTab(tab_additional, "Additional")
         tab.addTab(tab_attachment, "Attachment")
 
         self.setCentralWidget(tab)