Duvida para pegar o valor dentro de uma função e utilizar em outra, PHP e JS

Criei um select dinâmico com 3 select, o primeiro de Unidade, o segundo de Especialidade e o terceiro de Sala, consigo validar o primeiro select para chamar o segundo, consigo validar o segundo para chamar o terceiro, mas o terceiro está validando apenas o segundo Especialidade, deveria obedecer tbm o primeiro select, mas não consigo pegar a variável Unidade para também incluir na busca do terceiro select Sala, alguém pode ajudar por favor, segue o código em PHP e JS

codigo PHP


<?php
ini_set('display_errors',1);
ini_set('display_startup_erros',1);
error_reporting(E_ALL);
    function obterUnidade() {
        include_once('conexao.php');

        $query = "SELECT * FROM unidades";
        $result = mysqli_query($conexao, $query);

        $json = array();
        
        while($row = mysqli_fetch_array($result)) {
            $json[] = array(
                'codUnidade' => $row['id'],
                'nomUnidade' => $row['nome'],
            );
        }  

        $jsonstring = json_encode($json);
        echo $jsonstring;
    }

    function obterEspecialidade($codUnidade) {
        include_once('conexao.php');

        $query = "SELECT * FROM especialidade WHERE id_unidade = $codUnidade";
        $result = mysqli_query($conexao, $query);

        $json = array();
        while($row = mysqli_fetch_array($result)) {
            $json[] = array(
                'codEspecialidade' => $row['id'],
                'nomEspecialidade' => $row['nome'],
            );
        }

        $jsonstring = json_encode($json);
        echo $jsonstring;
    }

    function obterSala($codEspecialidade){
        include 'conexao.php';

        $query = "SELECT * FROM sala WHERE id_especialidade = $codEspecialidade";
        $result = mysqli_query($conexao, $query);

        $json = array();
        
        while($row = mysqli_fetch_array($result)) {
            $json[] = array(
                'codSala' => $row['id'],
                'nomSala' => $row['nome'],
            );
        }  

        $jsonstring = json_encode($json);
        echo $jsonstring;
    }

    if( isset($_POST['codigoUnidade']) ) {
        $codUnidade = $_POST['codigoUnidade'];
        obterEspecialidade($codUnidade);
    } else if( isset($_POST['codigoEspecialidade']) ) {
        $codEspecialidade = $_POST['codigoEspecialidade'];
        obterSala($codEspecialidade);
    } else {
        obterUnidade();
    }
?>(postagem excluída pelo(a) autor(a))
​ ​ 3  4/4
JS

$(document).ready(function () {
    /* --variaveis para chamar o select por id */
    let $unidade = document.getElementById('unidade')
    let $especialidade = document.getElementById('especialidade')
    let $sala = document.getElementById('sala')

    function carregarUnidade() {
        $.ajax({
            url: 'select.php',
            type: 'POST',
            success: function(response) {
                const unidade = JSON.parse(response);
                let template = '<option class="form-control" selected disabled>-- Seleccione --</option>'
    
                unidade.forEach(unidade => {
                    template += `<option class="form-control" name="unidade" value="${unidade.codUnidade}">${unidade.nomUnidade}</option>`;
                })

                $unidade.innerHTML = template;
            }
        })
    }
    carregarUnidade()

    function carregarEspecialidade(sendDados) {
        $.ajax({
            url: 'select.php',
            type: 'POST',
            data: sendDados,
            success: function(response) {
                const resposta = JSON.parse(response);
                let template = '<option class="form-control" selected disabled>-- Seleccione --</option>'
    
                resposta.forEach(resposta => {
                    template += `<option class="form-control" name="especialidade" value="${resposta.codEspecialidade}">${resposta.nomEspecialidade}</option>`;
                })

                $especialidade.innerHTML = template;
            }
        })
    }
    $unidade.addEventListener('change', () => {
        const codUnidade = $unidade.value

        const sendDados = {
            'codigoUnidade': codUnidade
        }
        
        carregarEspecialidade(sendDados)

        $sala.innerHTML = ''
    })
    function carregarSala(sendDados) {
        $.ajax({
            url: 'select.php',
            type: 'POST',
            data: sendDados,
            success: function(response) {
                const resposta = JSON.parse(response);
                let template = '<option class="form-control" selected disabled>-- Seleccione --</option>'
    
                resposta.forEach(resposta => {
                    template += `<option class="form-control" name="sala" value="${resposta.codSala}">${resposta.nomSala}</option>`;
                })

                $sala.innerHTML = template;
            }
        })
    }
    $especialidade.addEventListener('change', () => {
        const codEspecialidade = $especialidade.value

        const sendDados = {
            'codigoEspecialidade': codEspecialidade
        }
        
        carregarSala(sendDados)
    })
})

Uma dica: quando postar no fórum, por favor coloque o código formatado. Basta selecioná-lo e usar o botão </> do editor:

formatarcodigoguj

perfeito, farei, obrigado