Seu Template de Dados da Jornada do Paciente
Seu Template de Dados da Jornada do Paciente
- Atributos clínicos recomendados
- Marcos essenciais do processo
- Guia de extração do MEDITECH
Atributos da Jornada do Paciente
| Nome | Descrição | ||
|---|---|---|---|
| Episódio do Paciente PatientEpisode | O identificador único de um período de cuidado ou visita do paciente. | ||
| Descrição O Episódio do Paciente funciona como o identificador central (case ID) para a análise. Ele agrupa todos os eventos clínicos, administrativos e financeiros de uma única internação ou visita em uma jornada coesa. No MEDITECH, isso geralmente corresponde ao Número da Conta ou ID da Visita. É fundamental para reconstruir a jornada, calcular o tempo de permanência e analisar os protocolos clínicos. Por que é importante É a chave de caso obrigatória necessária para vincular eventos díspares em uma única instância de processo. Onde obter Módulo de Admissões ou Registro do MEDITECH; geralmente o campo Número da Conta. Exemplos V100938475AC29384755E993847211O229384711 | |||
| Event Timestamp EventTimestamp | A data e hora específica em que a atividade ocorreu. | ||
| Descrição Este atributo registra o momento exato da atividade. Serve para sequenciar eventos cronologicamente e calcular métricas de duração. Timestamps de alta precisão são necessários para analisar tempos de espera, como o intervalo entre triagem e avaliação, ou o tempo de resposta de exames. Por que é importante Necessário para ordenar eventos e calcular tempos de ciclo e vazão. Onde obter Colunas de data/hora de transação nas tabelas de origem. Exemplos 2023-10-15T08:30:00Z2023-10-15T09:15:22Z2023-10-16T14:45:00Z | |||
| Nome da Atividade ActivityName | A ação clínica ou administrativa específica realizada. | ||
| Descrição Este atributo representa o nome da tarefa na jornada do paciente. Captura etapas como "Paciente Registrado", "Medicamento Administrado" ou "Ordem de Alta Emitida". A identificação correta das atividades é crucial para mapear o fluxo. Esses valores costumam vir de códigos de transação ou status de pedidos no prontuário eletrônico. Por que é importante Define as etapas do processo e é necessário para visualizar o mapa do processo. Onde obter Derivado de vários logs de transação (Pedidos OE, Intervenções NUR, Eventos ADM). Exemplos Paciente RegistradoTriagem ConcluídaMedicamento AdministradoResultado Diagnóstico Verificado | |||
| Sistema de Origem SourceSystem | O identificador do sistema de origem dos dados. | ||
| Descrição Identifica a instância MEDITECH ou módulo específico de onde os dados de evento foram extraídos. Em ambientes multi-hospitalares, ajuda a distinguir entre dados de diferentes unidades ou versões do sistema. Este atributo é estático para uma extração de sistema único, mas crítico ao mesclar dados para criar uma visão unificada em uma rede hospitalar. Por que é importante Garante a linhagem e rastreabilidade dos dados em ambientes multi-sistema. Onde obter Codificado rigidamente durante a extração ou configuração do ID do sistema. Exemplos MEDITECH_ExpanseMEDITECH_6.1Hospital_A_Principal | |||
| Última Atualização de Dados LastDataUpdate | O timestamp de quando os dados foram extraídos ou atualizados pela última vez. | ||
| Descrição Indica quando o registro foi processado ou carregado pela última vez na ferramenta de Process Mining. Ajuda na auditoria da atualização dos dados e garante que a análise reflita o estado mais atual do sistema. É diferente do Event Timestamp, pois reflete o tempo da pipeline de dados técnica e não o horário do evento clínico. Por que é importante Crítico para a governança de dados e para garantir que a análise seja feita em dados atualizados. Onde obter Data do sistema no momento da execução do ETL. Exemplos 2023-11-01T00:00:00Z2023-11-02T12:00:00Z | |||
| Departamento Hospitalar HospitalDepartment | A unidade ou departamento específico onde a atividade ocorreu. | ||
| Descrição Identifica a unidade funcional, como 'Emergência', 'Radiologia', 'UTI' ou 'Ala Geral', responsável pela atividade. Este atributo é vital para o dashboard de 'Vazão de Recursos Departamentais'. Permite a segmentação de métricas de desempenho por unidade, ajudando a localizar gargalos em transferências internas e na utilização de recursos. Por que é importante Chave para análise organizacional e identificação de gargalos em unidades específicas. Onde obter Campos de Localização ou Departamento em tabelas de transação. Exemplos Pronto-SocorroRadiologiaUnidade de Terapia IntensivaAla Cirúrgica 3 | |||
| Destino Pós-Alta DischargeDisposition | O destino ou status do paciente no momento da alta. | ||
| Descrição Indica para onde o paciente foi após o episódio, como 'Residência', 'Unidade de Cuidados Especializados', 'Assistência Domiciliar' ou 'Óbito'. Esta é uma métrica de desfecho chave para o dashboard de 'Otimização do Planejamento de Alta'. Analisar isso ajuda a identificar se atrasos na obtenção de vagas em cuidados pós-agudos estão contribuindo para tempos de permanência mais longos. Por que é importante Métrica de desfecho chave para analisar o tempo de permanência e o risco de readmissão. Onde obter Telas de registro ou abstração de alta. Exemplos Alta para ResidênciaTransferido para Hospital Geral de Curta PermanênciaExpiradoEvasão / Alta à Revelia | |||
| Diagnóstico Principal PrimaryDiagnosis | A principal condição médica identificada para o episódio do paciente. | ||
| Descrição Contém o código CID-10 ou a descrição do motivo principal do encontro. Esta é a base da 'Análise de Variantes do Protocolo Clínico'. Ao agrupar os casos pelo Diagnóstico Primário, os gestores clínicos podem comparar os caminhos reais de tratamento com o protocolo clínico ideal para aquela condição específica. Por que é importante Essencial para agrupar casos para analisar protocolos clínicos. Onde obter Módulo de Prontuário Médico ou Resumo de Alta. Exemplos J18.9 - PneumoniaI21.9 - Infarto Agudo do MiocárdioS72.0 - Fratura do Fêmur | |||
| É Readmissão IsReadmission | Sinalizador que indica se este episódio ocorreu dentro de 30 dias de uma alta anterior. | ||
| Descrição Um atributo booleano que retorna verdadeiro se a data de registro atual do paciente estiver dentro de 30 dias da data de alta de um episódio anterior. Isso serve de base para o dashboard 'Readmissão e Qualidade do Cuidado'. Identificar readmissões permite que os analistas rastreiem o episódio anterior para encontrar falhas no planejamento de alta ou no cuidado pós-hospitalar. Por que é importante Métrica de qualidade crítica que impacta o reembolso e os resultados dos pacientes. Onde obter Calculado comparando o StartTime atual com o EndTime do caso anterior para o mesmo MedicalRecordNumber. Exemplos verdadeirofalse | |||
| Médico Responsável AttendingProvider | O médico ou profissional de saúde responsável pela atividade. | ||
| Descrição Registra o nome ou ID do médico, enfermeiro ou técnico que realiza a tarefa. Este atributo alimenta o dashboard de "Velocidade de Desenvolvimento do Plano de Tratamento", atribuindo métricas de eficiência a equipes ou funções específicas. Isso permite analisar recursos para equilibrar cargas de trabalho e identificar necessidades de treinamento. Por que é importante Permite a análise de desempenho de recursos e o equilíbrio da carga de trabalho. Onde obter Campos de Prestador ou Usuário nos logs de atividade. Exemplos Dr. SmithEnf. JonesTécnico Adams | |||
| Nível de Gravidade da Triagem TriageAcuityLevel | A classificação de gravidade atribuída ao paciente na triagem. | ||
| Descrição Indica a urgência da condição do paciente, geralmente em uma escala (ex: 1-5, onde 1 é crítico). Este atributo é central para a 'Análise de Fluxo do Pronto-Socorro'. Permite que os analistas correlacionem tempos de espera com a gravidade do paciente, garantindo que os casos mais críticos sejam priorizados efetivamente. Por que é importante Crítico para analisar a priorização no pronto-socorro e a conformidade de segurança. Onde obter Telas de avaliação de enfermagem de PS ou Triagem. Exemplos 1 - Ressuscitação2 - Emergencial3 - Urgente4 - Pouco Urgente | |||
| Número do Prontuário Médico (MRN) MedicalRecordNumber | Um identificador exclusivo para o paciente em todas as visitas. | ||
| Descrição O Número do Prontuário Médico (MRN) identifica exclusivamente o paciente na instituição, de forma distinta do ID do episódio. Permite vincular vários episódios do mesmo paciente ao longo do tempo. Este atributo é vital para o dashboard de "Readmissão e Qualidade do Cuidado", permitindo detectar retornos em até 30 dias após a alta. Por que é importante Permite análises entre episódios e visões centradas no paciente. Onde obter Índice mestre de pacientes ou tabela de registro. Exemplos MRN-100293MRN-55928388291002 | |||
| Tempo de Permanência LengthOfStay | Duração total do episódio do paciente, da admissão à alta. | ||
| Descrição Uma métrica calculada que representa o tempo total decorrido entre o horário de início do registro/internação e o horário da alta. É a principal métrica para o dashboard de 'Análise de Tendência do Tempo de Permanência'. Serve como um indicador de eficiência de alto nível e costuma ser usado para normalizar comparações entre diferentes departamentos ou grupos de diagnóstico. Por que é importante KPI principal de eficiência para operações hospitalares. Onde obter Calculado a partir do StartTime do Registro vs Alta. Exemplos 4 dias e 2 horas45 minutos12 dias | |||
| Tipo de Paciente PatientType | Categorização da visita do paciente (ex: Internação, Ambulatorial, Emergência). | ||
| Descrição Classifica a natureza da visita hospitalar. Valores comuns incluem 'Internação', 'Ambulatorial', 'Emergência' ou 'Observação'. Essa classificação é fundamental para filtrar e comparar processos, pois o padrão de cuidado e a duração esperada diferem significativamente por tipo. Este campo auxilia no dashboard de 'Otimização do Planejamento de Alta' ao segmentar as expectativas de tempo de permanência. Por que é importante Segmentação essencial para comparação de processos (Internado vs. Ambulatorial). Onde obter Tabelas de Internação ou Visita (ex: AdmVisits.Status). Exemplos InternaçãoEmergencial (Emergency)Cirurgia AmbulatorialObservação | |||
| Categoria da Ordem OrderCategory | Classificação de pedidos clínicos (ex: Lab, Radiologia, Consulta). | ||
| Descrição Agrupa pedidos em categorias mais amplas, como 'Laboratório', 'Radiologia', 'Dietético' ou 'Consulta'. Isso é essencial para o dashboard de 'Tempo de Resposta dos Serviços Diagnósticos'. Permite a separação de workflows para analisar tempos de ciclo específicos para imagem versus exames de sangue, que costumam ter gargalos diferentes. Por que é importante Segmenta fluxos de diagnóstico e tratamento. Onde obter Campos de categoria do módulo Order Entry (OE). Exemplos LaboratórioRadiologiaEnfermagemFarmácia | |||
| É Violação de Adesão IsAdherenceViolation | Sinalizador que indica se o caso se desviou do protocolo clínico padrão. | ||
| Descrição Um sinalizador booleano definido como verdadeiro se a sequência de atividades não corresponder ao modelo de referência definido para o Diagnóstico Primário do paciente. Isso auxilia na 'Análise de Variantes do Protocolo Clínico'. Permite a filtragem rápida de casos 'não conformes' para investigar por que o padrão de atendimento não foi seguido. Por que é importante Identifica rapidamente desvios e variâncias no processo. Onde obter Calculado por algoritmos de verificação de conformidade. Exemplos verdadeirofalse | |||
| Nome do Medicamento MedicationName | O nome do medicamento administrado. | ||
| Descrição Captura o medicamento específico envolvido nos eventos de 'Medicamento Administrado'. Isso é necessário para o dashboard de 'Conformidade na Administração de Medicamentos'. Permite que a liderança de enfermagem verifique se medicamentos específicos de alto risco ou críticos em relação ao tempo (como antibióticos para sepse) são entregues dentro das janelas terapêuticas adequadas. Por que é importante Necessário para análise de conformidade clínica e segurança. Onde obter Módulos de Farmácia (PHA) ou Verificação à Beira do Leito (BMV). Exemplos ParacetamolVancomicinaHeparinaInsulina | |||
| Origem da Internação AdmitSource | De onde o paciente veio (ex: Casa, Transferência, Encaminhamento). | ||
| Descrição Descreve a origem da internação do paciente, como 'Encaminhamento Médico', 'Pronto-Socorro' ou 'Transferência de outro Hospital'. Isso fornece contexto sobre como os pacientes entram no sistema. É útil para entender os padrões de fluxo de entrada e seu impacto na 'Análise de Fluxo do Pronto-Socorro' e no planejamento de recursos. Por que é importante Fornece contexto sobre a entrada de pacientes e canais de demanda. Onde obter Dados de registro de internações. Exemplos Sala de EmergênciaEncaminhamento ClínicoTransferência de Unidade de Cuidados Continuados (SNF) | |||
| Tempo de Espera na Triagem TriageWaitTime | Tempo de duração entre o registro e a conclusão da triagem. | ||
| Descrição A duração calculada entre o registro e a conclusão da triagem. Alimenta diretamente o KPI de "Tempo Médio de Vazão da Triagem". Monitorar esse tempo ajuda os gestores do pronto-socorro a ajustar a escala nos horários de pico para garantir a segurança do paciente. Por que é importante Métrica operacional chave para Prontos-Socorros. Onde obter Diferença calculada entre timestamps de atividades específicas. Exemplos 15 minutos1 hora e 20 minutos | |||
| Valor da Cobrança ChargeAmount | O valor financeiro associado a uma atividade ou serviço específico. | ||
| Descrição Representa o custo ou cobrança lançada para um evento, como um exame ou diária. Embora financeiro, reflete a intensidade de recursos. Ao consolidar esses dados, é possível entender o impacto financeiro das variações de processo, mantendo o foco no fluxo clínico. Por que é importante Adiciona uma dimensão financeira à análise de processos. Onde obter Módulo de Faturamento ou BAR (Contas a Receber). Exemplos 150.001200.5045.00 | |||
Atividades da Jornada do Paciente
| Atividade | Descrição | ||
|---|---|---|---|
| Diagnóstico Documentado | O momento em que o médico insere um diagnóstico codificado (CID-10) no prontuário. Isso costuma disparar protocolos clínicos específicos. | ||
| Por que é importante Permite a 'Análise de Variantes do Protocolo Clínico' ao categorizar o caso. Crítico para agrupar pacientes para comparação. Onde obter MEDITECH ABS (Abstracting) ou Prontuários Médicos. Capturado quando os códigos de diagnóstico são associados à conta. Captura Registrado quando a transação de Inserção de Diagnóstico é executada Tipo de evento explicit | |||
| Medicamento Administrado | Registra a entrega real do medicamento ao paciente pela equipe de enfermagem. Geralmente capturado via leitura de código de barras à beira do leito. | ||
| Por que é importante Apoia a "Conformidade na Administração de Medicamentos". Identifica riscos de segurança e interrupções de fluxo nas unidades de enfermagem. Onde obter MEDITECH PHA (Farmácia) ou eMAR (Registro Eletrônico de Administração de Medicamentos). O campo "AdminDateTime" no histórico de administração. Captura Registrado quando a transação de Administração de Medicamentos é executada Tipo de evento explicit | |||
| Paciente Recebeu Alta | O encerramento administrativo da visita. O paciente saiu fisicamente e o leito foi liberado. | ||
| Por que é importante O fim formal do processo. Usado para calcular o Tempo de Permanência final e definir a janela de readmissão de 30 dias. Onde obter MEDITECH ADM (Admissões). Campo "DischargeDateTime" no registro da visita. Captura Registrado quando a transação de Alta do Paciente é executada Tipo de evento explicit | |||
| Paciente Registrado | Este evento marca a criação administrativa do episódio no sistema. Captura o ponto inicial de entrada no módulo MEDITECH ADM (Admissões). | ||
| Por que é importante Estabelece o início da jornada do paciente e os cálculos de tempo de ciclo. Essencial para calcular o Tempo Total de Permanência. Onde obter Módulo MEDITECH ADM. Extraído da tabela "Admissões", especificamente do campo "AdmitDateTime" ou do timestamp de criação do log de transação. Captura Registrado quando a transação de Nova Visita é executada Tipo de evento explicit | |||
| Paciente Transferido | Indica o movimento físico de um paciente de um local (Unidade/Quarto/Leito) para outro. Rastreia o fluxo pelo hospital. | ||
| Por que é importante Chave para 'Gargalos em Transferências Internas'. Durasões de transferência altas indicam disputa por recursos ou atrasos no transporte interno. Onde obter MEDITECH ADM (Admissões). Capturado a partir dos logs de transação de "Histórico de Localização" ou "Quarto/Leito". Captura Registrado quando a transação de Transferência de Paciente é executada Tipo de evento explicit | |||
| Pedido de Alta Emitido | O momento em que o médico assina a ordem autorizando a alta. Isso marca o início da fase de "Planejamento de Saída". | ||
| Por que é importante Define a linha de base para o 'Tempo de Antecedência no Planejamento de Alta'. A lacuna entre isso e a partida real representa a ineficiência operacional. Onde obter MEDITECH OE (Inserção de Pedidos). Filtre pedidos por Categoria = Alta. Captura Registrado quando a transação de Inserção de Pedido é executada Tipo de evento explicit | |||
| Pedido realizado | Registra a solicitação de serviço, medicamento ou exame. Este é o evento gatilho para as atividades clínicas seguintes. | ||
| Por que é importante Estabelece a linha de base para o KPI de 'Tempo de Resposta dos Serviços Diagnósticos'. Comparar isso com o tempo de execução identifica atrasos na entrega do serviço. Onde obter Módulo MEDITECH OE (Inserção de Pedidos). Capturado da tabela "OeOrders" usando o campo Data/Hora do Pedido. Captura Registrado quando a transação de Inserção de Pedido é executada Tipo de evento explicit | |||
| Resultado Diagnóstico Verificado | Indica que um exame diagnóstico (Laboratório ou Radiologia) foi realizado e os resultados foram assinados por um técnico ou radiologista. Isso fecha efetivamente o ciclo de um pedido de diagnóstico. | ||
| Por que é importante O ponto final para o "Tempo de Resposta de Serviços Diagnósticos". Essencial para analisar gargalos em departamentos de apoio. Onde obter Módulos MEDITECH LAB ou ITS (Serviços de Imagem e Terapia). Capturado a partir de mudanças no status do resultado para Verificado ou Assinado. Captura Registrado quando o campo de status muda para Verificado Tipo de evento explicit | |||
| Triagem Concluída | Indica a conclusão da avaliação inicial de enfermagem no Pronto-Socorro. Define o nível de acuidade e o score de gravidade do paciente. | ||
| Por que é importante Crítico para o dashboard de Análise de Fluxo do Pronto-Socorro para medir vazão e tempos de espera. Onde obter Módulo MEDITECH EDM (Gestão de Pronto-Socorro). Derivado de mudanças de status no rastreador EDM ou do timestamp do documento de Avaliação de Triagem. Captura Registrado quando o campo de status muda para Triado Tipo de evento explicit | |||
| Acompanhamento Agendado | O agendamento de uma consulta futura. Esta atividade garante a continuidade do cuidado após a alta. | ||
| Por que é importante Apoia a análise de "Agendamento de Consultas de Retorno". Correlaciona-se com menores taxas de readmissão. Onde obter MEDITECH SCH (Agendamento). Inferido vinculando um novo registro de Agendamento criado próximo à data de alta ao ID do paciente. Captura Derivado da comparação entre o campo Data de Criação do Agendamento e a Data da Alta Tipo de evento inferred | |||
| Amostra Coletada | Marca a coleta física de uma amostra biológica para análise laboratorial. Esta atividade conecta o pedido ao processamento do exame. | ||
| Por que é importante Etapa granular frequentemente responsável por atrasos no ciclo de diagnóstico. Útil para separar atrasos da enfermagem de atrasos do laboratório. Onde obter Módulo MEDITECH LAB. Geralmente capturado quando o flebotomista lê o código de barras ou atualiza o status da amostra para Coletado. Captura Registrado quando a transação Coletar Amostra é executada Tipo de evento explicit | |||
| Consultoria Concluída | A conclusão da avaliação do especialista. Geralmente inferida pelo registro de um documento específico (ex: "Nota de Consulta de Cardiologia"). | ||
| Por que é importante O ponto final para medir a responsividade do especialista. Vital para garantir a progressão ágil do cuidado. Onde obter MEDITECH PCM (Gestão de Pedidos do Prestador) ou EMR. Inferido de timestamps de criação de documentos com títulos específicos. Captura Compara o campo de status antes e depois Tipo de evento inferred | |||
| Plano de Cuidado Iniciado | Representa a criação ou atribuição de um plano de cuidado de enfermagem ou interdisciplinar. Corresponde ao conceito de "Plano de Tratamento Desenvolvido". | ||
| Por que é importante Mede a "Velocidade de Desenvolvimento do Plano de Tratamento". Atrasos aqui sugerem falhas na tomada de decisão clínica. Onde obter MEDITECH PCS (Sistema de Cuidado ao Paciente) ou Gestor de Cuidados. Timestamp de quando um Plano de Cuidado padrão é aplicado ao paciente. Captura Registrado quando a transação Adicionar Plano de Cuidado é executada Tipo de evento explicit | |||
| Solicitação de Consulta Enviada | Um tipo específico de pedido solicitando a opinião de um especialista. Isso inicia o cronômetro no dashboard 'Resposta de Consultoria Especializada'. | ||
| Por que é importante Identifica gargalos na coordenação de cuidados multidisciplinares. Longos tempos de espera aqui prolongam o tempo de permanência. Onde obter MEDITECH OE (Inserção de Pedidos). Identificado filtrando "OeOrders" para Categoria = Consulta. Captura Registrado quando a transação de Inserção de Pedido é executada Tipo de evento explicit | |||
Guias de Extração
Etapas
Identifique o Servidor do Data Repository: Localize a instância do Microsoft SQL Server que hospeda seu MEDITECH Data Repository (DR). Ele é diferente do banco de dados transacional M-AT ou baseado em arquivos. Você precisará de credenciais de apenas leitura (geralmente uma conta de serviço).
Determine a Versão do Schema: As estruturas do MEDITECH DR variam ligeiramente entre Magic, Client/Server (6.x) e Expanse. A consulta abaixo usa convenções de nomenclatura padrão (ex: AdmVisits, OeOrders). Verifique esses nomes de tabela no Object Explorer do seu SQL Server Management Studio (SSMS) local.
Defina o Escopo: Identifique a tabela principal para visitas de pacientes. Geralmente chama-se AdmVisits, RegAcct ou AbstractData, dependendo da sua configuração. A consulta usa AdmVisits como âncora para o Episódio do Paciente.
Prepare o Ambiente SQL: Abra o SSMS e conecte-se ao DR. Abra uma nova janela de consulta. Certifique-se de estar no banco de dados correto (geralmente chamado livedb ou similar).
Configure os Parâmetros: No script SQL fornecido, substitua os espaços reservados para intervalos de datas (ex: '2023-01-01') e identificadores de unidade se o seu DR hospedar vários sites.
Execute a Extração: Execute o script T-SQL completo. Ele utiliza Common Table Expressions (CTEs) para primeiro definir a população de interesse e depois UNION ALL em várias fontes de dados para criar um event log padronizado.
Trate Atributos Nulos: A consulta inclui lógica para lidar com possíveis NULLs em timestamps (usando COALESCE onde apropriado) e garante que as chaves de junção críticas (SourceID/VisitID) estejam presentes.
Verifique Dados de Triagem e Emergência: O MEDITECH armazena dados de prontos-socorros em módulos específicos. Verifique se as tabelas EdVisits ou NurInterventions estão povoadas se estiver analisando workflows de Emergência.
Valide Categorias de Pedidos: A consulta separa pedidos gerais, consultas e pedidos de alta com base em urns de Categoria ou mnemônicos. Talvez seja necessário ajustar as cláusulas WHERE específicas para corresponder ao dicionário mnemônico de sua unidade.
Exporte os Dados: Assim que os resultados retornarem, clique com o botão direito na grade de resultados no SSMS e selecione "Save Results As CSV". Verifique se os cabeçalhos foram incluídos.
Formatação Final: Abra o CSV para verificar se os formatos de data estão em conformidade com ISO 8601 (AAAA-MM-DD HH:MM:SS) antes de importar para o ProcessMind.
Configuração
- Acesso ao Banco de Dados: Exige permissões de db_datareader no banco de dados SQL do MEDITECH DR.
- Intervalo de Datas: Recomenda-se uma janela de extração de 3 a 6 meses de pacientes que receberam alta para garantir ciclos completos.
- Filtragem de Unidades: Se o DR contiver dados de múltiplas unidades, filtre a CTE BaseVisits por FacilityID ou SourceSystemID.
- Definição de Episódio: O script utiliza o VisitID exclusivo (frequentemente chamado de Número da Conta ou Número do Episódio) como o Case ID.
- Desempenho: A consulta utiliza uma âncora CTE para limitar o intervalo de varredura. Certifique-se de que existam índices em AdmitDate e DischargeDate na tabela AdmVisits para um desempenho ideal.
- Latência: As transferências do Data Repository podem ter uma latência de 15 minutos a 24 horas, dependendo da configuração do site. Confirme o timestamp de LastDataUpdate.
a Consulta de Exemplo sql
/* MEDITECH Data Repository T-SQL Extraction for ProcessMind */
/* Process: Patient Journey */
/* Dialect: T-SQL */
WITH BaseVisits AS (
/* Define the population: Discharged patients within a date range */
SELECT
V.VisitID,
V.PatientID,
V.AccountNumber AS MedicalRecordNumber,
V.AdmitDateTime,
V.DischargeDateTime,
V.FacilityID,
V.PatientType,
V.AttendingProviderID,
V.DischargeDisposition,
NULLIF(DATEDIFF(MINUTE, V.AdmitDateTime, V.DischargeDateTime), 0) / 1440.0 AS LengthOfStay,
/* Flag readmissions logic would go here, simplified as 0 for base script */
0 AS IsReadmission
FROM
[YourDatabaseName].[dbo].[AdmVisits] V
WHERE
V.DischargeDateTime >= '2023-01-01'
AND V.DischargeDateTime < '2023-04-01'
AND V.Status = 'DIS' /* Discharged Status */
),
PatientDiagnoses AS (
/* Helper CTE for Primary Diagnosis to avoid duplicates in joins */
SELECT
D.VisitID,
MAX(D.ICDCode) AS PrimaryDiagnosis
FROM
[YourDatabaseName].[dbo].[AbsDiagnoses] D
WHERE
D.Rank = 1 /* Primary Diagnosis Rank */
GROUP BY
D.VisitID
),
TriageData AS (
/* Helper CTE for Triage Acuity */
SELECT
T.VisitID,
MAX(T.AcuityLevel) AS TriageAcuityLevel
FROM
[YourDatabaseName].[dbo].[EdTriage] T
GROUP BY
T.VisitID
)
/* 1. Patient Registered */
SELECT
V.VisitID AS PatientEpisode,
'Patient Registered' AS ActivityName,
V.AdmitDateTime AS EventTimestamp,
'MEDITECH_ADM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
V.FacilityID AS HospitalDepartment,
V.AttendingProviderID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
BaseVisits V
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
V.AdmitDateTime IS NOT NULL
UNION ALL
/* 2. Triage Completed */
SELECT
V.VisitID AS PatientEpisode,
'Triage Completed' AS ActivityName,
ED.TriageDateTime AS EventTimestamp,
'MEDITECH_ED' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
'Emergency Department' AS HospitalDepartment,
ED.TriageNurseID AS AttendingProvider,
V.PatientType,
ED.AcuityLevel AS TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[EdTriage] ED
INNER JOIN BaseVisits V ON ED.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
WHERE
ED.TriageDateTime IS NOT NULL
UNION ALL
/* 3. Order Placed (General) */
SELECT
V.VisitID AS PatientEpisode,
'Order Placed' AS ActivityName,
O.OrderDateTime AS EventTimestamp,
'MEDITECH_OE' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
O.Department AS HospitalDepartment,
O.OrderingProviderID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[OeOrders] O
INNER JOIN BaseVisits V ON O.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
O.Category NOT IN ('CONSULT', 'DISCHARGE') /* Exclude specific types handled elsewhere */
UNION ALL
/* 4. Specimen Collected */
SELECT
V.VisitID AS PatientEpisode,
'Specimen Collected' AS ActivityName,
L.CollectionDateTime AS EventTimestamp,
'MEDITECH_LAB' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
'Laboratory' AS HospitalDepartment,
L.CollectedBy AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[LabSpecimens] L
INNER JOIN BaseVisits V ON L.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
L.CollectionDateTime IS NOT NULL
UNION ALL
/* 5. Diagnostic Result Verified */
SELECT
V.VisitID AS PatientEpisode,
'Diagnostic Result Verified' AS ActivityName,
R.VerifiedDateTime AS EventTimestamp,
'MEDITECH_LAB' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
'Laboratory' AS HospitalDepartment,
R.VerifiedBy AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[LabResults] R
INNER JOIN BaseVisits V ON R.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
R.VerifiedDateTime IS NOT NULL
UNION ALL
/* 6. Diagnosis Documented */
SELECT
V.VisitID AS PatientEpisode,
'Diagnosis Documented' AS ActivityName,
DX.EntryDateTime AS EventTimestamp,
'MEDITECH_ABS' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
V.FacilityID AS HospitalDepartment,
DX.ProviderID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[AbsDiagnoses] DX
INNER JOIN BaseVisits V ON DX.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
DX.EntryDateTime IS NOT NULL
UNION ALL
/* 7. Care Plan Initiated */
SELECT
V.VisitID AS PatientEpisode,
'Care Plan Initiated' AS ActivityName,
N.CreateDateTime AS EventTimestamp,
'MEDITECH_NUR' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
N.NurseUnit AS HospitalDepartment,
N.NurseID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[NurPlan] N
INNER JOIN BaseVisits V ON N.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
N.CreateDateTime IS NOT NULL
UNION ALL
/* 8. Medication Administered */
SELECT
V.VisitID AS PatientEpisode,
'Medication Administered' AS ActivityName,
M.AdminDateTime AS EventTimestamp,
'MEDITECH_PHA' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
M.AdminLocation AS HospitalDepartment,
M.AdministeredBy AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[PhaMedAdmin] M
INNER JOIN BaseVisits V ON M.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
M.Status = 'ADMINISTERED'
UNION ALL
/* 9. Consult Request Sent */
SELECT
V.VisitID AS PatientEpisode,
'Consult Request Sent' AS ActivityName,
O.OrderDateTime AS EventTimestamp,
'MEDITECH_OE' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
O.Department AS HospitalDepartment,
O.OrderingProviderID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[OeOrders] O
INNER JOIN BaseVisits V ON O.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
O.Category = 'CONSULT'
UNION ALL
/* 10. Consultation Completed */
SELECT
V.VisitID AS PatientEpisode,
'Consultation Completed' AS ActivityName,
O.CompletedDateTime AS EventTimestamp,
'MEDITECH_OE' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
O.Department AS HospitalDepartment,
O.OrderingProviderID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[OeOrders] O
INNER JOIN BaseVisits V ON O.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
O.Category = 'CONSULT'
AND O.Status = 'COMPLETED'
AND O.CompletedDateTime IS NOT NULL
UNION ALL
/* 11. Patient Transferred */
SELECT
V.VisitID AS PatientEpisode,
'Patient Transferred' AS ActivityName,
TX.TransferDateTime AS EventTimestamp,
'MEDITECH_ADM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
TX.ToLocation AS HospitalDepartment,
NULL AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[AdmRoomTx] TX
INNER JOIN BaseVisits V ON TX.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
TX.TransferDateTime IS NOT NULL
UNION ALL
/* 12. Discharge Order Written */
SELECT
V.VisitID AS PatientEpisode,
'Discharge Order Written' AS ActivityName,
O.OrderDateTime AS EventTimestamp,
'MEDITECH_OE' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
O.Department AS HospitalDepartment,
O.OrderingProviderID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[OeOrders] O
INNER JOIN BaseVisits V ON O.VisitID = V.VisitID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
O.Category = 'DISCHARGE'
OR O.Mnemonic LIKE '%DISCHARGE%'
UNION ALL
/* 13. Patient Discharged */
SELECT
V.VisitID AS PatientEpisode,
'Patient Discharged' AS ActivityName,
V.DischargeDateTime AS EventTimestamp,
'MEDITECH_ADM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
V.FacilityID AS HospitalDepartment,
V.AttendingProviderID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
BaseVisits V
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
V.DischargeDateTime IS NOT NULL
UNION ALL
/* 14. Follow-up Booked */
SELECT
V.VisitID AS PatientEpisode,
'Follow-up Booked' AS ActivityName,
S.BookDateTime AS EventTimestamp,
'MEDITECH_SCH' AS SourceSystem,
GETDATE() AS LastDataUpdate,
V.MedicalRecordNumber,
S.ApptDepartment AS HospitalDepartment,
S.ProviderID AS AttendingProvider,
V.PatientType,
T.TriageAcuityLevel,
D.PrimaryDiagnosis,
V.DischargeDisposition,
V.LengthOfStay,
V.IsReadmission
FROM
[YourDatabaseName].[dbo].[SchAppt] S
INNER JOIN BaseVisits V ON S.PatientID = V.PatientID
LEFT JOIN PatientDiagnoses D ON V.VisitID = D.VisitID
LEFT JOIN TriageData T ON V.VisitID = T.VisitID
WHERE
S.BookDateTime > V.AdmitDateTime
AND S.BookDateTime <= DATEADD(day, 30, V.DischargeDateTime) /* Logic to link appt to episode */
AND S.Status NOT IN ('CANCELLED', 'NOSHOW');