最近あるサイトで、回復しなければならない多くの欠落した画像がありました。サイトは病院で、すべての画像を復元し、影響を受けたものを含むすべてを一時テーブルに入れることができました: 出会い、カルテ番号、ドキュメント、サブタイトル。私は現在、影響を受ける各遭遇を示す 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 は、この時点に到達して機能させるのにしばらく時間がかかりました。コードが正しいように見えると思ったので、ここからどこに行くべきかわかりません。私はここで検索しましたが、私を助けることができるものは何も見つかりませんでした. どんな助けでも大歓迎です。よろしくお願いします