Fórum Mesclar variáveis em textos estáticos #223674
31/03/2004
0
Estou desenvolvendo um sistema controlador de laudos médicos e neste sistema, preciso guardar os laudos que são digitados pelos usuários.
Deverá acontecer da seguinte maneira:
O usuário digitará um laudo médico padrão em um editor de texto interno do sistema informando os campos que serão necessários para a emissão ao paciente, como em uma mala direta do Word, este laudo digitado servirá de modelo para os exames de ultra-sonografia por exemplo.
O sistema esta sendo desenvolvido em delphi 7 e utilizando o gerador de relatórios Report Builder, quero saber se é possível também utilizar o Report Builder para fazer a mesclagem dos dados de um paciente ao texto do laudo, se for possível alguém teria uma rotina de exemplo para que possa implementar no sistema aqui do hospital.
Abaixo segue um exemplo:
[b:77d3570feb]Texto ainda sem mesclagem[/b:77d3570feb]
Nome do Hospital
Tipo de Laudo: Ultra-sonografia - OBSTÉTRICA VARIAVEIS
Paciente: [b:77d3570feb]<<paciente>>[/b:77d3570feb]
CPF: [b:77d3570feb]<<cpf>>[/b:77d3570feb]
Endereço: [b:77d3570feb]<<endereco>>[/b:77d3570feb]
O exame ecográfico mostra bexiga com boa repleção, paredes regulares, contornos
anatômicos e conteúdo anecóico normal.
[b:77d3570feb]Texto após a mesclagem[/b:77d3570feb]
Nome do Hospital
Tipo de Laudo: Ultra-sonografia - OBSTÉTRICA VARIAVEIS
Paciente: [b:77d3570feb]Fulano da Silva[/b:77d3570feb]
CPF: [b:77d3570feb]999.888.777-66[/b:77d3570feb]
Endereço: [b:77d3570feb]Rua dos Exemplos S/N[/b:77d3570feb]
O exame ecográfico mostra bexiga com boa repleção, paredes regulares, contornos
anatômicos e conteúdo anecóico normal.
--------------------------------------
[i:77d3570feb]Observação:[/i:77d3570feb] os textos que serão inseridos no sistema, utilizarão formatações normais, como negrito, alinhamento justificado, cores nas fontes. A ajuda de vocês nos será muito útil.
Desde já agradeço...
[b:77d3570feb][color=red:77d3570feb]Título editado pelo Moderador (AZ) - Removido: ´DESAFIO - BEM INTERESSANTE´[/color:77d3570feb][/b:77d3570feb]
Jsaraujo
Curtir tópico
+ 0Posts
31/03/2004
Sremulador
Gostei + 0
31/03/2004
Aroldo Zanela
Eu faria utilizando o próprio Word integrado à aplicação. Procure por [b:17502e49da]OleAutomation [/b:17502e49da]no link acima pesquisar que eu já coloquei exemplos de como localizar e substituir variáveis dentro do Word.
Gostei + 0
31/03/2004
Ffc
vc sabe como é usuário !!!
é uma boa idéia da forma que vc esta fazendo, e sei que tem muitos software que são assim sem depender de [b:4b7a8ef93a]WORD[/b:4b7a8ef93a].
peço que se algum amigo do fórum souber fazer este tipo rotinas que nós passem !!!
Gostei + 0
31/03/2004
Aroldo Zanela
Ainda acho que o Word seria mais apropriado. No entanto, preparei uma dica que poderá servir de caminho:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
RichEdit1: TRichEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TProcuraTroca = Class
Linha: String;
ProcurarPor: String;
TrocarPor: String;
procedure Clear;
procedure Execute;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var LerLaudo: TStringList;
Texto: TStringList;
Linha: String;
nI, nX: Integer;
ProcuraTroca: TProcuraTroca;
begin
ProcuraTroca := TProcuraTroca.Create;
LerLaudo := TStringList.Create;
Texto := TStringList.Create;
Texto.Clear;
LerLaudo.LoadFromFile(´c:\textos\laudo_01.txt´);
nX := LerLaudo.Count -1;
For nI := 0 To nX do
begin
With ProcutaTroca do
begin
Clear;
Linha:= LerLaudo.Strings[nI];
ProcurarPor := ´@hospital_´;
TrocarPor:= ´Santa Casa de Misericórdia´;
Execute;
ProcurarPor := ´@paciente_´;
TrocarPor := ´Teste com sunstituição do paciente´;
Execute;
ProcurarPor := ´@cpf_´;
TrocarPor := ´999.999.999/99´;
Execute;
ProcurarPor := ´@endereco_´;
TrocarPor := ´Santa Casa de Misericórdia´;
Execute;
Texto.Add(Linha);
end;
end;
RichEdit1.Lines.Assign(Texto);
Texto.Free;
LerLaudo.Free;
end;
{ TProcuraTroca }
procedure TProcuraTroca.Clear;
begin
Linha:= ´´;
ProcurarPor := ´´;
TrocarPor := ´´;
end;
procedure TProcuraTroca.Execute;
var nPos: Integer;
begin
nPos := Pos(ProcurarPor, Linha);
if nPos>0 then
begin
Delete(Linha, nPos, Length(ProcurarPor));
Insert(TrocarPor, Linha, nPos);
end;
end;
end.Texto original (Laudo_01.txt):
[list:5fdd2ef6f2]@hospital_
Tipo de Laudo: Ultra-sonografia - OBSTÉTRICA VARIAVEIS
Paciente: @paciente_
CPF: @cpf_
Endereço: @endereco_
O exame ecográfico mostra bexiga com boa repleção, paredes regulares, contornos
anatômicos e conteúdo anecóico normal.[/list:u:5fdd2ef6f2]
Texto ´mesclado´:
[list:5fdd2ef6f2]Santa Casa de Misericórdia
Tipo de Laudo: Ultra-sonografia - OBSTÉTRICA VARIAVEIS
Paciente: Teste com sunstituição do paciente
CPF: 999.999.999/99
Endereço: Santa Casa de Misericórdia
O exame ecográfico mostra bexiga com boa repleção, paredes regulares, contornos
anatômicos e conteúdo anecóico normal.[/list:u:5fdd2ef6f2]
Existem muitas outras alternativas, mas está me parece a mais simples.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)