Aproveitar um nó para conteúdo noutro nó-

Events happening in the community are now at Drupal community events on www.drupal.org.
Kusco's picture

Boas Tardes a todos...

Gostava de saber se alguém me pode dar umas dicas para aproveitar os campos de um nó para a construção de outro nó

explicando

Criei um tipo de conteúdo - tipo ficha de paciente, onde criei os campos cck para a identificação...(nome, morada, nif, d nascimento, etc).
E tenho outro tipo de conteúdo tipo ficha clinica onde estão os mesmos campos, mas muito outros onde o terapeuta colocará a infomração pertinente em função dos procedimentos da consulta e que serão de visibilidade mais restrita.

A questão concretamente é a seguinte:

Como será possível que depois de criado um conteúdo ficha de paciente (com os dados de identificação do mesmo) quando o terapeuta quiser criar uma ficha clínica pudesse seleccionar o nome existente e os restantes dados desse paciente preenchessem os valores dos restantes campos de identificação.

Já andei a procurar e a experimentar o node reference o inherit field, e mais uns quantos módulos mas não consigo nada que valha a pena
O melhor que consigo é seleccionar os nomes a partir de um campo com uma lista pendente com o código para os allowed values:

$options = array('' => t('- select a project -'));
$res = db_query('SELECT DISTINCT title FROM {node} WHERE type="ficha_paciente" ORDER BY title ASC');
while ($o = db_fetch_object($res)) {
$options[$o->title] = t($o->title);
}
return $options;

Obrigado

Cumprimentos

António

Comments

Node reference

camorim's picture

António

Pelo que expões, vejo como solução o Node reference que dizes já ter experimentado. Para relacionar conteúdos, é o melhor.
Agora, não ficou claro para mim teres criado dois content types distintos. Se queres ter só o content type Ficha de paciente, é complicado editar o node a dois tempos - fase de identificação e fase de terapêuticas, sem o recurso a um rules por exemplo.

A forma mais simples é mesmo criares a Ficha de paciente, por um lado, e criares um novo conteúdo chamado Terapêuticas do paciente ou algo que faça sentido para ti, e relacionar esses conteúdos, sendo a Ficha de paciente o parent.
Através do Views e do plugin views Attach poderás ligar os 2 nodes numa única view e controlar a quem acede ao quê.

Espero ter ajudado

sim, o node reference

paulo_graca's picture

Concordo com a Camorim, o Node reference, através das views, para o pretendes é o ideal.
Mas para o tipo de apresentação que pretendes, terás que criar um módulo que te permita manipular o formulário (hook_form_alter) da clínica e introduzir a informação que pretendes.

Eu uso sempre o módulo Devel e a função dpm() para avaliar o que estou a fazer.

Já tentei responder antes mas

Kusco's picture

Já tentei responder antes mas sem sucesso, não me deixa postar?
A ver se é desta

Camorim

Obrigado pela ajuda.
A ver se percebi

Criei de facto dois tipos de conteúdo ficha_paciente e ficha_clinica

Agora a questão é não coloco os campos duas vezes, só coloco num tipo? é isso?

E depois quando faço criar conteúdo aparece o node anterior (depois de configurado com o views.. claro) é isso?

já agora aproveito para perguntar, onde posso ver informação básica sobre o views attach plugin? é fácil? mesmo sem ser develloper?

Desculpem a nabice...

Obrigado

António

Segue mais detalhe

camorim's picture
  1. Criar ficha de paciente (content type parent)
  2. Criar ficha clínica do paciente (content type child) que vai te rum campo especial, do tipo node reference, e em cuja configuração defines que vai estar associado ao tipo de content type "Ficha de paciente"
  3. Criar view, onde vais ter de jogar com filtros, argumentos e relationships
    3.1. Filtro é o node parent - ficha de paciente
    3.2. Argumento é o NID
    3.3. Relationship - campo do node reference que criaste
  4. Seleccionar os campos que pretendes que sejam visíveis, seja de um content ou de outro, porque a relação torna ambos disponíveis nos fields
  5. Depois é uma questão de modo de apresentação (displays):
    a) page para ficha paciente
    b) anexo para ficha paciente com acesso restringido ao role, por exemplo
    Na criação desse anexo, é que podes usar o Attach views como sugeri anteriormente. É um plugin do Views que uma vez instalado cria um novo style.

Recomenda a leitura deste tutorial para perceberes a lógica: http://drupaleasy.com/blogs/ultimike/2009/07/using-views-relationships-a...

Bom trabalho

Alguma parte já está feita

Kusco's picture

Boas noites!

Camorim, muito obrigado. pelas dicas.

Já vi o tutorial e já criei (aproveitei o conteúdo já feito) continuo no entanto com algumas dúvidas..
A nabice é muito parecem-me questões básicas mas sem ajuda dificilmente resolvo.

1º A Vista tem:

um default só com um ou dois campos,
uma página com a maior parte dos campos da ficha de paciente
um anexo com os campos da ficha clínica

No Preview já funciona, pelos menos no grosso..., as dúvidas de apresentação ficam para depois.
Agora as principais dúvidas se puderem ajudar, prometo esforçar-me!!!

  1. Como coloco o path e a forma de seleccionar o conteúdo, isto é o Argument é NID mas como uso isso para aceder ao conteúdo
  2. Onde faço a restrição do acesso do anexo.

Neste entretanto vou procurar informação sobre o view attach plugin

Obrigado e até já

António

Respostas

camorim's picture

Desculpa António só atender agora ao teu pedido.
Cá vai:

  1. Path: sp que usas argumentos na construção da view, o path não pode ser fixo, pelo que vais ter de definir o que se chama um path dinâmico. Em geral, path: %
  2. Acesso: penso que é em Page settings onde se localiza o campo Access (lido com muitos interfaces diferentes do Views e depois não sei já qual é qual), com o qual podes restringir por permissões ou por roles. Imagina que só queres dar acesso aos utilizadores com perfil de administrador, médico, ou qualquer outro perfil que tenhas criado.

Não disseste que versão de Drupal estás a usar, mas o http://drupal.org/project/views_attach só funciona em D6 para já. Se estás com D7, usa o attachment normal.

Camorim:Muito Obrigado. Não

Kusco's picture

Camorim:

Muito Obrigado. Não pretendo que isto seja desenvolvido com muita pressa, estou eu a fazer, por duas razões, uma porque gosto muito desta área e me dá gozo descobrir estes "mistérios" e outra por que o $$$ escasseia e de que maneira. Por isso qualquer ajuda é bem vinda, demore o tempo que demorar, mais uma vez muito obrigado.

O Drupal que estou a usar é o D6.
Em relação ao Access já vi como é.
Mas em relação ao path a coisa ainda está um pouco nublada.

Vou fazer aqui o ponto da situação de forma a sistematizar melhor o que já está feito e o que se pretende fazer.

Nesta primeira fase do projecto o objectivo é como já disse o de ter dois tipos de conteúdos
ficha_identif e fich_clinica
Estes dois tipos de conteúdos darão naturalmente origem a nós distintos :)
Acontece que em cada um dos tipos de conteúdos, (mais concretamente no ficha_identif) existem campos ( nome, dnasc, profissao, por exemplo), que também vão fazer parte do segundo tipo de conteúdo ( fich_clinica).

Portanto o esquema de funcionamento será mais ou menos este.

O paciente chega à clinica a primeira vez, marca uma consulta e o funcionário administrativo preenche uma ficha de identificação e marca uma consulta (este será outro projecto...) a ficha é colocada no sistema.

No dia da consulta o terapeuta abre a sua área de trabalho, e irá editar (ou construir), uma ficha clinica onde entre outras coisas estará os diferentes campo de identificação e todos os outrso campos que fazem parte da fich_clinica.

O final da edição, conclui-se com a prescrição de um plano de tratamentos,

que dará origem a outro nó, este nó deverá estar associado de alguma forma ao calendário e a SMS e avisará o telefone do paciente por sms antes de cada uma dos eventos. (mas isto é outra fase).

Já está feito:

  1. Os dois content type ( fich_dentif e fich_clinica) com os respectivos campos, incluindo o node reference no fich_clinica.

  2. Uma vista com uma página para mostrar os campos de fich_identif, e uma anexo com os campos da fich_clinica

O acesso do anexo também já sei como se resolve...veremos se funciona..

Ainda não sei como ( Grande Nabo)!!!

Como fazer aparecer a vista com os dois conteúdos (só no preview é que isso acontece), já está configurado com um path dinâmico, mas como pode um funcionário ou um terapeuta aceder a essa ficha, ?

Coloca-se um campo expose no filtro aqui sinto que estou perdido.

Como posso por os campos de forma "bonitinha" que modulos usar? tutoriais? quais?

O views attach produz o node content? é isso? qual é a diferença entre o anexo e o node content?

E como depois de visto se pode salvar as alterações? a esse(s) nó(s), ?

Já vi alguns tutoriais e aprendi alguma coisa mas ainda não vi onde nem como aprender estas questões, falha minha de certeza.

Desculpem o testamento, mas depois de isto estar feito aproveita-se e faz um tutorial...

Faltava uma duvida muito concreta qual o widget do campo noderefence? é indiferente?

Aguardo as vossas instruções e mais uma vez muito obrigado
António

Achegas

camorim's picture
  1. Como fazer aparecer a vista com os dois conteúdos (só no preview é que isso acontece), já está configurado com um path dinâmico, mas como pode um funcionário ou um terapeuta aceder a essa ficha?
    Path dinâmico significa que sempre que o nó com o NID previsto na tua view é clicado, carrega-se a si e aos anexos que tiver associados. Uns utilizadores poderão ver tudo, outros parte da informação.
    Para a navegação por entre as fichas dos clientes, sugiro que cries um display em que o filtro é o conteúdo ficha_cliente e os campos nome, por exemplo, podendo criar uma tabela ou lista simples HTML por ordem alfabética. Esse display página de todos os clientes da clínica terá à partida um item de menu (clientes)

  2. Como posso por os campos de forma "bonitinha" que modulos usar? tutoriais? quais?
    O que influencia a apresentação da informação das views são muitos factores e em todos eles podes dar o jeito que pretendes.
    a) escolhe o style + adequado ao efeito final desejado (tabela, lista, slideshow...)
    b) controla com CSS e HTML (podes usar classes por view, mas também por fields)
    c) gera tpl.php específicos (solução + avançada e exigente)
    d) experimenta o Display Suite, um módulo que te permite fazer layout dos nodes, views. No D6 é úma suite de módulos, pelo que tens de ver quais a instalar. Este módulo está muito + transparente no D7 :)

  3. O views attach produz o node content? é isso? qual é a diferença entre o anexo e o node content?
    O views attach é um anexo mais potente. O que fazes em qualquer dos casos é definir a que é que o anexo/ attachment vai ficar associado.

  4. E como depois de visto se pode salvar as alterações? a esse(s) nó(s), ?
    O modo de display não dá estatutos de primeira e segunda aos nós. Portanto não faz sentido a tua pergunta. Se fores à tua lista de conteúdo, vais ver que o teu conteúdo ficha-cliente e o conteúdo ficha-clinica são nós com a mesma importância. A diferença está na forma de os apresentar, em que "subordinamos" um ao outro, aproveitando a relação entre eles. Portanto, qualquer um deles é editável sem que dependa do outro. O problema pode colocar-se se apagas um parent a que está associado um child.

  5. Faltava uma duvida muito concreta qual o widget do campo noderefence? é indiferente?
    O nodereference por der por autocomplete ou select list (gosto mais). Qq um funciona.

"Já vi alguns tutoriais e aprendi alguma coisa mas ainda não vi onde nem como aprender estas questões, falha minha de certeza."
Não fiques com a impressão que não sabes ou não te estás a esforçar. O Drupal é tão flexível e dá-nos tantas possibilidades que às vezes ficamos confusos. Encara isso como etapa de aprendizagem...

"Desculpem o testamento, mas depois de isto estar feito aproveita-se e faz um tutorial..."
Se quiseres fazer o tutorial com screenshots e detalhes, estarás a ajudar outros que se iniciam.

bom trabalho

Preciso de Mais Achegas SFF

Kusco's picture

Boas Noites,

Bem...Deve estar a faltar uma pequena grande coisa!

Já tenho o trabalho efectuado, mas alguma configuração deve estar errada

No módulo vistas criei uma vista com

Um display page (Ficha de Identificação) com Filtros Node Type = Ficha de Paciente e Nome (exposed) com um path dinamico http://www.tiandiren.pt/listapacientes%

Outro display anexo Com os campos de Ficha Clínica um filtro Node Type Ficha Clínica, que está configurado com

Attachment settings
Inherit arguments: Sim
Inherit exposed filters: Sim
Inherit pager: Não
Render pager: Sim
Position: After
Attach to: Ficha de Identificação

No grupo de relações o Campo Node Reference presente no Type Ficha Clinica
Nos Arguments NID que configurações devem estar aqui: Deve ser escolhido um relacionamento? e a validação?

Os nós criados tipo ficha de paciente - paciente X, e os nós criados tipo ficha clínica . paciente Y, não aparecem nunca juntos, e não vejo os valores do campo de nó no outro nó

O que estou a fazer mal?

Path

camorim's picture

Penso que o path não está bem http://www.tiandiren.pt/listapacientes%, experimenta http://www.tiandiren.pt/listapacientes/%
Node reference deve ter a relação activa como indicas
Arguments NID também tem a relação e o validador é do tipo Nó: Ficha clínica

Quase lá...ou não

Kusco's picture

Bom dia.
Depois de um fim de semana completo em formação a que se precedeu uma semana alucinante, aqui estou de volta para ver se consigo pacificar o meu conflito por ainda não ter conseguido o que pretendo.

Ponto da situação

Criei

  1. Um display (page) com o nome ficha de identificação, onde coloquei os campos do content_type ficha de identificação (visível para todos os funcionários) As definições são
    Grupo de relações
    Relação com o field pacientes (node_reference) e required this relationship: checked.

Arguments:
Relação: Paciente, required this relationship: checked
No Validator: Nó -Tipo Ficha Clinica tb experiemntei com Tipo Ficha do Paciente

Filtro : no Tipo= Ficha do Paciente

Page Settings :

Path:listapacientes/%

2.

Um display (Anexo) com o nome Anexo, onde coloquei os campos do content_type ficha clinica (visível só para os terapeutas) As definições são:

Grupo de relações
Relação com o field pacientes (node_reference) e required this relationship checked.

Arguments:
Relação Paciente required this relationship checked
No Validator: Nó -Tipo Ficha Clinica tb experiemntei com Tipo Ficha do Paciente

Definições:
Inherit arguments: Sim
Inherit exposed filters: Sim
Inherit pager: Não
Render pager: Sim
Position: After
Attach to: Ficha de Identificação

Filter: Nó Tipo = Ficha Clínica
Experimentei com relacionamento a pacientes e sem relacionamento.

O que tenho quando abro uma ficha de paciente que está relacionado com uma ficha clinica, apenas aprecem os campos da ficha clinica.
Quando abro uma ficha clinica de um paciente que já tem ficha de paciente, aparece apenas o link (nodereference) para a ficha de paciente,

Que configurações devo alterar?

O D6 e o Views 6.x.2.12

Muito Obrigado a todos desde já

António

Desculpem a insistência,mas estou a dar em Maluco...

Kusco's picture

Por favor não quero que este post seja entendido como uma forma de pressão ( muito menos pela Camorim que tem sido uma ajuda divina) para responderem mais rápido do que o vos é possível, mas para o caso de se terem esquecido, se alguém me conseguir esclarecer pq não está funcionar.

Abraço

António

Penso que quase lá sim... mas...

jolidog's picture

Estive a ler mas não compreendi o seguinte, o campo node reference, está presente em que conteúdo? Na ficha clínica?

Agora, em relação à view, no page display, não uses a relação com o node reference, o argumento é suficiente para mostrar apenas os conteúdos de uma ficha de identificação.

No attachment display é que usas a relação pois queres mostrar a ficha clínica relacionada com a ficha de cliente que a page display está a usar.

Agora Sim, Quase, Quase Quase Lá!

Kusco's picture

Em primeiro lugar quero serenar os Ânimos de todos dizendo que já consegui 90% do que pretendia! Claro está com a vossa ajuda e com um agradecimento muito especial à Camorim, que me esclareceu sempre e agora no final ainda mais.
De facto também o que o Jolidog diz funciona

Já consegui, Juntar os conteúdos dos dois nó-tipo e restringir o acesso de cada parte a quem de Direito.
Percebi na "carne" o poder de abstracção do Drupal, e naturalmente provei o poder desta ferramenta.

O que devia estar a fazer mal nem sei bem, mas acho que devia ser por não estar a usar bem o Node Content, e estar a usar o Anexo do Views para criar o Anexo.

Agora está tudo fino, ou assim o parece!

A curva de aprendizagem pode ser lenta, mas compensa, e o que é que vale a pena na Vida que não demore tempo.? !!!

No meu caso e com a vossa ajuda irei evoluir muito mais, por isso muito obrigado.

Abrirei outro tópico já a seguir para ver como por a coisa bonitinha?

Portugal

Group categories

Classificação

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: