Changelog
O que há de novo.
Cada melhoria para a plataforma, como ele envia.
· SecurityService
$ tudo registra uma divulgação quando um destinatário é nomeado
O gráfico inteiro em uma resposta é a maior coisa única que este sistema dá E até agora escreveu uma linha de auditoria PHI e nada mais. Isso foi certo para o caso foi construído para — as telas da própria prática leram um gráfico através do e uma contabilidade em que cada leitura interna aparece como a divulgação à própria prática é uma das em que os lançamentos reais são inacabáveis. Foi errado para o outro caso. Um oficial de registos a responder a um pedido §164.524 em FHIR em vez de C-CDA estava fazendo a mesma liberação através de um caminho que não Registre-o, que é o exato §164.528 buraco que o livro existe para fechar. O destinatário é o sinal, e permanece OPTIONAL aqui enquanto permanece necessário no C-DDA. O endpoint do documento existe para produzir algo que deixa o construindo, então um destinatário sem nome há sempre uma resposta faltando; este tem Um ouvinte interno legítimo. A descrição carrega o tamanho, e diz isso explicitamente quando a tampa truncada O recorde. "Record completo" e "as mil entradas mais recentes" são respostas diferentes para um paciente perguntando o que a outra prática recebeu, e A diferença é o que alguém que investiga uma má entrega precisa.
· kamo-internal
O distintivo não lido fica vermelho, pulsa e senta-se no hexágono
Três coisas, tudo sobre um distintivo que ninguém repara. Era `--presença-color `, por isso era GREEN sempre que o membro estava online — o um estado em que é menos provável ser visto, porque um disco verde em uma Cabeça de borda verde lê como parte da cabeça. Agora é o mesmo vermelho todos os outros "Vai e faz alguma coisa" marca neste cromado usa, com uma contagem de brancos mais ousada. Ele sentou-se no topo:-6px/direita:-6px, que é o canto da caixa delimitadora SQUARE. A o hexágono deixa os cantos vazios, então o distintivo flutuava um quarto da largura Livre da forma, ligado ao nada. O polígono é um viewBox 0- 100 esticado sobre um quadrado, então seu vértice superior direito é exatamente (75%, 6,7%) — o crachá é agora centrou-se ali e sobrepõe-se a fronteira. E usa a atenção de navegação pulsar os controles legais e cartão de tempo já usar, em vez de uma segunda animação três pixels de distância que um membro teria aprender separadamente. Juntar-se à classe compartilhada significa degradar o movimento reduzido vem com ele: os anéis param, o conde e sua permanência vermelha.
· kamo-internal
Reconciliação bancária sobre o ciclo de receita de cuidados de saúde
O último ponto final da EHR sem um chamador, e pertence ao lado dos outros seis As filas de ciclos de receitas em vez de em qualquer lugar novo. A diferença entre o posto e o banco. Uma remessa do pagador diz que foi enviada sem depósito correspondente é um erro de postagem ou dinheiro que nunca chegou, e apenas o segundo tem um relógio sobre ele: é recuperável enquanto os registros do próprio pagador Mostra-o e não depois. A aba não tem conta porque o resumo de faturamento não relata um — ele mostra o que ele carregou ao invés de um número derivado de outro lugar, que é a opção honesta até que o resumo o carregue.
· kamo-internal
Quem perguntou — Callers não reconhecidos e divulgações da Parte 2
Duas filas de conformidade que foram gravadas no servidor e nunca foram mostradas. Chamadores desconhecidos. Cada pedido de intercâmbio de entrada que não pode ser atribuído a um parceiro é mantido em vez de deixado cair, porque um parceiro cujo a credencial ficou estagnada e alguém sondando o endpoint parecer idêntico até Um humano lê-os. Tonificado crítico com zero como o valor esperado, e o estado vazio diz assim — caso contrário uma lista vazia lê como uma funcionalidade que não é trabalhando em vez de como a resposta que você quer. PARTE 2 DIVULGAÇÕES 42 CFR Parte 2 é uma obrigação distinta da HIPAA: suas próprias regras de consentimento, sua própria contabilidade de três anos, suas próprias sanções. Misturando-o na lista geral de divulgação faria a obrigação separada invisível, que é toda a razão pela qual o respondedor rastreá-lo separadamente no Primeiro lugar.
· kamo-internal
Resolver registros duplicados, e gravar os que não são
O registro previne duplicatas; nada poderia corrigir as já existentes — de uma importação, uma reserva telefônica tomada antes do registro foi encontrado, um casado Nome. Os endpoints de mesclagem e não-uma-match não tinham nenhum chamador. A direcção é nomeada em pleno. Ambas as mesclagens são oferecidas como botões separados dizendo quem sobrevive e quem se torna um ponteiro, e o confirma repeti-lo: "fusão A em B" é ambígua em uma tela mostrando ambos, e fundindo o errado Ao redor enterra o gráfico que tinha a história nele. "Pessoas diferentes" é a metade que fica esfolada. Gêmeos, pais e filhos compartilhar um nome, um pai e um filho — estes são oferecidos como duplicatas em cada registro e cada revisão até que alguém registre o contrário, e um par re-examinado para sempre é um par que alguém eventualmente se funde por engano. O prompt diz que gravação consegue para que não leia como contabilidade. Gated on MERGE PATIENT RECORDS, que não está deliberadamente implícito por ser capaz para registrar: mesclar é a coisa mais prejudicial que este módulo faz, e a direita existe para que uma prática pode mantê-lo a uma lista muito mais curta do que "a recepção".
· kamo-internal
Um interruptor de conversa ao lado de cada conversa maximizada
ChatSwitcherColumn monta conversas Painel ao lado de uma janela de chat maximizada conteúdo próprio, para que um membro possa trocar conversas sem sair da janela. ToolDock constrói uma sempre que a entrada da plataforma de uma janela é marcada chatSwitcher (chat, suporte, social, sms, ai-chat) E a janela em si é maximizado, e dá-lo para um novo slot switcher no ToolWindowShell, que só mostra- o enquanto a janela é realmente maximizada. Clicando em uma linha de chamadas openConversation( linha, { maximizado: true }), que a janela da ferramenta armazena já honra em cada caminho, despromovendo qualquer janela que fosse maximizada. A preferência de colapso da própria coluna passa pela mesma **************************** Conversas de forma O painel já utiliza para a sua preferência balde, sob o seu próprio chatSwitcher chave colapsada, ea Pane em si é montado com **************** então o duas montagens simultâneas (esta coluna e o slide do Centro de Interação painel) nunca bater na aba salva do outro.
· kamo-shared-library
A primeira implementação da política de cumprimento
CumprimentoA Politica declarou suportes/criarCompromisso desde que foi escrita e um grep repo-wide retornou exatamente uma linha: a declaração. Sua trabalho foi inlined incondicionalmente no processoOrderPaid, que constrói um Pedido de preenchimento em forma de envio para cada linha com uma oferta independente do que foi vendido. Um Spring @Service com injeção do construtor — um NOVO padrão para esta política família, não uma copiada: VarejoInventárioA política nunca é instanciada ou Injectado, então todos os membros da família estavam mortos. supports() corresponde ao EngagementType.SERVICE diretamente, nunca o vocabulário: PROCURAMENTO também mapeia para EngajamentoVocabulário.SERVIÇO, mas é o lado do comprador de uma ordem de vendedor e nunca deve levantar um ServiceJob. É conservador. porque o caminho da ordem pára na primeira política que diz sim. Compromisso não pode navegar para a sua Ordem — o FK está em Order.commitment com No inverso — assim OrderRepository ganha findByCommitmentUid para alcançar o foto do endereço. A Ordem de Cumprimento retornada fica por salvar; o chamador Já o salva. Também amplia a guarda de consulta de um pacote para toda a biblioteca. Três por-package Guards deixou ~50 arquivos de @Query cobertos por nada, incluindo cada repositório de comércio — que é como a nova consulta acima veio a ser acredita-se validado quando não foi. Todas as 746 análises hoje.
· kamo-internal
Visitar preparação, cancelamento e recall do lote vacinal
Os últimos parâmetros sem um ecrã. Cancel, além de não aparecer no dia. Eles eram uma ação a menos um do outro e eles não são a mesma coisa: alguém nos disse, então o espaço é liberado, não é e não conta contra o paciente. Três diferentes Consequências que um único botão teria escondido. Pergunta-se a razão. do que presumimos. PREPARAÇÃO DE VISITAÇÃO, debaixo do dia — a mesma mesa olhando quinze dias à frente. Elegibilidade que ninguém verificou é uma visita que é entregue e não paga, barato para corrigir o dia anterior e impossível depois. Autorização com dois visitas à esquerda é tratamento que pára o curso médio, e o paciente é aquele que Descobre, à porta. Uma visita deixada aberta segura o gráfico, mantém a nota não assinado e mantém o encontro inacreditável — geralmente alguém foi interrompido, e a fila é como ela é notada na mesma semana em vez de no final do mês. VACCINE LOT RECORD, sob as filas de segurança, como uma busca em vez de uma fila: a questão não existe até um fabricante ou um departamento de saúde nomear um E depois o treino tem horas para encontrar todos os que o receberam. Este é o A única razão pela qual o número do lote está indexado.
· kamo-internal
Problems, open orders and results
The clinician's working views. The endpoints existed; the chart showed a summary and nothing you could work from. THE PRESCRIBING BANNER IS THE POINT OF THE PANEL. An allergy list that has never been reviewed and one that is genuinely empty look identical on every screen that simply renders the list — and one of them is a clinical assertion somebody made while the other means nobody has asked. The server already tracks which; this says so, before somebody prescribes. OPEN ORDERS ARE TONED BY expectedBy, NOT BY AGE. The server stores an expected date precisely so "overdue" is a fact rather than a feeling: an order placed three weeks ago and due next month is fine, and one due yesterday is not. An order placed and never resulted is the failure this module has a closure status for — the result goes to a fax machine, or never comes, and nothing on a normal screen counts the days. A result opens its own trend rather than standing alone. One potassium of 5.4 means something different from the fourth in a row. The purpose of use is named by the SCREEN on every read, because only the screen knows why it is open — and a purpose guessed at the server is a guess printed in a legal document handed to a patient.
· kamo-internal
O seguro de um paciente, as reclamações e a restrição de auto-pagamento
Todo o ciclo de receita prática já vive sob /commerce; a metade PER-PATIENT não tinha tela — a recepção não podia ver quem paga antes de uma visita, e nada mostrou se a prática era permitida a cobrar em tudo. O BANER DE RESTRIÇÃO lidera o painel. paga fora do bolso na totalidade pode exigir que o serviço não é divulgado ao seu Plano de saúde. A facturação, de qualquer forma, é uma revelação que eles explicitamente proibiam — é uma certo, não uma preferência de faturamento, e tem que ser visível antes de alguém Apresenta uma reclamação em vez de ser detectável posteriormente. O banner também diz o que a restrição NÃO bloqueia: uma referência, a lista de medicamentos, ou registros que chegam a um clínico tratá-los. Lendo-o como "Esconder isto de todos" retém uma lista de medicamentos da pessoa prestes a prescrever contra ela, transformando uma regra de conformidade num problema de segurança. Uma cobertura que nunca foi verificada diz isso em vez de mostrar um branco — é uma tarefa frontal, não dados em falta. Um pedido não remunerado mostra a sua oportunidade prazo de depósito, que é o número que decide se o dinheiro é recuperável.
· kamo-internal
Registrar um paciente, com a verificação duplicada primeiro
O botão Registro trocou as abas para Localizar e não fez mais nada — PatientSearchPanel levou um callback noRegister que nada nunca passou, então uma prática não poderia adicionar um paciente através da aplicação. O DUPLICATE CONTROLE RUNS ANTES DO REGISTRO É CRIADO, e fica registrado desactivado até ter sido executado. Um gráfico duplicado divide o histórico de alguém em dois e a única reparação é uma fusão — que este módulo em si chama de mais prejudicial operação, silencioso e muito difícil de desfazer. Uma viagem de ida e volta é melhor que isso. O registo está fechado no cheque que tem corrido, não nele tendo voltado limpo: gêmeos compartilham um sobrenome e uma data de nascimento, e a pessoa na mesa é aquele que Dá para ver. Um aviso que trata cada jogo como um erro é um aviso que as pessoas aprendem para clicar através. A abertura de um candidato existente é a primeira acção oferecida, porque a maioria dos tempo que é a resposta certa — uma tela de registro que trata "eles são já aqui" como um caso de borda é um que produz duplicatas. O sexo é registrado como gênero ADMINISTRATIVO, que é a questão de registro. Sexo clínico, sexo de nascimento e identidade de gênero são campos separados questionados separadamente por clínicos; achatá-los na mesa perde todos os três. O registro é um modo de Find em vez de uma aba própria — o mesmo trabalho, e o formulário tem um caminho de volta, que um formulário sem saída não.
· kamo-internal
Reserva, e a lista de trabalho notas para assinar
As duas coisas que uma prática faz o dia todo que o aplicativo não poderia fazer. Ambas as APIs têm esteve no servidor o tempo todo; nem tinha uma tela, então a recepção poderia ver o dia e verificar as pessoas sem ser capaz de colocar ninguém nele, e um O médico podia assinar uma nota de cada vez de dentro de um quadro que tinham aberto para outra razão. Reservas. Paciente primeiro, em seguida, visitar tipo, clínico e data, em seguida, as vezes o a programação tem realmente livre. Fendas vêm da disponibilidade do servidor em vez do que uma grade desenhada aqui — um calendário que renderiza a cada quinze minutos alguém clique em um vai reservar em um intervalo de almoço, uma tarde bloqueada, ou um slot que preencheu enquanto a página estava aberta. A lista atualiza após cada reserva, porque duas pessoas reservando a mesma manhã é comum, e um fracasso diz assim em vez de convidar uma tentativa de novo para o mesmo conflito. Capacidade restante é mostrado em vez de um "disponível" nu: um slot nem sempre uma pessoa, e um grupo ou modelo de dupla reserva diz isso. A assinar. Três filas, e a do meio é problema de outra pessoa. "Meu" é o que este clínico deve; "esperando minha contra-assinatura" é o que um escriba ou estudante escreveu e não pode assinar-se, que bloqueia o seu dia, por isso é chamado separadamente e carrega o tom mais urgente. A prática é a vista do gerente. A contra- assinatura acontece na lista; a assinatura não acontece. Assinando sua própria nota significa lê-lo, para que abra o gráfico. Contra-assinatura é um atestado sobre o trabalho já revisto — e a fila pelo menos mostra um supervisor exatamente Quantos estão a atestar. O masthead distintivo é o que o clínico deve, não o total da prática: a o backlog de toda a prática em uma aba pessoal lê como um pessoal.
· kamo-shared-library
ServiceJob e ServiceVisit
Um irmão da Ordem de Cumprimento, não um alargamento dela: O envio com um número de rastreamento e uma transportadora, e varejo depende disso. Job 1..N visita da primeira migração — um trabalho de visita única é N=1, e retrofitting o pai posterior é uma migração de dados através de cada inquilino História. A nomeação permanece um CalendárioEvent, referenciado por uma string suave id exatamente como LeadCallback já faz; uma segunda tabela de nomeação significa segundo agendador de lembrete e um técnico cujo telefone mostra metade de seu dia. Horários agendados e reais são mantidos separadamente porque a interface terminou Só pode responder ao segundo, e uma placa de despacho precisa do primeiro. ServiceJobMappingTest também analisa os valores @Query dos repositórios de serviços. CoreRepositoryQueryParseTest walks donotmodify.dao.repos only, so so nothing caso contrário valida estas três consultas, e um caminho JPQL irresolvível falha na criação de feijão — um serviço de segurança de crash-looping em vez de um resultado ruim.
· kamo-internal
Trabalhar na fila de correspondência entre práticas
A última superfície de troca sem tela, e a que decide se o A ligação produz qualquer coisa. Outra prática é dizer que um dos seus pacientes é um dos nossos. com o nosso parceiro não disposto a se comprometer — correspondência entre organizações é materialmente mais difícil do que combinar dentro de uma prática, então o limiar conservador deixa fósforos reais à espera. Sem trabalho, cada consulta sobre essa pessoa responde "nós não ter", e uma prática conclui que a rede está quebrada em vez disso Ninguém passou pela fila. Confirmar pergunta o que o revisor verificou, e rejeitar pergunta por quê. Um erro confirmação divulga o registro de uma pessoa para outra, e "confirmado por J. Smith" sem nenhuma razão não é algo que uma revisão posterior pode pesar. As provas o fósforo gravado é mostrado ao lado da decisão, pois caso contrário um revisor está sendo pedido para dizer que dois registros são a mesma pessoa na força de um percentagem.
· kamo-internal
Faltavam os ecrãs da infra- estrutura
Uma auditoria de cada ponto final da EHR contra as suas chamadas de frontend apareceram superfícies que enviou servidor-side e não pôde ser alcançado a partir do aplicativo em tudo. A SAÚDE NUNCA SITUOU UM TIPO DE MERCADO. CommerceType.HEALTHCARE e o seu EHR o direito tem sido sempre do lado do servidor, e /commerce-mercados/tipos permitidos relatou - mas o catador construiu suas linhas mapeando sobre um código COMMERCE TYPE ORDER, então qualquer vertical a constante não nome foi deixado cair Seja lá o que o servidor disse. Essa é a mesma classe de erro que o endpoint foi introduzido para substituir. As linhas agora vêm da lista do servidor, ordenada pelo constante, então a próxima vertical funciona sem uma mudança de frontend também. Registros e DIVULGAÇÕES, no gráfico. As duas coisas que um paciente pode realmente demanda: uma cópia de seu registro sob §164.524, e um relato dele em toda parte Já passou de 164,528. A contabilidade não tinha qualquer ecrã — um relatório exigido que só poderia ser produzido através do enrolamento de um endpoint. A campo destinatário é necessário e o ajudante diz por que: esse nome vai para o Contabilidade própria do paciente, por isso tem que ler como eles o reconheceriam. INQUÉRITO PORTAL, além do lançamento, porque um oficial de registros pediu a cópia é frequentemente o momento para oferecer ao paciente acesso contínuo. A ligação é mostrado uma vez e o painel diz isso — apenas um hash é armazenado. BALK EXPORT KICKOFF E CANCEL. Uma lista de tarefas sem forma de iniciar um trabalho é decoração. Preferir: respon-async é enviado porque a especificação requer um servidor para recusar um pontapé inicial sem ele. Timestamps passam pelo usoFormatters ao longo, então uma exportação carimbada 23:40 UTC lê-se como o dia em que a prática estava a funcionar.
· kamo-shared-library
Preencher ServiceLineItem e seus quatro eixos de classificação
ServiceLineItem enviado como uma subclasse de 18 linhas vazia cuja única referência em todo o corpus foi sua própria declaração, então um serviço vendido através da POS persistiu como uma linha PURCHASE. Os quatro enums de classificação são os eixos em que os estados norte-americanos realmente diferem, e a parte Kamo possui mesmo quando um motor externo calcula o imposto. Uma reparação para bens pessoais corpóreos, uma melhoria do capital para o real não residencial os bens e um trabalho de MRRA numa casa são três eventos tributáveis diferentes, e A diferença não é resultante de um preço e de uma descrição. mão-de-obraMinutos é o que vai juntar o livro de preços ao calendário — o mesmo número preços a linha e tamanhos da nomeação. Ganhos do OrderLineItem **************************** e Ordem ganha descontoTotal / envioTotal, porque caso contrário cada um dos Isso é destruído no momento em que uma citação se torna uma ordem. descontoType reutilizações QuoteDiscountType em vez de uma String: dois vocabulários que devem concordar é o bug que este bloco existe para prevenir.
· kamo-internal
Escritório de qualidade e registros
Duas seções para superfícies que não tinham nenhuma. QUALIDADE A taxa é a manchete; a diferença de cuidados é o produto. Uma prática mostrada "67% controlado" não pode fazer nada com ele — uma prática mostrou os 41 pacientes NAMED no denominador e não no numerador tem uma lista de trabalho, e fechando essa lista é a única coisa que move o número. Então, os cartões de medida abrem para a lacuna, cada linha carrega o RAZÃO é uma lacuna ("sem mamografia desde 2024-06-01" é um task; "in the gap" é um nome), e clicar em um abre o gráfico. Direção é lido da medida e dito em palavras ao lado de cada taxa. CMS122 contagem de doentes cuja diabetes é POORMENTE controlada e contagem de doentes com CMS165 cuja pressão arterial é controlada; a coloração de ambos da mesma forma sua pior coorte diabética foi sua melhor prática. Nenhuma taxa renderiza como um traço, não 0% — "nenhum paciente elegível" e "nenhum paciente elegível recebeu o cuidado" são factos opostos. A conta de tabulação é a diferença de cuidados em vez de uma percentagem: uma pontuação é alguma coisa alguém olha, uma contagem de pacientes é trabalho que alguém pega. Escritório de registos. As três perguntas um oficial de registros é perguntado juntos a hora algo dá errado — o que resta, quem pode chegar, e quais permissões estão prestes a caducar. A lista de voltas ganha seu lugar por conta própria: o acesso ao registro de uma criança termina no dia em que a criança atinge a maioria, e sem isso nada diz a ninguém com antecedência — o subsídio simplesmente pára e um pai Liga para o treino. Uma credencial de parceiro emitida é mostrada uma vez, em um painel que diz isso, porque Apenas o seu haxixe é armazenado. As datas passam pelo usoFormatters para que eles renderizem na zona do MEMBRO: e exportação carimbada 23:40 UTC pertence ao dia em que a prática estava funcionando, não o Um depois dele. O guarda de tempo-servidor de verificação captou a primeira versão.
· SecurityService
O portal do paciente – login, registros e acesso proxy
O §164.524 direito de acesso, tornado real: um paciente assina e lê o seu próprio problemas, medicamentos, alergias, imunização e consultas, e pode baixar todo o registro como C-CDA. Um terceiro príncipe, e os guardas agora sabem todos os três. EhrEndpointGuardTest cresceu PORTAL AUTENTICADO para os manipuladores que resolvem uma sessão de paciente e PORTAL DOORS para os dois que não podem — activar um convite e assinar, porque é para obter uma sessão. Ambas as listas são mais policiadas do que simplesmente desculpa: os primeiros cheques cada manipulador realmente resolve um portal sessão, o segundo que login verifica uma senha e que a ativação olha o convite pelo hash do símbolo apresentado. Cada sinal de falha responde à mesma frase, e um endereço desconhecido ainda custa o tempo de um haxixe. Distinguindo "sem tal conta" da "passe errada" confirma quais endereços são pacientes desta prática — e ser um paciente de uma clínica de oncologia é um diagnóstico. Um 404 em vez de um 403 em alguém registro é o mesmo raciocínio. Não é um PI. Um login de portal é a única credencial a entidade coberta publica o endereço de, eo ataque realista é um lento pulverizar através de muitas contas em vez de uma explosão contra uma, que uma taxa por IP limite não vê. Retirar o acesso revoga todas as sessões ao vivo, não apenas a conta. Desactivar sozinho deixa quem estiver assinado na leitura do registro até que sua sessão aconteça expirar, o que não é o que ninguém quer dizer retirando o acesso. A regra da senha é somente LENGTH. Regras de composição — um algarismo, um símbolo, um capital — empurrar as pessoas para o Password1! e longe das longas frases-passe que são realmente fortes. As leituras do portal são auditadas como PATIENT REQUEST com base PATIENT AUTHORIZED, e o download do registro também é escrito para o livro de divulgação. §164.528 não exigir o acesso próprio de um paciente em sua contabilidade, mas 42 CFR §2.25 não tem tal exclusão e "quem abriu meu registro" merece uma resposta completa.
· kamo-shared-library
Modelo de identidade do paciente portal
Um paciente NÃO é um membro, e isso não é deliberadamente a identidade da força de trabalho. Reutilizar o login da equipe significaria que um paciente tinha um diretor que cada o controlo interno da autorização deve recordar-se de excluir, e o primeiro controlo que se esqueceu daria a um paciente um ecrã de pessoal. Um portal principal resolve para um paciente mais qualquer proxy concede que login detém, e para nada mais. SESSÕES SÃO ROMAS, não fichas auto-suficientes. Uma prática que retira o acesso, ou um paciente que relata um telefone perdido, precisa da sessão para parar de trabalhar AGORA — e um token sem estado não pode ser revogado antes de expirar. Há um tempo livre como bem como um absoluto, porque um portal deixado aberto em um computador familiar é o caso comum em vez do exótico. CONVITAÇÕES SÃO ÚNICO-USE E TIME-BOXED, e somente o hash do token é armazenado. Um link vive em uma caixa de entrada por anos; um reutilizável é uma credencial permanente Sentado em qualquer caixa de correio que o endereço mais tarde pertence. A recusa diz: QUE problema é — usado, substituído, expirado — porque "link inválido" envia um paciente à prática sem nada a dizer e a prática sem nada a Olha para cima. O ACESSO À PROXY conduz uma data final por defeito. É aqui que os portais correm mal, e Eles dão errado de uma forma específica: uma bolsa é feita e nunca revista. A O acesso dos pais ao registo de uma criança é inteiramente apropriado aos sete anos e é divulgação aos dezessete, então uma bolsa de menores expira no dia em que chegarem Maioria, calculada a partir da data de nascimento no momento da concessão. Escopo é armazenado porque um prestador de cuidados que gere consultas não pode ler uma nota de saúde mental, e um sistema que oferece apenas acesso/sem acesso faz uma prática escolher entre Muito e nada. As linhas nunca são apagadas. Retirar o acesso é uma decisão que alguém tomou sobre um §164.524 direito da pessoa e tem que permanecer visível como uma; uma linha excluída se parece com uma conta que nunca existiu.
· VOIPService
Listar conversas de texto pela última mensagem, para a lista de conversas
· kamo-internal
A aba Comunicações do registro mostra comunicações
Transformou o fluxo de mídia do registro sozinho — as notas internas que as pessoas escrevem sobre um trabalho. Útil, e não o que ninguém quer dizer com "as comunicações sobre esta ordem": chamadas do cliente, mensagens e e-mails não estavam em lugar algum, porque o A coluna vertebral das comunicações estava ligada apenas a pistas. Notas ainda estão lá como o primeiro sub-tab, e o tráfego do cliente está ao lado Eles, gravados no registro da mesma forma que seus documentos são. Isto torna o O componente de linha do tempo existente da plataforma, não um segundo. O ponto de contacto é a parte que as pessoas perdem. Chamadas de entrada são correspondentes contra os números registados, por isso, um registo que ninguém registou contra linha do tempo que está vazia por uma razão que nada mais na tela explicaria — e o membro conclui que o recurso está quebrado em vez de não configurado. Parece Só uma vez que a contagem é conhecida, por isso nunca pisca para alguém cujo recorde é Preparar correctamente.
· SecurityService
Registros de comércio como proprietários, e um lugar para as regras correspondentes
O terceiro proprietário a coluna foi ampliada para, e o que ainda estava definido e não utilizados. Os documentos de um registo já estão no documento. par do gerente (assocType, assocObjectId); seu tráfego agora também. ContactPointRegistrar existe porque as regras de escrita são regras de MATCHING. A forma canônica um número é armazenado em e o comprimento mínimo que deve alcançar são o que decidir em que linha do tempo uma chamada de entrada pousa, e eles estavam em linha Serviço de Comunicação de Pacientes. Uma segunda cópia para o comércio iria eventualmente normalizar diferentemente, e o sintoma é uma chamada que corresponde ao número de um paciente abaixo de um O caminho do código e ninguém está debaixo de outro, sem nada em nenhum dos registos para dizer porquê. A autorização fica deliberadamente com as chamadas. Quem pode registar número é uma questão clínica respondida por uma relação de cuidado; quem pode registrar serviço é o direito do comércio. Colocar qualquer regra no registo seria significa que o outro viveu noutro lugar. Um registro comercial NÃO enrola sua conta. Isso colocaria todos os trabalhos em cliente já teve na página para um deles — uma pergunta diferente, que o página de conta já responde.
· SecurityService
O respondedor TEFCA — descoberta, consulta de documentos, recuperação de documentos
As três operações que um parceiro chama, expressas por FHIR em vez de Formas XCPD e XCA do QHIN Technical Framework, porque é onde novas conexões estão sendo construídas e uma pilha SOAP é uma Segunda superfície de segurança sobre os mesmos dados. Autenticação. Estes não têm sessão, então o ExchangePartnerAuthenticator resolve uma credencial do portador e o inquilino vem da fila do parceiro que encontra. A O cabeçalho X-Exchange-Trust-Id é comparado com o parceiro autenticado e registrado quando discorda — nunca usado para selecionar um. Dois testes de guarda pegaram o primeira versão: a catraca final, porque não resolve nenhuma sessão, e EhrEndpointGuardTest's tenant-of-the-caller regra, porque levou um inquilinoId parâmetro. O segundo foi uma falha real e se foi; o primeiro é respondido por um entrada de linha de base que diz o porquê, além de uma nova categoria PARTNER AUTENTICADA cuja O próprio teste verifica o caminho credencial EXISTE, em vez de apenas o desculpar. A DESCOBERÇÃO recusa uma demografia fina. Um nome de família sozinho é uma maneira de enumerar Uma lista de pacientes. Candidatos carregam sua pontuação de jogo, porque um solicitante que não pode vê-lo não pode fazer o julgamento a banda de baixa confiança existe para, e encontrar ninguém é um pacote vazio em vez de um erro — "nós fazemos não ter essa pessoa" é uma resposta comum e legítima. PARTE 2 Os dados são silenciosos. Uma consulta omite- a; uma resposta de recuperação 404 em vez de 403. Proibido confirmaria a existência do documento, e parceiro "há dados aqui que você não pode ter" revela a existência de tratamento de perturbação do uso de substâncias – que é a coisa exata Parte 2 protege. Um paciente restrito responde a um pacote vazio pela mesma razão. O Retrieve está reaberto. A consulta disse que o documento existe; isto é a chamada que move o registro de um paciente para outra organização, e um parceiro suspensa entre os dois não pode ser servido pelo segundo. Cada solicitação registra uma linha ExchangeRequest antes da resposta ser construída, Incluindo as recusas. Uma investigação é sobre as recusas.
· kamo-shared-library
Uma verdadeira credencial para parceiros de intercâmbio, e documentos recuperados
Os endpoints de resposta não têm sessão de usuário — o chamador é outro servidor da organização — então uma credencial do portador esta prática emite a bordo é a única coisa entre um estranho e o registo de um paciente. A primeira versão ler a identidade do parceiro de um cabeçalho X-Exchange-Trust-Id, que teria respondido quem digitou o OID certo; os OIDs são publicados num directório. O HASH é armazenado, nunca o símbolo. Uma base de dados vazada não deve resultar a funcionar credenciais para cada parceiro um intercâmbio de prática com. SHA-256 em vez de bcrypt porque o token é 256 bits este sistema gerado — não existe segredo de baixa entropia para retardar um atacante mais - e porque um hash rápido é olhado acima por índice em vez de tentar linha por linha, o que também não deixa sinal de tempo. A procura não leva nenhum inquilino. A credencial identifica uma linha de parceiros, que carrega a prática a que pertence, de modo que o inquilino é derivado — um ponto final que levou um seria pedir ao chamador que os registros da prática para pesquisar, e o O inquilino é a parte de um pedido que um chamador nunca deve escolher. ExchangeDocument mantém o que cruzou o limite. Documentos recuperados são KEPT, não fundida: um resumo externo é uma afirmação de outra organização, e dobrando seus problemas e medicamentos diretamente no gráfico coloca um clínico Nome contra fatos que nunca revisaram. Reconciliação é uma separação, deliberada act, and conciliedAt é a fila que torna a recuperação útil em vez de uma pasta que ninguém abre. Metadados são armazenados para além dos bytes porque um clínico escolhe dois documentos de uma lista de quarenta, e envio todos os quarenta é uma revelação maior do que o Pergunta necessária.
· SecurityService
Cinco medidas de qualidade reais, e o motor que as executa
Medidas são Java em vez de CQL, e o comércio vale a pena afirmar. O eCQM especificações são publicadas em linguagem de qualidade clínica, e um motor seria deixar uma prática carregar uma medida sem uma implantação — também significaria enviar um intérprete, um serviço de expansão de terminologia e um modelo de dados em forma de FHIR, e obter qualquer um desses sutilmente errado produz uma taxa que é confiantemente errado, O que é pior do que não ter a medida. Estes ler o gráfico diretamente, são coberto por testes que nomeiam os pacientes que incluem, e pode ser lido por um O médico a verificar a lógica contra o que lhes foi dito. Os cinco, e o detalhe de cada um é geralmente errado sobre: CMS122 diabetes A1c controlo fraco — INVERSE: o numerador é pobre controlo e Mais baixo é melhor. Um A1c desaparecido conta como mau controle, deliberadamente: um diabético sem resultado não monitorado, não desmedido, e tratando-o como neutro seria deixar uma prática marcar melhor testando menos pessoas. Pressão arterial CMS165 — Ambas as metades devem ser controladas. Lendo apenas o sistólico, a simplificação tentadora, dá crédito a uma prática para 130/95. O limiar é inferior a 140, não a ou abaixo. CMS125 rastreamento do câncer de mama — o lookback é 27 meses, não 24. Triagem é recomendado a cada dois anos, de modo que um doente Exatamente o que foi perguntado e uma janela de 24 meses os pontua como um fracasso. A mastectomia paciente em uma lista de trabalho de mamografia é como um clínico deixa de acreditar O resto da lista. Influenza CMS147 — a janela é a MODELO FLU que ENDS no período (Outubro a Março), não o ano civil. Ancorado na temporada que COMEÇA no período, todos os doentes ainda não vacinados em Dezembro a pontuação cai a cada janeiro. Uma recusa registada é uma EXCEPÇÃO: contagem como um fracasso marca uma prática para baixo para respeitar uma decisão, e ensina pessoal para não registar recusas. CMS138 tabaco — um não-usuário é satisfeito apenas com o rastreio; um utilizador necessita de um intervenção também. Implementado como "havia uma exibição" é trivial para passar e nada mede; como "havia uma intervenção" falha cada não fumante na prática. O prontuário de cada paciente é carregado ONCE e oferecido a cada medida — cinco mede cada carregamento as mesmas linhas é cinco vezes o trabalho, e em um dez mil pacientes prática que é a diferença entre um relato que acabamentos e um que não. Gated on View QUALITY MEASURES em vez de um relacionamento de cuidado: um denominador É cada paciente que preenche os critérios, por isso não há ninguém para ter um relação com. O endpoint por doente EI fechado em um, porque isso é um leitura clínica comum sobre uma pessoa nomeada.
· kamo-shared-library
O modelo de medida de qualidade e a linha que o torna útil
MeasurePatientResult é o ponto deste commit. Uma prática mostrada "67% controlado" não pode fazer nada com ele; uma prática mostrou os 41 pacientes NAMED em o denominador e não o numerador tem uma lista de trabalho, e fechar essa lista é A única coisa que move o número. Cada produto de qualidade que se usa é construído em torno dessa tabela; cada um que é ignorado pára na porcentagem. A exclusão e a excepção são modeladas separadamente porque os programas de informação audite um e não o outro. Uma exclusão diz que a medida nunca foi aplicada — a mastectomia bilateral, portanto o rastreamento mamográfico não é um cuidado que foi perdido. An A exceção diz que foi aplicada e não pôde ser entregue — o paciente decodificador. Gravar um como o outro é como uma prática falha em uma revisão. A aritmética não é a fração óbvia. Exclusões e excepções DEIXE o denominador, então o numerador/denominador sobrescreve a falha de uma prática no entanto, muitos pacientes que legitimamente não poderia tratar — em 100 elegíveis com 10 excluídos e 5 excluídos, 12 pontos de pontuação. effectiveDenominator () is Nomeado em vez de deixado implícito por essa razão. Um denominador vazio relata taxa NO, nunca zero. "Nenhum doente elegível" e "nenhum paciente elegível recebeu o cuidado" são fatos opostos, e um painel mostrando 0% para o primeiro diz uma prática que está falhando em algo que foi Nunca pedi para fazer. Os relatórios são apenas anexos. Uma taxa submetida a um ordenante nunca deve mover-se; um período escreve um novo relatório, e dois relatórios por um período são o registro de que O número mudou e quando — que é o que uma auditoria pede. Mais altoMelhor vive no relatório porque a direção não é uniforme: CMS122 conta com doentes cuja diabetes é POORMENTE controlada, CMS165 conta com doentes cuja pressão arterial é controlada. Um painel a colorir todas as taxas da mesma forma O caminho diz a metade deles o oposto da verdade.
· kamo-internal
Mirror os direitos de trabalho do serviço em TypeScript
VER SERVICE WORK, VER OWN SERVICE WORK, GESTÃO SERVICE WORK, ASSIGN SERVICE WORK e COMPLETE SERVICE WORK terra em ids 268-272, não o 265-269 o plano assumiu -- uma sessão concorrente reivindicou 265-267 para o paciente Registros enquanto Task 1 estava bloqueada, então a biblioteca kamo-shared enviou o real IDs em 7125873. Verificado pela leitura do Java enum diretamente. DIREITO PARES ganha as cinco bordas (VIEW SERVICE WORK e VIEW OWN SERVICE WORK EM ACESS COMMERCE; GESTÃO/ASSIGN/COMPLETE EM VER SERVICE WORK), o parity pin move 184 -> 189, e RoleRightType.ts recebe as cinco constantes mais seus valores entradas.
· SecurityService
Exportação em massa, C-CDA, e uma contabilidade que cobre cada canal
Exportar bolinhas. Kickoff responde 202 com uma Localização de Conteúdo e nenhum corpo; votação responde 202 enquanto corre e 200 com o manifesto quando feito. Devolvendo um 200-com-status mais amigável do arranque — a melhoria óbvia — faz cada cliente conforme tratar a exportação como terminado e obter um manifesto que ainda não existe. Preferir: responder-async é necessário pela mesma razão: O cliente afirma que sabe que isto é assíncrono. Gated on EXPORT PATIENT DATA e nada mais, deliberadamente. Todos os outros a leitura clínica é limitada por uma relação de cuidado com um paciente nomeado; exportação nomes nenhum paciente — é isso que o torna volumoso — por isso não há A relação para verificar e a direita é o portão. ClinicalRightsGuard existe porque os direitos da EHR foram declarados e nada os executou, o que é bom onde o controle cuidado-relacionamento está atrás deles e não é nada sobre As superfícies de nível populacional. O estado do trabalhador muda vive em seu próprio feijão. Escrito como métodos privados no corredor eles teriam parecido transacionais, foram anotados REQUISITOS NOVO, e silenciosamente executado no contexto do chamador — proxy da Spring faz não interceptar uma chamada de um método de um feijão para outro. Esta plataforma tem Enviou aquele bug antes. Cada arquivo é gravado no armazenamento ANTES de sua linha ser salva: uma linha apontando para um objeto ausente faz um manifesto cujos links 500, que lê como perda de dados para O sistema receptor. C-CDA. O que o hospital pode importar. Destinatário é necessário parâmetro porque gerar um resumo é uma DIVULGAÇÃO, e a contabilidade tem para responder "quem tem o meu registo" com um nome que um paciente reconhece. A Conta. DivulgaçãoLedger existiu e nada lhe escreveu, enquanto o §164.528 endpoint ler apenas linhas de troca - assim um paciente perguntando quem tem o seu Foi mostrado o registro das respostas do TEFCA e nada mais. Uma exportação a granel para o seu plano de saúde, um lançamento de registros, um download do portal: nenhum apareceu, e nada Disse que a lista era parcial. Uma contabilidade silenciosamente incompleta é pior do que um que está faltando, porque é acreditado. Cada canal agora escreve através do DisclosureRecorder, e o ponto final lê o livro. O gravador escreve em sua própria transação. Uma divulgação que aconteceu e foi não registado é o erro que existe para evitar; o inverso sobre-relatos, que é uma pergunta que alguém responde em vez de um regulamento que alguém viola.
· kamo-shared-library
Dar serviço Trabalhar os seus primeiros cinco direitos
ServiceType.SERVICE(28) enviado com zero direitos, então seus nove objetivos foram Fechado apenas se o chamador teve uma sessão. Ids começar em 268 em vez do planejado 265: uma mudança concomitante estava reivindicando 265-267 para o Registro de Pacientes. Os dados nunca são reutilizados e uma duplicata é fatal — RoleRightType constrói LookUP BY ID com Collectors.toMap, que joga em um chave duplicada, então dois direitos que compartilham um ID param cada serviço que carrega este Enum de arranque. Eles carregam ServiceType.POS, não service. Nenhum tipo de direito de papel usa o serviço, o RETAIL ou RENTAL; todos os 36 direitos comerciais usam o tipo de aplicativo pai, e a permissão Editores filtram sobre o serviço exatoType igualdade — então uma tag SERVICE teria sido necessária sua própria seção de editor e ainda deixou os outros 36 invisíveis. VER OWN SERVICE WORK é um irmão de VER SERVICE WORK sob ACESSO COMMERCE, nunca seu filho: um cliente que vê seus próprios trabalhos não deve herdar toda a equipe visibilidade. Mesma forma que View OWN SUBSCRIPTIONS ao lado de View SUBSCRIPTIONS. Comprometido através de um índice privado para que uma sessão concorrente em voo Paciente Os direitos de registro, ao vivo nos mesmos dois arquivos, não são varridos.
· kamo-shared-library
Exportações em massa de FHIR e C-CDA, e os direitos que os prendem
Duas coisas que uma prática não pode operar sem, e nem é uma versão maior de ler um gráfico. EXPORTAÇÃO DO BULK (clínico/acidente). O modelo FHIR Bulk Data: um trabalho, seus arquivos NDJSON, e um manifesto. Três decisões que valem a pena declarar. transactionTime é carimbado no KICKOFF, não completa. Cadeia de clientes exportações incrementais alimentando-o como desde então; carimbado na conclusão, tudo cartografado durante uma hora de duração cai em uma lacuna entre os dois exportações de que o cliente nunca é informado. Paginação de teclado no UID, nunca OFFSET — um sistema de exportação caminha tabelas inteiras, e com a página OFFSET dez mil custam dez mil páginas de trabalho. O leitor é escrito ONCE e parametrizado pela entidade em vez de como um localizador em cada um dos oito repositórios, porque oito consultas idênticas são sete que uma que não. Coortes são linhas de adesão explícitas com datas associadas/esquerdas, não um armazenado consulta. Uma coorte definida por critérios reavalia em cada leitura, portanto duas exportações de "o mesmo grupo" uma semana à parte cobrir pessoas diferentes sem dizer isso — e uma contabilidade perguntando "foi meu registro no extrato de março" não pode ser reconstruídos a partir de critérios que desde então mudaram. C-CDA (clínico/cda). O que o hospital na estrada pode realmente importar; FHIR é o que uma integração moderna usa. O bloco narrativo é gerado primeiro e as entradas referenciam-na, pois a narrativa é o que um ser humano mostra e o que o documento afirma legalmente — uma seção com entradas perfeitas e não narrativa torna em branco em cada espectador um clínico vai abrir. Cada seção é emitida mesmo quando vazia, e uma lista de alergias vazia carrega um entrada explícita negada "sem alergias conhecidas". Uma secção omitida significa desconhecido, e o clínico do outro lado prescreve como se não houvesse nenhum. Um sistema de código inexplicável é nullFlavoured em vez de adivinhado em: um receptor disse que o sistema errado olha o código no dicionário errado e não encontra nada ou, pior, encontra algo. DIREITOS 265-267. Todos os três são ROOTS, não filhos de VER CHART, que é o pai tentador e o errado: ver um gráfico é limitado por um cuidado relacionamento com um paciente, e todos os três destes ler em todo o população por projecto. BULK EXPORTS domínio de armazenamento, em sua própria linha porque uma exportação completa semanal é um cópia completa semanal — o facto de uma factura dever tornar visível antes da factura.

Seu universo está esperando.
Comece gratuitamente em minutos.Adicione produtos sempre que estiver pronto — sem migração, sem novos logins.
Gratuito para sempre — não é necessário cartão de crédito