From 1fcd1e41060474a750e722287dd3b8b85f093883 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=AA=20Th=C3=A0nh=20=C4=90=E1=BA=A1t?= <91755733+lds217@users.noreply.github.com> Date: Mon, 4 Aug 2025 11:08:15 +0700 Subject: [PATCH] [update] Enhance DataDialog and related components to support search by checkup ID. Introduce new ID search field and update request handling in GetCheckupDataRequest and ServerHandler. Modify ultrasound report templates to include ID and barcode generation for improved data presentation. --- database/BSK.db | Bin 1339392 -> 1339392 bytes src/main/java/BsK/client/LocalStorage.java | 1 + .../ui/component/CheckUpPage/CheckUpPage.java | 4 + .../PrintDialog/UltrasoundResult.java | 23 ++++- .../ui/component/DataDialog/DataDialog.java | 91 +++++++++++------- .../packet/req/GetCheckupDataRequest.java | 1 + .../java/BsK/common/util/text/TextUtils.java | 2 +- .../server/network/handler/ServerHandler.java | 16 ++- .../print_forms/ultrasoundresult.jrxml | 33 +++---- .../ultrasoundresult_potrait.jrxml | 39 +++----- 10 files changed, 125 insertions(+), 85 deletions(-) diff --git a/database/BSK.db b/database/BSK.db index 3937548427e9a466be973e8bf7c8d6ec942ae02e..39b3566db5b79f13bfe738e9d01818438d19d7c7 100644 GIT binary patch delta 435 zcmZp85ZLe_aDp`B`H3>ltmhf@$~rfu@ar?mOfJz6U{s!bRNt1@kb#A7FC+hEzPqV3vUX-Wcba+i(#^fG*ZDD;Dprj;Fk`*ZF@o@L# zy!6Rz_KG6*qA(o_Aw`FGC4;m~_ORCwb7V#`4OvQ8$%~PLK~25DZj|+BKiZ@T>-?n&F#zH>8kOc(giEeRs(St8S)ZJv5wM7w?8e{LY= a0b*Vt<^y7WAQk{(K_C{|zVE-VQvm>ol#XEl delta 422 zcmZp85ZLe_aDp`B;fXTNtcMx&>LNF$@ar=QO)k+7V3eGERNt0Qg@J|dF(dzW{!)Hz zzQ>yd6E5>9+p};m$m%m_Dzf^emsUR9-I^CtbZo=1g?Z@;Aw`FGB`btgP8POTRAd)6 zX7FIj#DusN85kLvc%>zId5sK=Omz(`bPbH#kLxo6F%u9o z12GE_vjQ<25VHd@2M}`tG1vCv`rP&hSXMHyuG}nWFrQUzN(i$QE6@%GUS7eap~|9- z%B&n59KwyV{*0Wwj57)z*7`CVT1*$*D`d3&{8w%b>>b1i7ZW<_q&rclyum%Mz}* mv3}}#5$*PU|G9yf2Z(urm=B2gfmi^D1%X&-`@a9eP6Yr%`i_$T diff --git a/src/main/java/BsK/client/LocalStorage.java b/src/main/java/BsK/client/LocalStorage.java index 91d10a2..f749397 100644 --- a/src/main/java/BsK/client/LocalStorage.java +++ b/src/main/java/BsK/client/LocalStorage.java @@ -26,6 +26,7 @@ public class LocalStorage { public static Date dataDialogFromDate = new Date(); public static Date dataDialogToDate = new Date(); public static String dataDialogDoctorName = "Tất cả"; + public static String dataDialogIdSearchTerm = ""; public static List doctorsName = new ArrayList<>(); public static String[] provinces = new String[]{}; diff --git a/src/main/java/BsK/client/ui/component/CheckUpPage/CheckUpPage.java b/src/main/java/BsK/client/ui/component/CheckUpPage/CheckUpPage.java index dc0772d..313630c 100644 --- a/src/main/java/BsK/client/ui/component/CheckUpPage/CheckUpPage.java +++ b/src/main/java/BsK/client/ui/component/CheckUpPage/CheckUpPage.java @@ -4833,6 +4833,10 @@ public class CheckUpPage extends JPanel { recheckupDatePickerButton.setEnabled(false); } + templateTitle = null; + photoNum = 0; + orientationComboBox.setSelectedItem("ngang"); + medicinePrescription = new String[0][0]; servicePrescription = new String[0][0]; updatePrescriptionTree(); diff --git a/src/main/java/BsK/client/ui/component/CheckUpPage/PrintDialog/UltrasoundResult.java b/src/main/java/BsK/client/ui/component/CheckUpPage/PrintDialog/UltrasoundResult.java index 34c17e5..dbb87c6 100644 --- a/src/main/java/BsK/client/ui/component/CheckUpPage/PrintDialog/UltrasoundResult.java +++ b/src/main/java/BsK/client/ui/component/CheckUpPage/PrintDialog/UltrasoundResult.java @@ -289,7 +289,7 @@ public class UltrasoundResult { parameters.put("doctorName", this.doctorName); parameters.put("ultrasoundDoctorName", this.ultrasoundDoctorName); parameters.put("checkupDate", this.checkupDate); - parameters.put("barcodeNumber", this.checkupId); + parameters.put("id", this.checkupId); // RTF and plain text content parameters.put("checkupNote", this.rtfContent != null ? this.rtfContent : ""); @@ -305,6 +305,23 @@ public class UltrasoundResult { // Template title parameters.put("templateTitle", this.templateTitle); + + try { + // Generate barcode and get file path + String barcodePath = BarcodeGenerator.generateCode128WithFixedName(this.checkupId, 200, 50, "invoice_barcode"); + parameters.put("barcodeNumber", barcodePath); + + // Generate QR code for the driveURL + String qrcodePath = BarcodeGenerator.generateQRCodeWithFixedName(this.driveUrl, 220, 220, "invoice_qrcode"); + parameters.put("driveURL", qrcodePath); + + } catch (Exception e) { + log.error("Error generating barcode/QR code images: {}", e.getMessage()); + // Set fallback parameters as null or empty if image generation fails + parameters.put("barcodeNumber", null); + parameters.put("driveURL", null); + } + // Extra safety: Ensure no parameter is null or "null" string for (String key : parameters.keySet()) { @@ -318,7 +335,7 @@ public class UltrasoundResult { int numberOfImages = this.selectedImages.size(); parameters.put("numberImage", numberOfImages); - parameters.put("logoImage", System.getProperty("user.dir") + "/src/main/java/BsK/client/ui/assets/icon/logo.jpg"); + for (int i = 0; i < 6; i++) { if (i < numberOfImages) { @@ -328,8 +345,6 @@ public class UltrasoundResult { } } - // Google Drive URL for QR code generation - parameters.put("driveURL", this.driveUrl); // Load pre-compiled report or compile JRXML as fallback JasperReport jasperReport = loadCompiledReport(reportName); diff --git a/src/main/java/BsK/client/ui/component/DataDialog/DataDialog.java b/src/main/java/BsK/client/ui/component/DataDialog/DataDialog.java index c4c7b81..39eae89 100644 --- a/src/main/java/BsK/client/ui/component/DataDialog/DataDialog.java +++ b/src/main/java/BsK/client/ui/component/DataDialog/DataDialog.java @@ -32,6 +32,7 @@ public class DataDialog extends JDialog { // private JTextField searchField; + private JTextField idSearchField; private JComboBox doctorComboBox; private JSpinner fromDateSpinner; private JSpinner toDateSpinner; @@ -151,6 +152,14 @@ public class DataDialog extends JDialog { } else { doctorComboBox.setSelectedIndex(0); } + + if (LocalStorage.dataDialogIdSearchTerm != null && !LocalStorage.dataDialogIdSearchTerm.isEmpty()) { + idSearchField.setText(LocalStorage.dataDialogIdSearchTerm); + idSearchField.setForeground(Color.BLACK); + } else { + idSearchField.setText("Tìm theo mã phiếu khám..."); + idSearchField.setForeground(Color.GRAY); + } } private JPanel createControlPanel() { @@ -221,6 +230,27 @@ public class DataDialog extends JDialog { bottomRow.add(Box.createHorizontalStrut(20)); bottomRow.add(new JLabel("Bác sĩ:")); + bottomRow.add(Box.createHorizontalStrut(15)); // Thêm khoảng cách + bottomRow.add(new JLabel("Mã Phiếu:")); + idSearchField = new JTextField("Tìm theo mã phiếu khám...", 12); // Tạo field mới + idSearchField.setForeground(Color.GRAY); + idSearchField.setPreferredSize(new Dimension(150, 25)); + idSearchField.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusGained(java.awt.event.FocusEvent evt) { + if (idSearchField.getText().equals("Tìm theo mã phiếu khám...")) { + idSearchField.setText(""); + idSearchField.setForeground(Color.BLACK); + } + } + public void focusLost(java.awt.event.FocusEvent evt) { + if (idSearchField.getText().isEmpty()) { + idSearchField.setText("Tìm theo mã phiếu khám..."); + idSearchField.setForeground(Color.GRAY); + } + } + }); + bottomRow.add(idSearchField); + doctorComboBox = new JComboBox<>(); doctorComboBox.addItem("Tất cả"); if (LocalStorage.doctorsName != null) { @@ -251,7 +281,7 @@ public class DataDialog extends JDialog { }); getAllButton.addActionListener(e -> { - GetCheckupDataRequest request = new GetCheckupDataRequest(null, null, null, null, 1, recordsPerPage); + GetCheckupDataRequest request = new GetCheckupDataRequest(null, null,null, null, null, 1, recordsPerPage); NetworkUtil.sendPacket(ClientHandler.ctx.channel(), request); resultCountLabel.setText("Đang tải tất cả dữ liệu..."); }); @@ -266,7 +296,7 @@ public class DataDialog extends JDialog { resultCountLabel.setFont(new Font("Arial", Font.PLAIN, 12)); gridPanel.add(resultCountLabel, BorderLayout.NORTH); - String[] columnNames = {"STT", "Mã BN", "Họ và Tên", "Năm sinh", "Giới tính", "Ngày khám", "Bác sĩ khám", "Chẩn đoán", "Kết luận", "Hành động"}; + String[] columnNames = {"STT", "Mã khám", "Họ và Tên", "Năm sinh", "Giới tính", "Ngày khám", "Bác sĩ khám", "Chẩn đoán", "Kết luận", "Hành động"}; tableModel = new DefaultTableModel(columnNames, 0) { @Override public boolean isCellEditable(int row, int column) { @@ -301,6 +331,18 @@ public class DataDialog extends JDialog { searchTerm = null; } + String checkupIdSearch = idSearchField.getText(); + if (checkupIdSearch == null || checkupIdSearch.equals("Tìm theo mã phiếu khám...") || checkupIdSearch.trim().isEmpty()) { + checkupIdSearch = null; + } + + // Ưu tiên tìm theo Mã phiếu khám. Nếu có, bỏ qua tìm kiếm chung. + if (checkupIdSearch != null) { + searchTerm = null; + searchField.setText("Tìm theo tên bệnh nhân, mã bệnh nhân..."); + searchField.setForeground(Color.GRAY); + } + Date fromDate = (Date) fromDateSpinner.getValue(); Date toDate = (Date) toDateSpinner.getValue(); @@ -335,7 +377,7 @@ public class DataDialog extends JDialog { } } - GetCheckupDataRequest request = new GetCheckupDataRequest(searchTerm, fromTimestamp, toTimestamp, doctorId, page, recordsPerPage); + GetCheckupDataRequest request = new GetCheckupDataRequest(searchTerm, checkupIdSearch, fromTimestamp, toTimestamp, doctorId, page, recordsPerPage); NetworkUtil.sendPacket(ClientHandler.ctx.channel(), request); resultCountLabel.setText("Đang tải dữ liệu cho trang " + page + "..."); @@ -488,6 +530,12 @@ public class DataDialog extends JDialog { } else { LocalStorage.dataDialogSearchTerm = searchTerm; } + String idSearchTerm = idSearchField.getText(); + if (idSearchTerm.equals("Tìm theo mã phiếu khám...")) { + LocalStorage.dataDialogIdSearchTerm = ""; + } else { + LocalStorage.dataDialogIdSearchTerm = idSearchTerm; + } LocalStorage.dataDialogFromDate = (Date) fromDateSpinner.getValue(); LocalStorage.dataDialogToDate = (Date) toDateSpinner.getValue(); @@ -507,10 +555,11 @@ public class DataDialog extends JDialog { LocalStorage.dataDialogFromDate = today; LocalStorage.dataDialogToDate = today; LocalStorage.dataDialogDoctorName = "Tất cả"; + LocalStorage.dataDialogIdSearchTerm = ""; } class ActionButtonRenderer extends JPanel implements TableCellRenderer { - private JButton editButton, deleteButton; + private JButton editButton; public ActionButtonRenderer() { setLayout(new FlowLayout(FlowLayout.CENTER, 2, 2)); @@ -521,20 +570,11 @@ public class DataDialog extends JDialog { } editButton = new JButton(editIcon); - ImageIcon deleteIcon = new ImageIcon("src/main/java/BsK/client/ui/assets/icon/delete.png"); - if (deleteIcon.getImage() != null) { - deleteIcon.setImage(deleteIcon.getImage().getScaledInstance(16, 16, Image.SCALE_SMOOTH)); - } - deleteButton = new JButton(deleteIcon); - editButton.setPreferredSize(new Dimension(30, 25)); - deleteButton.setPreferredSize(new Dimension(30, 25)); editButton.setToolTipText("Sửa"); - deleteButton.setToolTipText("Xóa"); add(editButton); - add(deleteButton); } @Override @@ -550,7 +590,7 @@ public class DataDialog extends JDialog { class ActionButtonEditor extends DefaultCellEditor { private JPanel panel; - private JButton editButton, deleteButton; + private JButton editButton; public ActionButtonEditor(JDialog parentDialog) { super(new JCheckBox()); @@ -562,14 +602,7 @@ public class DataDialog extends JDialog { } editButton = new JButton(editIcon); - ImageIcon deleteIcon = new ImageIcon("src/main/java/BsK/client/ui/assets/icon/delete.png"); - if (deleteIcon.getImage() != null) { - deleteIcon.setImage(deleteIcon.getImage().getScaledInstance(16, 16, Image.SCALE_SMOOTH)); - } - deleteButton = new JButton(deleteIcon); - editButton.setPreferredSize(new Dimension(30, 25)); - deleteButton.setPreferredSize(new Dimension(30, 25)); editButton.addActionListener(e -> { fireEditingStopped(); @@ -598,25 +631,9 @@ public class DataDialog extends JDialog { } }); - deleteButton.addActionListener(e -> { - fireEditingStopped(); - int row = dataTable.getSelectedRow(); - if (row < 0) return; - String patientId = (String) tableModel.getValueAt(row, 1); - int result = JOptionPane.showConfirmDialog(parentDialog, - "Bạn có chắc chắn muốn xóa phiếu khám của bệnh nhân " + patientId + " không?", - "Xác nhận xóa", - JOptionPane.YES_NO_OPTION, - JOptionPane.WARNING_MESSAGE); - if (result == JOptionPane.YES_OPTION) { - tableModel.removeRow(row); - JOptionPane.showMessageDialog(parentDialog, "Đã xóa phiếu khám thành công!", "Thông báo", JOptionPane.INFORMATION_MESSAGE); - } - }); panel.add(editButton); - panel.add(deleteButton); } @Override diff --git a/src/main/java/BsK/common/packet/req/GetCheckupDataRequest.java b/src/main/java/BsK/common/packet/req/GetCheckupDataRequest.java index 3daeb79..a78e6bc 100644 --- a/src/main/java/BsK/common/packet/req/GetCheckupDataRequest.java +++ b/src/main/java/BsK/common/packet/req/GetCheckupDataRequest.java @@ -10,6 +10,7 @@ import lombok.NoArgsConstructor; @NoArgsConstructor public class GetCheckupDataRequest implements Packet { private String searchTerm; + private String checkupIdSearch; private Long fromDate; // Use Long for timestamp private Long toDate; // Use Long for timestamp private Integer doctorId; diff --git a/src/main/java/BsK/common/util/text/TextUtils.java b/src/main/java/BsK/common/util/text/TextUtils.java index d34d444..5e6f67e 100644 --- a/src/main/java/BsK/common/util/text/TextUtils.java +++ b/src/main/java/BsK/common/util/text/TextUtils.java @@ -150,7 +150,7 @@ public final class TextUtils { // The font size in RTF is in half-points. JTextPane seems to generate // sizes that are double what is visually represented. Dividing by 2 // brings it to the expected point size for JasperReports. - int newSize = originalSize / 2; + int newSize = (int) (originalSize / 1.5); // Append the replacement string. We need to escape the backslash for appendReplacement. matcher.appendReplacement(sb, "\\\\fs" + newSize); diff --git a/src/main/java/BsK/server/network/handler/ServerHandler.java b/src/main/java/BsK/server/network/handler/ServerHandler.java index ec9430b..8268576 100644 --- a/src/main/java/BsK/server/network/handler/ServerHandler.java +++ b/src/main/java/BsK/server/network/handler/ServerHandler.java @@ -1368,8 +1368,20 @@ public class ServerHandler extends SimpleChannelInboundHandler params = new java.util.ArrayList<>(); boolean hasWhere = false; - - if (getCheckupDataRequest.getSearchTerm() != null && !getCheckupDataRequest.getSearchTerm().trim().isEmpty()) { + + String checkupIdSearch = getCheckupDataRequest.getCheckupIdSearch(); + if (checkupIdSearch != null && !checkupIdSearch.trim().isEmpty()) { + whereClause.append("WHERE a.checkup_id = ?"); + try { + // Chuyển đổi sang kiểu số để tìm kiếm chính xác và an toàn + params.add(Integer.parseInt(checkupIdSearch.trim())); + } catch (NumberFormatException e) { + // Nếu người dùng nhập chữ, ta truyền một giá trị không thể tìm thấy để trả về 0 kết quả + params.add(-1); + } + hasWhere = true; + } + else if (getCheckupDataRequest.getSearchTerm() != null && !getCheckupDataRequest.getSearchTerm().trim().isEmpty()) { whereClause.append("WHERE (LOWER(c.customer_first_name) LIKE ? OR LOWER(c.customer_last_name) LIKE ? OR " + "LOWER(CONCAT(c.customer_last_name, ' ', c.customer_first_name)) LIKE ? OR c.customer_number LIKE ?)"); String searchTerm = "%" + getCheckupDataRequest.getSearchTerm().toLowerCase().trim() + "%"; diff --git a/src/main/resources/print_forms/ultrasoundresult.jrxml b/src/main/resources/print_forms/ultrasoundresult.jrxml index 2cc8225..651b0a1 100644 --- a/src/main/resources/print_forms/ultrasoundresult.jrxml +++ b/src/main/resources/print_forms/ultrasoundresult.jrxml @@ -39,6 +39,7 @@ + @@ -47,16 +48,13 @@ <detail> <band height="538" splitType="Stretch"> <element kind="frame" uuid="2b7ec588-953c-4145-87b7-1d861c272fe0" x="0" y="0" width="399" height="538"> - <element kind="image" uuid="fd80ab38-4cae-409b-84b9-356220d2b1e5" x="0" y="1" width="60" height="60"> - <expression><![CDATA[$P{logoImage}]]></expression> - </element> - <element kind="textField" uuid="eb56d4c8-2a0d-45fa-89a2-ad6528f9a99b" x="60" y="0" width="260" height="20" forecolor="#FF0905" fontName="Times New Roman" fontSize="14.0" bold="true" hTextAlign="Center"> + <element kind="textField" uuid="eb56d4c8-2a0d-45fa-89a2-ad6528f9a99b" x="2" y="0" width="287" height="20" forecolor="#FF0905" fontName="Times New Roman" fontSize="14.0" bold="true" hTextAlign="Center"> <expression><![CDATA[$P{clinicPrefix}]]></expression> </element> - <element kind="textField" uuid="796d9ffd-6d2e-4ae3-bdfb-b08183d7d9c0" x="63" y="30" width="229" height="20" fontName="Times New Roman" fontSize="10.0"> + <element kind="textField" uuid="796d9ffd-6d2e-4ae3-bdfb-b08183d7d9c0" x="2" y="30" width="287" height="20" fontName="Times New Roman" fontSize="10.0"> <expression><![CDATA[$P{clinicAddress}]]></expression> </element> - <element kind="textField" uuid="260bb33d-1d11-4178-aceb-3fbf8fcb4b45" x="63" y="42" width="162" height="12" fontName="Times New Roman" fontSize="8.0"> + <element kind="textField" uuid="260bb33d-1d11-4178-aceb-3fbf8fcb4b45" x="2" y="42" width="287" height="12" fontName="Times New Roman" fontSize="8.0"> <expression><![CDATA["SDT: " + $P{clinicPhone}]]></expression> </element> <element kind="staticText" uuid="6f89a93f-2d10-4506-baa5-226bdd047b17" x="0" y="65" width="100" height="30" forecolor="#FF0905" fontName="Times New Roman" fontSize="14.0" bold="true"> @@ -134,16 +132,11 @@ <element kind="textField" uuid="6b0b21be-2ca3-4594-bbe9-34868e13eb1e" x="45" y="150" width="55" height="16" fontName="Times New Roman" fontSize="10.0"> <expression><![CDATA[$P{checkupBloodPressure} +" mmHg"]]></expression> </element> - <element kind="component" uuid="e8842007-3343-4399-a101-76a302d0755d" x="354" y="1" width="44" height="37"> - <component kind="barcode4j:QRCode"> - <codeExpression><![CDATA[$P{driveURL}]]></codeExpression> - </component> - </element> <element kind="textField" uuid="9763a634-05c2-4f64-a903-c914455b7ee6" x="70" y="60" width="282" height="22" forecolor="#FF0905" fontName="Times New Roman" fontSize="12.0" bold="true" hTextAlign="Center"> <printWhenExpression><![CDATA[$P{templateTitle} != null && !$P{templateTitle}.trim().isEmpty()]]></printWhenExpression> <expression><![CDATA["PHIẾU " + $P{templateTitle}]]></expression> </element> - <element kind="textField" uuid="40902efd-728a-46df-8432-f4a5798a4ee3" x="60" y="13" width="260" height="20" forecolor="#FF0905" fontName="Times New Roman" fontSize="14.0" bold="true" hTextAlign="Center"> + <element kind="textField" uuid="40902efd-728a-46df-8432-f4a5798a4ee3" x="2" y="13" width="287" height="20" forecolor="#FF0905" fontName="Times New Roman" fontSize="14.0" bold="true" hTextAlign="Center"> <expression><![CDATA[$P{clinicName}]]></expression> </element> </element> @@ -169,11 +162,6 @@ <element kind="textField" uuid="e90ad772-4425-482d-9e75-f2bc66b9084d" x="0" y="358" width="400" height="70" fontName="Times New Roman" fontSize="12.0" bold="true"> <expression><![CDATA[$P{checkupConclusion}]]></expression> </element> - <element kind="component" uuid="cb28d811-1328-45dc-9461-cfbb88b7eeae" x="-105" y="30" width="59" height="32"> - <component kind="barcode4j:Code128"> - <codeExpression><![CDATA[$P{barcodeNumber}]]></codeExpression> - </component> - </element> <element kind="textField" uuid="d63165c2-19e2-43ad-8a3f-004e00bffdfe" x="0" y="450" width="240" height="66" fontName="Times New Roman" fontSize="12.0"> <expression><![CDATA[$P{checkupSuggestion}]]></expression> </element> @@ -264,10 +252,19 @@ <expression><![CDATA[$P{image1}]]></expression> </element> </element> - <element kind="staticText" uuid="8f35aa72-22a4-45f0-a35e-8e35e832404e" x="-46" y="39" width="44" height="21" fontName="Times New Roman" fontSize="8.0" bold="false" hTextAlign="Center"> + <element kind="staticText" uuid="8f35aa72-22a4-45f0-a35e-8e35e832404e" x="-48" y="54" width="44" height="21" fontName="Times New Roman" fontSize="8.0" bold="true" hTextAlign="Center"> <printWhenExpression><![CDATA[$P{driveURL} != null && !$P{driveURL}.trim().isEmpty()]]></printWhenExpression> <text><![CDATA[Xem KQ online]]></text> </element> + <element kind="textField" uuid="6d7df7cd-924f-4306-bcea-d643f7a977f0" x="-111" y="42" width="60" height="12" fontName="Times New Roman" fontSize="8.0" hTextAlign="Center"> + <expression><![CDATA[$P{id}]]></expression> + </element> + <element kind="image" uuid="16aab6b9-7618-451e-ae48-8bf7bd857bbc" x="-111" y="13" width="61" height="29"> + <expression><![CDATA[$P{barcodeNumber}]]></expression> + </element> + <element kind="image" uuid="14220495-3e07-4322-9c5f-ebf98a8083c8" x="-50" y="3" width="48" height="48"> + <expression><![CDATA[$P{driveURL}]]></expression> + </element> </element> </band> </detail> diff --git a/src/main/resources/print_forms/ultrasoundresult_potrait.jrxml b/src/main/resources/print_forms/ultrasoundresult_potrait.jrxml index b4f531b..a83a87a 100644 --- a/src/main/resources/print_forms/ultrasoundresult_potrait.jrxml +++ b/src/main/resources/print_forms/ultrasoundresult_potrait.jrxml @@ -15,12 +15,8 @@ <parameter name="patientName" class="java.lang.String"/> <parameter name="patientDOB" class="java.lang.String"/> <parameter name="clinicAddress" class="java.lang.String"/> - <parameter name="logoImage" class="java.lang.String"/> <parameter name="barcodeNumber" class="java.lang.String"/> <parameter name="patientGender" class="java.lang.String"/> - <parameter name="hasMedicines" class="java.lang.Boolean"/> - <parameter name="hasServices" class="java.lang.Boolean"/> - <parameter name="hasSupplements" class="java.lang.Boolean"/> <parameter name="checkupConclusion" class="java.lang.String"/> <parameter name="checkupSuggestion" class="java.lang.String"/> <parameter name="reCheckupDate" class="java.lang.String"/> @@ -39,6 +35,7 @@ <parameter name="driveURL" class="java.lang.String"/> <parameter name="ultrasoundDoctorName" class="java.lang.String"/> <parameter name="clinicPrefix" class="java.lang.String"/> + <parameter name="id" class="java.lang.String"/> <query language="sql"><![CDATA[]]></query> <background splitType="Stretch"/> <title splitType="Stretch"/> @@ -47,16 +44,13 @@ <detail> <band height="598" splitType="Stretch"> <element kind="frame" uuid="2b7ec588-953c-4145-87b7-1d861c272fe0" x="0" y="0" width="551" height="598"> - <element kind="image" uuid="fd80ab38-4cae-409b-84b9-356220d2b1e5" x="0" y="-5" width="70" height="64"> - <expression><![CDATA[$P{logoImage}]]></expression> - </element> - <element kind="textField" uuid="eb56d4c8-2a0d-45fa-89a2-ad6528f9a99b" x="70" y="-5" width="358" height="22" forecolor="#FF0905" fontName="Times New Roman" fontSize="14.0" bold="true" hTextAlign="Center"> + <element kind="textField" uuid="eb56d4c8-2a0d-45fa-89a2-ad6528f9a99b" x="1" y="-5" width="398" height="22" forecolor="#FF0905" fontName="Times New Roman" fontSize="14.0" bold="true" hTextAlign="Center"> <expression><![CDATA[$P{clinicPrefix}]]></expression> </element> - <element kind="textField" uuid="796d9ffd-6d2e-4ae3-bdfb-b08183d7d9c0" x="70" y="29" width="358" height="20" fontName="Times New Roman" fontSize="10.0"> + <element kind="textField" uuid="796d9ffd-6d2e-4ae3-bdfb-b08183d7d9c0" x="1" y="29" width="398" height="12" fontName="Times New Roman" fontSize="10.0"> <expression><![CDATA[$P{clinicAddress}]]></expression> </element> - <element kind="textField" uuid="260bb33d-1d11-4178-aceb-3fbf8fcb4b45" x="70" y="41" width="276" height="15" fontName="Times New Roman" fontSize="8.0"> + <element kind="textField" uuid="260bb33d-1d11-4178-aceb-3fbf8fcb4b45" x="1" y="41" width="398" height="15" fontName="Times New Roman" fontSize="8.0"> <expression><![CDATA[$P{clinicPhone}]]></expression> </element> <element kind="staticText" uuid="6f89a93f-2d10-4506-baa5-226bdd047b17" x="0" y="65" width="100" height="30" forecolor="#FF0905" fontName="Times New Roman" fontSize="14.0" bold="true"> @@ -134,24 +128,14 @@ <element kind="textField" uuid="6b0b21be-2ca3-4594-bbe9-34868e13eb1e" x="52" y="150" width="58" height="16" fontName="Times New Roman" fontSize="12.0"> <expression><![CDATA[$P{checkupBloodPressure} +" mmHg"]]></expression> </element> - <element kind="component" uuid="e8842007-3343-4399-a101-76a302d0755d" x="499" y="17" width="52" height="48"> - <component kind="barcode4j:QRCode"> - <codeExpression><![CDATA[$P{driveURL}]]></codeExpression> - </component> - </element> <element kind="textField" uuid="9763a634-05c2-4f64-a903-c914455b7ee6" x="70" y="61" width="282" height="20" forecolor="#FF0905" fontName="Times New Roman" fontSize="12.0" bold="true" hTextAlign="Center"> <printWhenExpression><![CDATA[$P{templateTitle} != null && !$P{templateTitle}.trim().isEmpty()]]></printWhenExpression> <expression><![CDATA["PHIẾU " + $P{templateTitle}]]></expression> </element> - <element kind="staticText" uuid="8f35aa72-22a4-45f0-a35e-8e35e832404e" x="495" y="64" width="55" height="14" fontName="Times New Roman" fontSize="8.0" bold="false" hTextAlign="Center"> - <printWhenExpression><![CDATA[$P{driveURL} != null && !$P{driveURL}.trim().isEmpty()]]></printWhenExpression> + <element kind="staticText" uuid="8f35aa72-22a4-45f0-a35e-8e35e832404e" x="495" y="61" width="55" height="14" fontName="Times New Roman" fontSize="8.0" bold="false" hTextAlign="Center"> + <printWhenExpression><![CDATA[$P{driveURL} != null]]></printWhenExpression> <text><![CDATA[Xem KQ online]]></text> </element> - <element kind="component" uuid="73f562ce-2891-4577-aec2-7284203c8430" x="429" y="15" width="70" height="49"> - <component kind="barcode4j:Code128"> - <codeExpression><![CDATA[$P{barcodeNumber}]]></codeExpression> - </component> - </element> <element kind="image" uuid="692eae9f-a304-4cda-856d-7a3a95fac3df" stretchType="NoStretch" x="400" y="91" width="151" height="124"> <expression><![CDATA[$P{image1}]]></expression> </element> @@ -164,9 +148,18 @@ <element kind="image" uuid="129e6c61-d572-48a9-925e-1ab2e4e573e2" x="400" y="466" width="151" height="124"> <expression><![CDATA[$P{image4}]]></expression> </element> - <element kind="textField" uuid="5fde8538-8d26-4761-9a19-dd716a74749a" x="70" y="12" width="358" height="20" forecolor="#FF0905" fontName="Times New Roman" fontSize="14.0" bold="true" hTextAlign="Center"> + <element kind="textField" uuid="5fde8538-8d26-4761-9a19-dd716a74749a" x="1" y="12" width="398" height="20" forecolor="#FF0905" fontName="Times New Roman" fontSize="14.0" bold="true" hTextAlign="Center"> <expression><![CDATA[$P{clinicName}]]></expression> </element> + <element kind="image" uuid="a38cebd9-fec4-4e7f-8ec2-e6ee57a7464b" x="495" y="1" width="55" height="62"> + <expression><![CDATA[$P{driveURL}]]></expression> + </element> + <element kind="image" uuid="69654713-8c32-44f0-9d34-a2a7b9b2bb8d" x="404" y="8" width="80" height="34"> + <expression><![CDATA[$P{barcodeNumber}]]></expression> + </element> + <element kind="textField" uuid="989a8031-ea1b-406a-98a4-e797b98c0ccd" x="404" y="43" width="80" height="15" fontName="Times New Roman" fontSize="10.0" hTextAlign="Center"> + <expression><![CDATA[$P{id}]]></expression> + </element> </element> </band> </detail>