Hệ thống pháp luật

BỘ Y TẾ
-------

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
---------------

Số: 1341/BYT-VPB1
V/v trả lời kiến nghị của cử tri gửi tới sau kỳ họp thứ 4, Quốc hội khóa XV

Hà Nội, ngày 15 tháng 3 năm 2023

 

Kính gửi: Đoàn Đại biểu Quốc hội tỉnh Thái Bình

Bộ Y tế nhận được công văn số 2081/BDN ngày 30/12/2022 của Ban Dân nguyện, Ủy ban Thường vụ Quốc hội về việc chuyển kiến nghị của cử tri gửi tới sau kỳ họp thứ 4, Quốc hội khóa XV, trong đó có một số kiến nghị của cử tri tỉnh Thái Bình.

Sau khi nghiên cứu nội dung kiến nghị và rà soát các văn bản liên quan, Bộ Y tế xin trả lời đối với từng kiến nghị của cử tri liên quan đến lĩnh vực quản lý của ngành Y tế, cụ thể như sau:

1. Cử tri kiến nghị các cơ quan có thẩm quyền nghiên cứu, sửa đổi, bổ sung, ban hành các văn bản quy phạm pháp luật về xã hội hóa, cơ chế tự chủ tài chính, cơ chế đấu thầu trong lĩnh vực y tế để sớm giải quyết căn cơ, dứt điểm tình trạng thiếu thuốc, vật tư y tế, trang thiết bị phục vụ khám bệnh, chữa bệnh, chăm sóc sức khỏe của Nhân dân.

1.1. Hiện tượng thiếu thuốc, vật tư y tế ở một số cơ sở y tế công lập trong thời gian qua

- Nguyên nhân khách quan: (1) Năm 2021 các cơ sở y tế phải tập trung lực lượng cho công tác phòng, chống dịch COVID-19, tăng khối lượng công việc do dịch bệnh, việc xây dựng, thực hiện kế hoạch mua sắm, đấu thầu bị ảnh hưởng. (2) Nguồn cung nguyên liệu, hàng hóa khan hiếm, giá cả biến động tăng trên quy mô toàn cầu khiến việc mua sắm thuốc, vật tư y tế, hóa chất, các sinh phẩm càng trở nên khó khăn hơn. (3) Sau đại dịch COVID-19, số lượng người dân đi khám, chữa bệnh tăng vọt, vượt quá khả năng cung ứng thuốc, hóa chất, vật tư y tế của các cơ sở y tế. (4) Các hợp đồng cung ứng đã thực hiện những năm trước hết hạn phải chờ kế hoạch đấu thầu mới.

- Nguyên nhân chủ quan: (1) Hạn chế nguồn cung do việc cấp phép, gia hạn giấy phép lưu hành chậm. (2) Có tâm lý e ngại, sợ sai trong tổ chức thực hiện mua sắm, thiếu nhân lực có chuyên môn tổ chức đấu thầu. (3) Tiến độ thực hiện mua sắm thuốc thuộc danh mục đấu thầu tập trung thuốc quốc gia, đàm phán giá và đấu thầu tập trung cấp địa phương còn chậm; nhiều gói thầu số lượng ít không thu hút nhà cung cấp,...(4) Tại một số đơn vị có tình trạng tồn tại công nợ với nhà thầu, do chưa được bảo hiểm xã hội thanh, quyết toán chi phí khám, chữa bệnh một số năm trước đó; một số nhà cung cấp cũng e ngại trong việc cung ứng hàng hóa cho các đơn vị công do liên quan tới giá chưa hợp lý, thủ tục đấu thầu, thanh toán phức tạp; một số nhà thầu không tiếp tục tham dự thầu, không tiếp tục sẵn sàng giao hàng hoặc giao hàng với một số lượng rất hạn chế, chỉ đủ sử dụng trong một thời gian ngắn, gây nên tình trạng thiếu hụt thuốc sử dụng cho người bệnh. (5) Nhiều gói thầu phải thực hiện đấu thầu lần 2, lần 3 vẫn không có kết quả vì không có nhà thầu dự thầu do giá hàng hóa trên thị trường đã biến động, tăng so với giá kế hoạch được lập.

1.2. Các giải pháp đã và đang triển khai để khắc phục tình trạng thiếu thuốc, vật tư y tế để phục vụ chăm sóc sức khỏe nhân dân

1.2.1. Hoàn thiện hành lang pháp lý

Trong thời gian qua dưới sự quan tâm lãnh đạo của Trung ương, Quốc hội, Chính phủ, Thủ tướng Chính phủ đã quyết liệt chỉ đạo Bộ Y tế phối hợp với các bộ, ngành tham mưu để giải quyết triệt để vấn đề thiếu thuốc, vật tư, trang thiết bị y tế. Bộ Y tế cùng các bộ, ngành đã rất nỗ lực và cố gắng tìm giải pháp tháo gỡ khó khăn; chỉ đạo đẩy mạnh việc thực hiện mua sắm, cung ứng đủ thuốc, trang thiết bị y tế, đặc biệt tập trung tháo gỡ những khó khăn về mặt pháp lý, cụ thể:

- Ngày 09/01/2023 trình Quốc hội thông qua Luật Khám bệnh, chữa bệnh sửa đổi số 15/2023/QH15, có hiệu lực kể từ ngày 01/01/2024 với các giải pháp để tăng nguồn lực cho cơ sở khám bệnh, chữa bệnh như các quy định về giá dịch vụ khám bệnh, chữa bệnh, tự chủ hay các quy định về vay vốn, thuê, mượn thiết bị y tế...;

- Báo cáo Quốc hội ban hành Nghị quyết số 80/2023/QH15, trong đó cho phép tiếp tục sử dụng giấy đăng ký lưu hành thuốc, nguyên liệu làm thuốc hết thời hạn hiệu lực trong giai đoạn từ 01/01/2023 đến 31/12/2024 được tiếp tục sử dụng từ ngày hết hiệu lực đến hết ngày 31/12/2024. Với sự cho phép của Nghị quyết 80/2023/QH15, ngay trong tháng 02/2023, Bộ Y tế đã gia hạn giấy phép lưu hành của gần 10.000 thuốc, đảm bảo nguồn cung, tháo gỡ khó khăn cho các doanh nghiệp cung ứng thuốc trên thị trường.

- Trình Chính phủ ban hành Nghị quyết số 144/NQ-CP ngày 05/11/2022 của Chính phủ về việc bảo đảm thuốc, trang thiết bị y tế và thanh toán chi phí khám bệnh, chữa bệnh bảo hiểm y tế.

- Trình Thủ tướng Chính phủ ban hành Công điện số 778/CĐ-TTg ngày 05/9/2022, Công điện số 72/CĐ-TTg ngày 25/02/2023 về việc bảo đảm thuốc, trang thiết bị y tế để phục vụ công tác khám bệnh, chữa bệnh.

- Bộ Y tế ban hành Thông tư số 14/2022/TT-BYT ngày 06/12/2022 về việc bãi bỏ một số văn bản quy phạm pháp luật do Bộ trưởng Bộ Y tế ban hành, liên tịch ban hành; theo đó đã bãi bỏ khoản 3, Điều 8 Thông tư số 14/2020/TT-BYT.

- Tiếp tục hoàn thiện thể chế, các cơ chế chính sách: Sửa đổi Luật Dược 2016 (trình Chính phủ từ tháng 9/2022, đang hoàn thiện hồ sơ trình Quốc hội).

- Trình Chính phủ sửa đổi Nghị định số 146/2018/NĐ-CP về hướng dẫn Luật Bảo hiểm y tế (đã xin ý kiến Thành viên Chính phủ) để giải quyết các vấn đề bất cập liên quan tới bảo hiểm y tế.

- Ban hành Thông tư sửa Thông tư số 15/2019/TT-BYT quy định việc đấu thầu thuốc tại các cơ sở y tế công lập.

Đặc biệt, để tiếp tục tháo gỡ những khó khăn liên quan tới đảm bảo việc cung ứng đầy đủ thuốc, trang thiết bị, vật tư y tế phục vụ công tác bảo vệ, chăm sóc và nâng cao sức khỏe nhân dân, ngay đầu tháng 3/2023, Bộ Y tế đã trình Chính phủ đã ban hành:

- Nghị định số 07/2003/NĐ-CP ngày 03/3/2023 sửa đổi, bổ sung một số điều của Nghị định số 98/2021/NĐ-CP ngày 08/11/2021 về quản lý trang thiết bị y tế nhằm giải quyết các tồn tại, hạn chế liên quan tới lĩnh vực trang thiết bị y tế, như: Tự động gia hạn giấy phép nhập khẩu, số đăng ký lưu hành, khơi thông các vướng mắc trong nhập khẩu trang thiết bị y tế (Giấy phép nhập khẩu TTBYT đã được cấp từ ngày 01/01/2018 đến 31/12/2021 được tiếp tục sử dụng đến hết ngày 31/12/2024; số đăng ký lưu hành đối với TTBYT là sinh phẩm chẩn đoán invitro đã được cấp từ ngày 01/01/2014 đến ngày 31/12/2019 được tiếp tục sử dụng đến hết ngày 31/12/2024), thay đổi quản lý, kê khai giá TTBYT, quy định để giải quyết vướng mắc trong việc xử lý TTBYT khi bị thu hồi số đăng ký lưu hành...

- Nghị quyết số 30/NQ-CP ngày 04/3/2023 về việc tiếp tục thực hiện các giải pháp bảo đảm thuốc, trang thiết bị y tế trong đó có giải quyết các vấn đề liên quan tới thanh toán chi phí khám bệnh, chữa bệnh bảo hiểm y tế đối với các dịch vụ kỹ thuật thực hiện bằng máy do nhà thầu cung cấp sau khi trúng thầu vật tư, hóa chất theo kết quả lựa chọn nhà thầu được cấp có thẩm quyền phê duyệt theo quy định của Luật Đấu thầu; hướng dẫn xác định giá gói thầu; việc sử dụng trang thiết bị y tế đã được cá nhân, tổ chức trong ngoài nước hiến, biếu, tặng cho, đóng góp, viện trợ, tài trợ nhưng chưa hoàn thành sở hữu toàn dân để khám bệnh, chữa bệnh.

Với những văn bản được ban hành nêu trên về cơ bản đã tháo gỡ được những khó khăn, vướng mắc của các cơ sở y tế.

Hiện nay, Bộ Y tế đang tiếp tục phối hợp với Bộ Kế hoạch và Đầu tư, Bộ Tài chính, Bảo hiểm xã hội Việt Nam và các Bộ, ngành, cơ quan liên quan tham mưu quyết liệt cho Chính phủ: Sửa đổi Luật Đấu thầu và Thông tư số 08/2022/TT-BKHĐT ngày 31/5/2022 Quy định chi tiết việc cung cấp, đăng tải thông tin về đấu thầu và lựa chọn nhà thầu trên hệ thống mạng đấu thầu quốc gia; sửa đổi Luật Giá, Nghị định số 29/NĐ-CP, Nghị định số 151/NĐ-CP; Thông tư số 58/2016/TT-BTC; Thông tư số 277/2016/TT-BTC và Thông tư số 278/2016/TT-BTC ngày 14/11/2016... để tạo điều kiện thuận lợi cho công tác mua sắm, đấu thầu thuốc, trang thiết bị y tế; đồng thời hướng dẫn các đơn vị, các cơ sở y tế, địa phương thực hiện các văn bản quy phạm pháp luật liên quan đến mua sắm, đấu thầu thuốc, trang thiết bị y tế theo thẩm quyền.

1.2.2. Về công tác chỉ đạo, điều hành, chuyên môn

Trong các năm qua, Bộ Y tế đã quyết liệt triển khai nhiều giải pháp nhằm tăng cường xử lý, giải quyết việc đăng ký lưu hành, gia hạn đăng ký lưu hành thuốc, nguyên liệu làm thuốc:

- Đẩy nhanh tiến độ cấp, gia hạn giấy đăng ký lưu hành theo quy định tại Luật Dược; ban hành các Thông tư liên quan đến công tác đăng ký thuốc, đẩy mạnh việc cắt giảm, đơn giản hóa thủ tục hành chính, đặc biệt với các quy định về hồ sơ gia hạn giấy đăng ký lưu hành thuốc- Đã rà soát, dự thảo danh mục công bố gần 10.000 thuốc để thực hiện Nghị quyết số 80/2023/QH15 ngày 09/01/2023.

- Chỉ đạo thực hiện việc điều chỉnh giá thuốc kê khai, kê khai lại đối với các mặt hàng do tăng giá khách quan.

- Thực hiện phân cấp toàn diện phê duyệt thẩm quyền quyết định mua sắm, kế hoạch lựa chọn nhà thầu mua thuốc cho các cơ sở y tế trực thuộc Bộ.

- Đẩy nhanh tiến độ thực hiện mua sắm tập thuốc quốc gia, đàm phán giá (Trong năm 2022, đã tổ chức thành công 03 gói thầu thuốc thuộc danh mục đấu thầu tập trung cấp Quốc gia: giảm giá 1.418 tỷ đồng so với giá kế hoạch (giảm gần 18%); đàm phán giá thành công 61/69 mặt hàng thuốc: giảm giá 1.995 tỷ đồng (xấp xỉ 15%)).

- Kịp thời hỗ trợ các cơ sở y tế có vướng mắc liên quan đến thiếu thuốc.

- Tăng cường công tác giáo dục chính trị, tư tưởng và các giải pháp nhằm ổn định tư tưởng cho cán bộ, công chức và chuyên gia thẩm định hồ sơ, tiếp tục đề xuất các giải pháp khắc phục tình trạng công chức và chuyên gia thẩm định xin thôi việc hoặc không tham gia thẩm định hồ sơ; đẩy mạnh ứng dụng công nghệ thông tin trong việc giải quyết hồ sơ trực tuyến, đến nay việc tiếp nhận hồ sơ của hầu hết các thủ tục hành chính trong đăng ký thuốc đã thực hiện trực tuyến; sửa đổi quy định về thu phí đăng ký thuốc và chế độ thù lao cho chuyên gia để thúc đẩy công tác thẩm định hồ sơ ...

- Bộ Y tế đã thành lập 04 Đoàn kiểm tra, khảo sát tình hình cung ứng, sử dụng thuốc, vật tư, trang thiết bị tại các cơ sở y tế, đồng thời có văn bản yêu cầu các Sở Y tế, các bệnh viện Trung ương báo cáo về tình hình cung ứng thuốc, vật tư, trang thiết bị y tế để đánh giá thực trạng cung ứng thuốc, trang thiết bị y tế tại các cơ sở y tế. Phối hợp với các cơ sở y tế, các địa phương đánh giá tình hình thực hiện đảm bảo thuốc, vật tư y tế.

- Phối hợp cùng các địa phương và các cơ sở y tế rà soát các vướng mắc liên quan tới việc đảm bảo thuốc, trang thiết bị vật tư y tế của các cơ sở y tế để tổng hợp đề xuất các cấp có thẩm quyền giải quyết.

2. Cử tri cho rằng, các quy định về thủ tục thanh toán khám bệnh, chữa bệnh bảo hiểm y tế liên tục có sự thay đổi, không thống nhất dẫn đến nhiều khó khăn cho các cơ sở y tế khi thực hiện nhiệm vụ khám, chữa bệnh và thanh, quyết toán chi phí khám, chữa bệnh bảo hiểm y tế. Cử tri kiến nghị Bộ Y tế tiếp tục nghiên cứu có hướng dẫn cụ thể, nhất quán trong việc thanh, quyết toán chi phí khám bệnh, chữa bệnh bảo hiểm y tế.

- Điều 30 Luật Bảo hiểm y tế quy định có 03 phương thức thanh toán chi phí khám, chữa bệnh bảo hiểm y tế: (1) Thanh toán theo giá dịch vụ; (2) Thanh toán theo định suất và (3) Thanh toán theo trường hợp bệnh.

- Thực hiện các quy định của Luật Bảo hiểm y tế, Chính phủ đã ban hành Nghị định số 146/2018/NĐ-CP ngày 17/10/2018 quy định chi tiết và hướng dẫn biện pháp thi hành một số điều của Luật Bảo hiểm y tế (Nghị định 146), trong đó quy định cụ thể phương thức thanh toán theo giá dịch vụ và quy định một số nguyên tắc của phương thức thanh toán theo định suất, giao Bộ Y tế hướng dẫn cụ thể về phương thức này. Đối với phương thức thanh toán theo trường hợp bệnh, do việc xây dựng phương thức thanh toán này cần nhiều thời gian thực hiện, đồng thời, do ảnh hưởng của đại dịch COVID- 19 nên số liệu khám, chữa bệnh bảo hiểm y tế trong hơn 02 năm qua có những biến động lớn, chưa đủ đại diện để thống kê xây dựng phương thức thanh toán này, vì vậy, hiện nay Bộ Y tế đang tiếp tục nghiên cứu, xây dựng.

- Đối với phương thức thanh toán theo giá dịch vụ, năm 2019 -2020, Bộ Y tế đã hướng dẫn triển khai thực hiện phương thức thanh toán theo giá dịch vụ. Tuy nhiên, sau 3 năm thực hiện, Bộ Y tế nhận thấy có một số điểm bất hợp lý giữa quy định về tổng mức thanh toán và các quy định về tạm ứng, thanh toán, quyết toán chi phí khám, chữa bệnh bảo hiểm y tế theo giá dịch vụ được quy định tại Điều 32 Luật Bảo hiểm y tế; sự không hợp lý về nguyên lý kinh tế y tế của quy định về tổng mức thanh toán trong phương thức thanh toán theo giá dịch vụ và phản ánh của các địa phương, cơ sở khám, chữa bệnh về các khó khăn, vướng mắc trong việc xác định tổng mức thanh toán chi phí khám, chữa bệnh bảo hiểm y tế tại các cơ sở y tế; đặc biệt trong bối cảnh bị ảnh hưởng nặng nề của đại dịch COVID-19, ảnh hưởng tới chi phí khám, chữa bệnh thực tế cơ sở khám, chữa bệnh bảo hiểm y tế đã sử dụng cho người tham gia Bảo hiểm y tế từ năm 2021.

Do đó, Bộ Y tế đang xây dựng Nghị định sửa đổi, bổ sung Nghị định số 146/2018/NĐ-CP theo hướng bỏ quy định về tổng mức thanh toán và trình Chính phủ ban hành Nghị quyết cho phép thanh toán chi phí khám, chữa bệnh bảo hiểm y tế năm 2021 bằng chi phí khám, chữa bệnh bảo hiểm y tế theo báo cáo quyết toán năm của cơ sở khám, chữa bệnh sau khi đã được cơ quan Bảo hiểm xã hội giám định.

- Đối với phương thức thanh toán theo định suất, trên cơ sở quy định của Nghị định số 146/2018/NĐ-CP, Bộ Y tế đã nghiên cứu xây dựng và trình ban hành Thông tư số 04/2021/TT-BYT ngày 29/4/2021 hướng dẫn thanh toán chi phí khám bệnh, chữa bệnh bảo hiểm y tế theo định suất. Tuy nhiên, do ảnh hưởng đại dịch COVID-19, công tác khám chữa bệnh có những bất thường, không tuân theo quy luật thông thường mà Ban Soạn thảo Thông tư đã tính toán và thể hiện trong Thông tư số 04/2021/TT-BYT, nếu thực hiện theo quy định của Thông tư sẽ không đảm bảo chi phí khám, chữa bệnh bảo hiểm y tế cho cơ sở khám, chữa bệnh. Trên cơ sở đó, Bộ Y tế đã ban hành Thông tư số 22/2021/TT- BYT quy định ngưng hiệu lực của Thông tư số 04/2021/TT-BYT.

Trong thời gian tới, Bộ Y tế sẽ nghiên cứu, ban hành đầy đủ các phương thức thanh toán theo quy định của Luật Bảo hiểm y tế để các cơ sở khám, chữa bệnh triển khai thực hiện.

Trên đây là nội dung trả lời đối với kiến nghị của cử tri tỉnh Thái Bình liên quan đến lĩnh vực y tế, Bộ Y tế trân trọng kính gửi Đoàn Đại biểu Quốc hội để thông tin đến cử tri.

Xin trân trọng cảm ơn./.

 


Nơi nhận:
- Như trên;
- Ban Dân nguyện - UBTVQH;
- VPCP: QHĐP, TH;
- VPQH;
- Các đ/c Thứ trưởng BYT;
- BYT: BH; KH-TC, TB-CT, QLD;
- Cổng TTĐT Bộ Y tế (để đăng tải);
- Lưu: VT, VPB1.

BỘ TRƯỞNG




Đào Hồng Lan

 



span', 'dctk > span', 'dctd > span']; var hasChild = selectors.some(function(selector) { return clickedElement.closest(selector).find('span').length > 0; }); if (!hasChild) { var totalSubLevels = 1; } else { function findMatchingParent(element) { var parent = element.parent(); if (parent.length === 0) return null; for (var i = 0; i < selectors.length; i++) { if (parent.is(selectors[i])) { superLevel++; return parent; } } return findMatchingParent(parent); } var parentElement = findMatchingParent(clickedElement); while (parentElement !== null) { level++; parentElement = findMatchingParent(parentElement); } var closestElement = clickedElement.closest(selectors.join(', ')); var nodeName = closestElement.prop('nodeName').toLowerCase(); var className = closestElement.attr('class'); var textContent = closestElement.text().trim(); var address = selectors.find(function(selector) { return closestElement.is(selector); }); var totalSubLevels = closestElement.find('span').length + 1; var parent_id = closestElement.parent().attr('id'); var variableName = 'parent_id_' + level; // Gán giá trị của parent_id cho biến động này window[variableName] = parent_id; } if (totalSubLevels>1) { var dynamicVars = {}; var variableName = 'parent_id_' + level; dynamicVars[variableName] = parent_id; var buble_id = dynamicVars[variableName]; } else { buble_id = 'dc_' + $(this).parent().attr('id'); } if ($this.next('.pointy').length === 0) { $this.after('

'); } var $pointer = $this.next('.pointer'); var $canvas = $this.next('canvas'); var $pointy = $canvas.next('div.pointy'); if ($pointy.is(':visible')) { } if ($pointer.is(':visible')) { } else { if ($('#ajax_tra_cuu').is(':visible')) { $('#ajax_tra_cuu').hide(); } $("#right_info_col").css('height', '1px'); $('#rightdocinfo').hide('slow'); $('#r-toc').hide('slow'); if ($('button#toggleSidebar').length) { if (parseInt($('#customSidebar').css('right'),10) == 0) { $('#customSidebar').animate({ right: '-280px' }, 500); $('#toggleSidebar').html(''); } else { } } if ($pointy.is(':visible')) { var $pointer = $canvas.next('.pointer'); if ($pointer.is(':visible')) { $pointer.hide(); $canvas.hide(); } else { } } else { if ($canvas.length==1) { var $canvas = $this.next('canvas'); var $pointer = $canvas.next('.pointer'); if ($pointer.length>0) { $pointer.show(); $canvas.show(); } $('.pointer').removeClass('pointy-active'); $('.pointer').css({'z-index':1}); $('canvas.pointy').removeClass('pointy-active'); $('canvas.pointy').css({'z-index':1}); $pointer.css({'z-index':9999}); $canvas.css({'z-index':9999}); if (level==0) { if (totalSubLevels==1) { scrollTop_offset = $pointer.offset().top - $(window).height() / 4; } else { scrollTop_offset = $pointer.offset().top - $('#nav-tab-vb').height()-10; } $('html,body').animate({ scrollTop: scrollTop_offset }, 'slow'); } } else { $pointer.show(); if ($pointy.length==0) { var elementOffset = $(this).position().top; var windowHeight = $(window).height()-20 - $('#nav-tab-vb').height(); if (level>0 && e.originalEvent === undefined) { //clicked by js var pointerHeight = Math.max(250, Math.min((windowHeight * 0.8)/(level+1), 450)); var newTop = elementOffset - (pointerHeight / 2); var maxTop = $(document).height() - pointerHeight; newTop = Math.max(0, Math.min(newTop, maxTop)); } else { var pointerHeight = Math.max(250, Math.min((windowHeight * 0.8)/totalSubLevels, 450)); var newTop = elementOffset - (pointerHeight / 2); var maxTop = $(document).height() - pointerHeight; newTop = Math.max(0, Math.min(newTop, maxTop)); } if (level>0 && e.originalEvent === undefined) { newTop = newTop+pointerHeight+10; } var position = $this.position(); $pointer.css({ left: $('#doc-left-col, #noi_dung_dk').width() + 50 + "px", width: $('#doc-right-col').width()-30, height: pointerHeight, 'z-index': 9999, top: newTop + "px" }); $this.pointy({ pointer: $pointer, defaultClass: 'zindex', activeClass: 'pointy-active', arrowWidth: 20 }); var initialTop = $pointer.position().top; $pointer.draggable({ containment: 'document', drag: function() { if (screen.width<1280) { var cap_nhat_pointy_top = setInterval(function(){ if ($this.position().top-$this.parent().height()+10!=$pointer.prev('canvas.pointy').position().top) { $pointer.prev('canvas.pointy').css({'top': $this.position().top-$this.parent().height()+10+'px'}); clearInterval(cap_nhat_pointy_top); } else { clearInterval(cap_nhat_pointy_top); } },50); } $this.trigger('pointy-update'); } }); $pointer.on('click', '.close_pointy', function(e) { $pointer.hide(); $pointer.prev('canvas.pointy').hide(); }); var isDragging = false, startX, startY, offsetX, offsetY; var startDragging = function(e) { if (checkIfScrollingContent(e)) return; if ($(e.target).is('.close_pointy')) { return; } isDragging = true; var touch = e.originalEvent.touches[0]; var pos = $pointer.position(); startX = touch.pageX; startY = touch.pageY; offsetX = startX - pos.left; offsetY = startY - pos.top-$pointer.height()-$pointer.height()/1.365; var cap_nhat_pointy_top = setInterval(function(){ if ($this.position().top-$this.parent().height()+10!=$pointer.prev('canvas.pointy').position().top) { $pointer.prev('canvas.pointy').css({'top': $this.position().top-$this.parent().height()+10+'px'}); clearInterval(cap_nhat_pointy_top); } else { clearInterval(cap_nhat_pointy_top); } },50); //e.preventDefault(); }; var duringDragging = function(e) { if (checkIfScrollingContent(e)) return; if (isDragging) { var touch = e.originalEvent.touches[0]; var moveX = touch.pageX; var moveY = touch.pageY; if (screen.width<1280) { var newLeft = moveX - offsetX; var newTop = moveY - offsetY-$pointer.height()-$pointer.height()/1.365; if (newLeft < 0) { newLeft = 0; } else if (newLeft + $pointer.outerWidth() > $(window).width()) { newLeft = $(window).width() - $pointer.outerWidth(); } if (newTop < initialTop) { newTop = initialTop; } $pointer.css({ left: newLeft, top: newTop }); } else { var newLeft = moveX - offsetX; var newTop = moveY - offsetY-$pointer.height()-$pointer.height()/1.365; if (newLeft < 0) { newLeft = 0; } else if (newLeft + $pointer.outerWidth() > $(window).width()) { newLeft = $(window).width() - $pointer.outerWidth(); } $pointer.css({ left: newLeft, top: newTop }); } $pointer.prev('canvas.pointy').hide(); //e.preventDefault(); } }; var stopDragging = function(e) { $pointer.prev('canvas.pointy').show(); if (checkIfScrollingContent(e)) return; if (screen.width<1280) { var cap_nhat_pointy_top = setInterval(function(){ if ($this.position().top-$this.parent().height()+10!=$pointer.prev('canvas.pointy').position().top) { $pointer.prev('canvas.pointy').css({'top': $this.position().top-$this.parent().height()+10+'px'}); clearInterval(cap_nhat_pointy_top); } else { clearInterval(cap_nhat_pointy_top); } },50); } $this.trigger('pointy-update'); }; function checkIfScrollingContent(e) { if ($(e.target).closest('.list_tds').length > 0) { //e.stopPropagation(); return true; } return false; } $pointer.on('touchstart', startDragging); $pointer.on('touchmove', duringDragging); $pointer.on('touchend', stopDragging); var updatePointerPosition = function() { var offset = $this.position(); var windowHeight = $(window).height() - $('#nav-tab-vb').height()-20; var pointerHeight = Math.max(250, Math.min((windowHeight * 0.8)/totalSubLevels, 450)); var elementOffset = $this.position().top; var newTop = elementOffset - (pointerHeight / 2); var maxTop = $(document).height() - pointerHeight; newTop = Math.max(0, Math.min(newTop, maxTop)); $pointer.css({ left: $('#doc-left-col, #noi_dung_dk').width() + 50 + "px", width: $('#doc-right-col').width() - 30, height: pointerHeight, top: newTop + "px" }); }; $(window).on('resize orientationchange', function() { updatePointerPosition(); var cap_nhat_pointy_top = setInterval(function(){ if ($this.position().top-$this.parent().height()+10!=$pointer.prev('canvas.pointy').position().top) { $pointer.prev('canvas.pointy').css({'top': $this.position().top-$this.parent().height()+10+'px'}); $this.trigger('pointy-update'); clearInterval(cap_nhat_pointy_top); } else { clearInterval(cap_nhat_pointy_top); } },50); }); } } } if ($pointer.is(':visible')) { if (level==0) { if (totalSubLevels==1) { scrollTop_offset = $pointer.offset().top - $(window).height() / 4; } else { scrollTop_offset = $pointer.offset().top - $('#nav-tab-vb').height()-10; } $('html,body').animate({ scrollTop: scrollTop_offset }, 'slow'); } } } $pointer.css('opacity', '1'); $('.pointy').click(function(e) { //e.preventDefault(); //e.stopPropagation(); }); var parent = $(this).parent(); var dataCT = parent.attr('data-ct'); var dataDC = parent.attr('data-dc'); var dataTN = parent.attr('data-tn'); var loai_buble = parent.prop('nodeName').toLowerCase(); var text_html = $(this).text(); if (loai_buble=='cttd' || loai_buble=='a') { pointer_html = ''; } else if(loai_buble=='dctd') { if (this.hasAttribute('o-title')) { tieu_de_dan_chieu = $(this).attr('o-title'); } else { tieu_de_dan_chieu = text_html; } pointer_html = ''; } else if(loai_buble=='dctk') { pointer_html = ''; } if ($pointer.find('#chu_thich_buble_'+buble_id).length) { } else { $pointer.html(pointer_html); } if (loai_buble=='cttd' || loai_buble=='a') { var load_cttd = setInterval(function(){ if (!$pointer.find('#noi_dung_buble_'+buble_id + ' .dc_'+buble_id+'_loading').length) { $.ajax({ type: 'POST', url: '/ajax/vanban/chu-thich/', data: { 'ndct': dataCT, 'id_ct': buble_id, 'dc_text': text_html }, success: function(response) { $("#noi_dung_buble_" + buble_id).html(response); if ($(document).width()>=1280){$this.trigger('pointy-update');} clearInterval(load_cttd); } }); $('#noi_dung_buble_'+buble_id + ' .dc_loading').addClass('dc_'+buble_id+'_loading'); } },500); } else if(loai_buble=='dctd') { var load_cttd = setInterval(function(){ if ($pointer.find('#noi_dung_buble_'+buble_id + ' .dc_loading').length){ if (dataDC.length == 32) { $.ajax({ type: 'POST', url: '/ajax/public/dan-chieu/' + dataDC, data: { 'text_dan_chieu': text_html }, success: function(response) { $("#noi_dung_buble_" + buble_id).html(response); if ($(document).width()>=1280){$this.trigger('pointy-update');} clearInterval(load_cttd); } }); } else { $("#noi_dung_buble_" + buble_id).load('/ajax/public/dan-chieu/' + dataDC + '/'); if ($(document).width()>=1280){$this.trigger('pointy-update');} clearInterval(load_cttd); } } else { clearInterval(load_cttd); } },500); } else if(loai_buble=='dctk') { if ($('#noi_dung_buble_'+buble_id + ' .dc_loading').length){ $.ajax({ type: 'POST', url: '/ajax/vanban/chu-thich/', data: { 'ndct': dataCT, 'id_ct': buble_id, 'loai_hd': 'noi_dung_tham_khao', 'dc_text': text_html }, success: function(response) { $("#noi_dung_buble_" + buble_id).html(response); if ($(document).width()>=1280){$this.trigger('pointy-update');} } }); } } $('.pointer').removeClass('pointy-active'); $('.pointer').css({'z-index':1}); $('canvas.pointy').removeClass('pointy-active'); $('canvas.pointy').css({'z-index':1}); $pointer.css({'z-index':9999}); $canvas.css({'z-index':9999}); $('.pointer').on('mouseenter mouseleave click touchstart', function() { // Khi di chuột vào $('.pointer').removeClass('pointy-active'); $('.pointer').css({'z-index':1}); $(this).css({'z-index':9999}); $('canvas.pointy').removeClass('pointy-active'); $('canvas.pointy').css({'z-index':1}); $(this).prev('canvas.pointy').addClass('pointy-active'); $(this).prev('canvas.pointy').css({'z-index':9999}); } ); var list_tds_max_height_interval = setInterval(function(){ if ($pointer.find('.list_tds').length) { var windowHeight = $(window).height()-20 - $('#nav-tab-vb').height(); var pointerHeight = Math.max(250, Math.min((windowHeight * 0.8)/totalSubLevels, 450)); $pointer.find('.list_tds').css('max-height', pointerHeight + 'px'); clearInterval(list_tds_max_height_interval); } },50); $(window).resize(function() { if ($(document).width()<=768) { $pointer.hide(); $pointer.prev('canvas.pointy').hide(); } var cap_nhat_pointy_top = setInterval(function(){ if ($this.position().top-$this.parent().height()+10!=$pointer.prev('canvas.pointy').position().top) { $pointer.prev('canvas.pointy').css({'top': $this.position().top-$this.parent().height()+10+'px'}); clearInterval(cap_nhat_pointy_top); } else { clearInterval(cap_nhat_pointy_top); } },50); var list_tds_max_height_interval = setInterval(function(){ if ($pointer.find('.list_tds').length) { var windowHeight = $(window).height()-20 - $('#nav-tab-vb').height(); var pointerHeight = Math.max(250, Math.min((windowHeight * 0.8)/totalSubLevels, 450)); $pointer.find('.list_tds').css('max-height', pointerHeight + 'px'); clearInterval(list_tds_max_height_interval); } },50); }); var parentElement = $(this).parent(); var selectors = 'cttd.chuthichtudong > span, a.chuthichtudong > span, dctk > span, dctd > span'; // Find and click all matching child elements parentElement.find(selectors).each(function() { //$(this).click(); }); var cap_nhat_pointy_top = setInterval(function(){ if ($this.position().top-$this.parent().height()+10!=$pointer.prev('canvas.pointy').position().top) { $pointer.prev('canvas.pointy').css({'top': $this.position().top-$this.parent().height()+10+'px'}); clearInterval(cap_nhat_pointy_top); } else { clearInterval(cap_nhat_pointy_top); } },50); }); }); function random_string_id(numstr) { var text = ""; var possible = "abcdefghijklmnopqrstuvwxyz0123456789"; for (var i = 0; i < numstr; i++) text += possible.charAt(Math.floor(Math.random() * possible.length)); return text; } let lastChosen = null; let lastChosentr = null; function scroll_den_hd(ndsh_dich_address) { if (lastChosen) { $(lastChosen).css('background-color', ''); } if (lastChosentr) { $(lastChosentr).css('background-color', ''); } lastChosen = $('[href="javascript:scroll_den_hd(\'' + ndsh_dich_address + '\')"]'); lastChosentr = $('[data-ct="' + ndsh_dich_address + '"]'); $(lastChosen).css('background-color', 'yellow'); $(lastChosentr).css('background-color', 'yellow'); var targetElement = $('[address="' + ndsh_dich_address + '"]'); $('.selected_dchd').removeClass('selected_dchd'); targetElement.addClass('selected_dchd'); targetElement.children('p').children('cttd').click(); targetElement.children('cttd').click(); targetElement.children('p').children('dctk').click(); targetElement.children('dctk').click(); } $(document).ready(function() { $(document).on('click', 'cttd.chuthichtudong span, a.chuthichtudong span, dctk span, dctd span', function() { $('#modal_noi_dung_tra_phi .modal-dialog.zoom').removeAttr('style'); openModal('#modal_noi_dung_tra_phi','/ajax/member/m-register/'); $('.pointer, canvas').css({ 'z-index': '50', 'important': true }); }); });