Để sử dụng toàn bộ tiện ích nâng cao của Hệ Thống Pháp Luật vui lòng lựa chọn và đăng ký gói cước.
|   BỘ Y TẾ  |    CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM  |  
|   Số: 1337/BYT-VPB1  |    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 Ninh 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 của Ủ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 Quốc hội sau kỳ họp thứ 4, Quốc hội khóa XV, trong đó cử tri tỉnh Ninh Bình kiến nghị "Sớm ban hành quy định về việc chuyển giao Trung tâm Y tế tuyến huyện, Trạm Y tế tuyến xã về Ủy ban nhân dân cấp huyện quản lý, điều hành trực tiếp và thống nhất mô hình quản lý y tế cơ sở trên địa bàn cả nước".
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 như sau:
Việc phân cấp cho Ủy ban nhân dân cấp huyện quản lý các Trung tâm y tế tuyến huyện và Trạm Y tế xã thuộc trách nhiệm, thẩm quyền của Ủy ban nhân dân cấp tỉnh, thành phố trực thuộc Trung ương được quy định tại một số văn bản của Chính phủ và Thông tư số 07/2021/TT-BYT ngày 27/5/2021 của Bộ Y tế hướng dẫn chức năng, nhiệm vụ, quyền hạn và cơ cấu tổ chức của Trung tâm Y tế huyện, quận, thị xã, thành phố thuộc tỉnh, thành phố thuộc thành phố trực thuộc Trung ươngTrên đây là nội dung trả lời đối với kiến nghị của cử tri tỉnh Ninh 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./.
|   
  |    BỘ TRƯỞNG   |  
 
 lồng nhau (bên trong) hay không
    const memberID = 0;
    const vbID = '23d9de9ddeadacd9c2e2e205ce488b70';
    
    // State management cho phân tích
    let isAnalyzing = false; // Có đang phân tích không
    let currentAnalyzingAddress = null; // Address đang được phân tích
    let currentAnalyzingElement = null; // Element đang được phân tích
    let currentAnalyzingBadge = null; // Badge của element đang phân tích
    let isPanelOpen = false; // Panel phân tích có đang mở không
    function isInViewportAndTabNoiDung(element) {
        const rect = element.getBoundingClientRect();
        const buffer = 1500; // Buffer to preload content below the viewport (approx. 50+ lines)
        const viewHeight = window.innerHeight || document.documentElement.clientHeight;
        const isInViewport = rect.top < viewHeight + buffer && rect.bottom >= 0;
        const isInTabNoiDung = $(element).closest('#tab_noi_dung_vb').length > 0;
        return isInViewport && isInTabNoiDung;
    }
    function getAddress(element) {
        const validTags = ['trichyeu', 'cancu', 'phan', 'chuong', 'muc', 'tieumuc', 'dieu', 'khoan', 'diem'];
        const $parent = $(element).closest(validTags.join(','));
        if (!$parent.length) {
            return null;
        }
        let addr = $parent.attr('address');
        if (!addr && $parent.prop('tagName').toLowerCase() === 'trichyeu') {
            addr = 'trichyeu';
            $parent.attr('address', addr);
        }
        return addr || null;
    }
    function processTnplClasses($element) {
        const tnplKeysInLine = new Set(); // key = slug hoặc text (thường là slug)
        $element.find('tnpl').each(function () {
            const $tnpl = $(this);
            const tnplSlug = ($tnpl.attr('slug') || '').trim().toLowerCase();
            const tnplKey = tnplSlug || $tnpl.text().trim().toLowerCase();
            // Đã xử lý trong cùng dòng => bỏ
            if (tnplKeysInLine.has(tnplKey)) {
                return;
            }
            tnplKeysInLine.add(tnplKey);
            let tnplExists = false;
            // Chỉ duyệt các tnpl đã được tô màu (class on)
            $('tnpl.on').each(function () {
                const $existingTnpl = $(this);
                const existingSlug = ($existingTnpl.attr('slug') || '').trim().toLowerCase();
                const existingKey = existingSlug || $existingTnpl.text().trim().toLowerCase();
                if (
                    existingKey === tnplKey &&
                    isInViewportAndTabNoiDung($existingTnpl[0])
                ) {
                    tnplExists = true;
                    return false; // break each
                }
            });
            if (!tnplExists) {
                $tnpl.addClass('on');
            }
        });
    }
    function processQueue() {
        while (pendingRequests < maxConcurrentRequests && requestQueue.length > 0) {
            const task = requestQueue.shift();
            pendingRequests++;
            task()
                .always(() => {
                    pendingRequests--;
                    processQueue();
                });
        }
    }
    function processVisibleParagraphs() {
        try {
        $('#tab_noi_dung_vb p:not([is-posted="1"])').each(function () {
            let $element = $(this);
            if (isInViewportAndTabNoiDung(this)) {
                $element.attr('is-posted', '1');
                $element.addClass('loading-content'); 
                let p_innerHTML = $element.html();
                let address = null;
                if (cac_cau_hinh.loai_noi_dung.includes('docs')) {
                    address = getAddress($element);
                }
                const isSubP = $element.parents('p').length > 0;
                if (isSubP && !allow_sub_p) {
                    $element.removeClass('loading-content');
                    return; // Không gửi nếu không cho phép
                }
                const postData = { p_content: p_innerHTML, cac_cau_hinh, address };
                if (isSubP && allow_sub_p) {
                    postData.sub_p = 1;
                }
                requestQueue.push(() =>
                    $.ajax({
                        url: '//tnpl' + (Math.floor(Math.random() * 10) + 1) + '.hethongphapluat.com/tien-ich/tim.tien.ich.php',
                        type: 'POST',
                        data: postData,
                        success: function(response) {
                            $element.html(response); 
                            processTnplClasses($element);
                            
                            // Đợi CTTD và các tiện ích load xong rồi mới attach badge
                            if (memberID === 4 && typeof attachPhanTichBadge === 'function') {
                                setTimeout(function() {
                                    // $element chính là thẻ p, kiểm tra và attach badge trực tiếp
                                    const $parent = $element.closest('phan, chuong, muc, tieumuc, dieu, khoan, diem');
                                    if ($parent.length > 0 && $parent.find('.badge-phan-tich[data-for="' + $parent.attr('address') + '"]').length === 0) {
                                        const address = $parent.attr('address');
                                        $element.attr('data-address', address);
                                        
                                        // Lấy tên loại thẻ cho tooltip
                                        const parentType = getParentTypeName($parent.prop('tagName').toLowerCase());
                                        // Append badge VÀO PARENT (dieu, khoan,...) thay vì vào   để tránh xung đột CTTD
                                        const $badge = $('Phân tích');
                                        $parent.append($badge);
                                        
                                        // Thêm class để CSS set position: relative CHỈ cho element có badge
                                        $parent.addClass('has-phan-tich-badge');
                                    }
                                    // Xử lý các p con (nếu có sub-p)
                                    attachPhanTichBadge($element);
                                }, 300); // Đợi 300ms để CTTD render xong
                            }
                        },
                        complete: function() {
                            $element.removeClass('loading-content'); 
                        }
                    })
                );
                processQueue();
            }
        });
        } catch(e) {
        }
    }
    $(window).on('scroll resize', function () {
        processVisibleParagraphs();
    });
    
    processVisibleParagraphs();
    // Chức năng phân tích điều luật (chỉ cho member_id = 4)
    if (memberID === 4 || memberID === 3 || memberID === 2) {
        // Modal cảnh báo
        function showWarningModal(message) {
            // Tạo modal nếu chưa có
            if ($('#warningModal').length === 0) {
                const modalHTML = `
                     ' + message + ' 
                        const $badge = $('Phân tích');
                        $parent.append($badge);
                        
                        // Thêm class để CSS set position: relative CHỈ cho element có badge
                        $parent.addClass('has-phan-tich-badge');
                    }
                }
            });
        }
        
        // Helper: Escape HTML entities
        function escapeHtml(text) {
            const map = {
                '&': '&',
                '<': '<',
                '>': '>',
                '"': '"',
                "'": '''
            };
            return String(text).replace(/[&<>"']/g, function(m) { return map[m]; });
        }
        
        // Helper: Convert Markdown to HTML (đơn giản)
        function markdownToHtml(markdown) {
            if (!markdown) return '';
            
            let html = markdown;
            
            // Headers
            html = html.replace(/^### (.*$)/gim, ' ' + para.replace(/\n/g, ' Đang phân tích... Đang phân tích... Đang xóa cache và phân tích lại... Đang phân tích...$1
');
            html = html.replace(/^## (.*$)/gim, '$1
');
            html = html.replace(/^# (.*$)/gim, '$1
');
            
            // Bold
            html = html.replace(/\*\*(.*?)\*\*/g, '$1');
            
            // Italic
            html = html.replace(/\*(.*?)\*/g, '$1');
            
            // Blockquote
            html = html.replace(/^> (.*$)/gim, '$1
');
            html = html.replace(/^> (.*$)/gim, '$1
');
            
            // Lists (unordered)
            html = html.replace(/^\- (.*$)/gim, '$1
');
            
            // Lists (ordered)
            html = html.replace(/^\d+\. (.*$)/gim, '
') + '' + escapeHtml(response.ten_van_ban) + '
';
                        if (response.so_hieu) {
                            html += 'Số hiệu: ' + escapeHtml(response.so_hieu) + '
';
                        }
                        html += 'Điều khoản: ' + escapeHtml(response.address) + '';
                        if (response.from_cache) {
                            html += ' Cache';
                        }
                        html += '
                                Vui lòng thử lại sau.
                            
                            Chi tiết: ${escapeHtml(errorMsg)}
                        ' + escapeHtml(response.ten_van_ban) + '
';
                        if (response.so_hieu) {
                            html += 'Số hiệu: ' + escapeHtml(response.so_hieu) + '
';
                        }
                        html += 'Điều khoản: ' + escapeHtml(response.address) + '';
                        html += '
                                Vui lòng thử lại sau.
                            
                            Chi tiết: ${escapeHtml(errorMsg)}
                        
              