1

最近あるサイトで、回復しなければならない多くの欠落した画像がありました。サイトは病院で、すべての画像を復元し、影響を受けたものを含むすべてを一時テーブルに入れることができました: 出会い、カルテ番号、ドキュメント、サブタイトル。私は現在、影響を受ける各遭遇を示す 1 つの長いテキスト ファイルを作成しようとしています。その 1 つの遭遇に複数の文書がある場合、その遭遇に関するすべての文書が表示されます。影響を受ける各アカウントは、ファイル内の %%START で始まり、%%END で終わります。私はこれを達成することを考えました。カーソルを実行して、このテーブルからの出会いを並べ替えるのが最善でしょう。次に....その遭遇に関するすべての文書をカーソルで移動して、その遭遇を含めます。私のスクリプトは次のようになります。

declare
@name varchar(40),
@mrn varchar(20),
@encounter varchar(20),
@document varchar(30),
@subtitle varchar(30),
@cmd varchar(255),
@count int

declare find_affected cursor for 
select distinct p.name, m.mrn, m.encounter from mck_hpf..missing_documents m
join his..patients p on m.mrn=p.mrn


open find_affected

fetch next from find_affected into @mrn, @name, @encounter while
@@FETCH_STATUS=0

begin
select @mrn = mrn from mck_hpf.dbo.missing_documents where encounter = @encounter
select @name=name from his.dbo.patients where mrn=@mrn
select @encounter = encounter from mck_hpf.dbo.missing_documents where encounter = @encounter
Print '%%START'
Print ''
Print 'Name:               ' + @name
Print 'MRN:                ' + @mrn
Print 'Encounter:          ' + @encounter
Print 'Possible affected documents in this chart:'

declare find_document cursor for 
select distinct(document), subtitle from mck_hpf..missing_documents m
join his..encounters e on e.encounter=m.encounter where @mrn=m.mrn and @encounter=m.encounter

open find_document
fetch next from find_document into @document, @subtitle 
while @@FETCH_STATUS=0
begin
select @document = document from mck_hpf.dbo.missing_documents where encounter = @encounter 
select @subtitle = subtitle from mck_hpf.dbo.missing_documents where encounter = @encounter and document=@document
Print @document + '-' + @subtitle
fetch next from find_document into @document, @subtitle 
end
close find_document
deallocate find_document
Print ''
Print ''
Print '%%END'


fetch next from find_affected into @mrn, @name, @encounter
end
close find_affected
deallocate find_affected
go

スクリプトは適切に機能し、出会いを正しく循環します...しかし、何らかの理由でドキュメントでは機能しません。例....エンカウンター 123 には、missing_documents テーブルに 2 つのドキュメントがあります。たとえば、UB04 と 1500 を呼び出すとします。スクリプトが終了すると、次のように言う代わりに:

Name:               Mickey Mouse                           
MRN:                11111111          
Encounter:          123456789

このチャートで影響を受ける可能性のあるドキュメント:

UB04                             
1500

それは言うでしょう:

Name:               Mickey Mouse                           
MRN:                11111111          
Encounter:          123456789         

このチャートで影響を受ける可能性のあるドキュメント:

UB04                             
UB04

カーソルは 2 つのドキュメントが見つからないことを認識しているようですが、最初に見つかったドキュメントを何度も繰り返します。IT はすべての遭遇に対してこれを行います...6 つの欠落しているドキュメントがある場合、最初のドキュメントを取得し、継続的に繰り返します。

IT は、この時点に到達して機能させるのにしばらく時間がかかりました。コードが正しいように見えると思ったので、ここからどこに行くべきかわかりません。私はここで検索しましたが、私を助けることができるものは何も見つかりませんでした. どんな助けでも大歓迎です。よろしくお願いします

4

1 に答える 1

1

print ステートメントのすぐ上にある @subtitle をリセットしています。. .

select @document = document from mck_hpf.dbo.missing_documents where encounter = @encounter 
select @subtitle = subtitle from mck_hpf.dbo.missing_documents where encounter = @encounter and document=@document
Print @document + '-' + @subtitle

2 番目のカーソルの値を確認したい場合は、selectの前に print を実行します。

Print @document + '-' + @subtitle;
select @document = document from mck_hpf.dbo.missing_documents where encounter = @encounter ;
select @subtitle = subtitle from mck_hpf.dbo.missing_documents where encounter = @encounter and document=@document;
于 2012-09-24T18:21:20.947 に答える