| 1 | LRDPAREX ;DALOI/FHS -VALIDATE PENDING ORDER FILE PATIENT LOOKUP ; Feb 18, 2004 | 
|---|
| 2 | ;;5.2;LAB SERVICE;**153,286**;Sep 27, 1994 | 
|---|
| 3 | ; Special patient lookup of Lab Orders Pending File | 
|---|
| 4 | ; From ^LRDPAREF after patient selection | 
|---|
| 5 | ; Initialize array. | 
|---|
| 6 | ;  CDT=collection date/time | 
|---|
| 7 | ;  DFN=ien of patient in selected file | 
|---|
| 8 | ;  DOB=patient's date of birth | 
|---|
| 9 | ;  DPF=67^LRT(67, | 
|---|
| 10 | ;  LRXDPF=source file (2,67) | 
|---|
| 11 | ;  ERROR=0 | 
|---|
| 12 | ;  PNM=patient name | 
|---|
| 13 | ;  RIEN=IEN of ^LRT(67 | 
|---|
| 14 | ;  RPSITE=primary sending site | 
|---|
| 15 | ;  RSITE=sending site | 
|---|
| 16 | ;  RSITEN=sending site name | 
|---|
| 17 | ;  RUID=specimen unique identifier | 
|---|
| 18 | ;  SEX=patient's sex | 
|---|
| 19 | ;  SSN=patient's SSN | 
|---|
| 20 | EN ; | 
|---|
| 21 | N DA,DIC,DIE,DIR,DIRUT,DR,DTOUT,DUOUT,DLAYGO | 
|---|
| 22 | S PNM=LRSD("PNM"),SSN=LRSD("SSN"),DOB=LRSD("DOB"),SEX=LRSD("SEX") | 
|---|
| 23 | ; | 
|---|
| 24 | S LRXDPF=LRSD("DPF"),LRXDFN=LRSD("DFN"),LRDPF="67^LRT(67," | 
|---|
| 25 | ; | 
|---|
| 26 | I +LRXDPF=67,$G(LRXDFN) D  Q | 
|---|
| 27 | . S DFN=LRXDFN | 
|---|
| 28 | . D UPDATE | 
|---|
| 29 | ; | 
|---|
| 30 | I LRSD("RIEN"),'$D(^LRT(67,+LRSD("RIEN"),0))#2 S LRSD("ERROR")="16^Missing pointed to LRT(67,"_LRSD("RIEN")_",0)" Q | 
|---|
| 31 | ; | 
|---|
| 32 | I LRSD("RIEN") D  Q | 
|---|
| 33 | . I +LRXDPF=2,LRXDFN'=$G(^LRT(67,LRSD("RIEN"),"DPT")) S LREND=1,LRSD("ERROR")="10^Database Degrade " | 
|---|
| 34 | . I '$G(LREND) D UPDATE | 
|---|
| 35 | ; | 
|---|
| 36 | I 'LRSD("RIEN") S LRSD("RIEN")=$O(^LRT(67,"C",SSN,0)) I LRSD("RIEN"),$O(^(LRSD("RIEN"))) D DUP Q | 
|---|
| 37 | ; | 
|---|
| 38 | I LRSD("RIEN") D  Q | 
|---|
| 39 | . I '$D(^LRT(67,LRSD("RIEN"),0)) D  Q | 
|---|
| 40 | . . K ^LRT(67,"C",SSN,LRSD("RIEN")) | 
|---|
| 41 | . . S LRSD("ERROR")="13^Missing Zero Node for "_LRSD("RIEN")_" SSN X Ref Entry Removed" | 
|---|
| 42 | . D LINK Q:$G(LREND) | 
|---|
| 43 | . I +LRXDPF=2 S X="^"_$P(LRXDPF,"^",2)_LRXDFN_",""LRT"")",@X=LRSD("RIEN") | 
|---|
| 44 | ; | 
|---|
| 45 | I 'LRSD("RIEN") D SET G ERR:LREND | 
|---|
| 46 | S DFN=LRSD("RIEN"),LRDPF="67^LRT(67," | 
|---|
| 47 | END ; | 
|---|
| 48 | Q | 
|---|
| 49 | ; | 
|---|
| 50 | ; | 
|---|
| 51 | SET ;Create new entry in ^LRT(67 | 
|---|
| 52 | I +$G(LRXDPF)'=67,LRXDFN<1 D  Q | 
|---|
| 53 | . S LREND=1,LRSD("ERROR")="14^No LRXDFN defined" | 
|---|
| 54 | ; | 
|---|
| 55 | SET1 N DIC,DIE,DA,Y | 
|---|
| 56 | L +^LRT(67,0):999 | 
|---|
| 57 | S DIC(0)="L",DLAYGO=67 | 
|---|
| 58 | S X=PNM,DIC="^LRT(67," | 
|---|
| 59 | S DIC("DR")=".01////"_PNM_";.02////"_SEX_";.03////"_DOB_";.09////"_SSN | 
|---|
| 60 | I $G(LRSD("RACE"))'="" D RACE | 
|---|
| 61 | S:+LRXDPF=2 DIC("DR")=DIC("DR")_";2////"_LRXDFN | 
|---|
| 62 | K DD,DO | 
|---|
| 63 | D FILE^DICN K DLAYGO | 
|---|
| 64 | L -^LRT(67,0) | 
|---|
| 65 | I Y<1 S LREND=1,LRSB("ERROR")="11^Failure attempting to add patient to LRT(67)",LRDFN=-1 Q | 
|---|
| 66 | S LRSD("RIEN")=+Y S:+LRXDPF=2 ^DPT(LRXDFN,"LRT")=LRSD("RIEN") | 
|---|
| 67 | S (DFN,LRSD("RIEN"))=+Y S LRSD("ERROR")="" | 
|---|
| 68 | Q | 
|---|
| 69 | ; | 
|---|
| 70 | ; | 
|---|
| 71 | LINK ; Create back pointer for existing LRT(67 entries | 
|---|
| 72 | N DA,DIC,DIE,DR | 
|---|
| 73 | S (DFN,DA)=LRSD("RIEN") L +^LRT(67,DA) | 
|---|
| 74 | S DIC(0)="LMN",DIE="^LRT(67," | 
|---|
| 75 | S DR=".01////"_PNM_";.02////"_SEX_";.03////"_DOB_";.09////"_SSN | 
|---|
| 76 | I $G(LRSD("RACE"))'="" D RACE | 
|---|
| 77 | S:+LRXDPF=2 DR=DR_";2////"_LRXDFN | 
|---|
| 78 | S DIC=DIE D ^DIE S LREND=+$G(Y) L -^LRT(67,LRSD("RIEN")) | 
|---|
| 79 | I LREND S DFN=-1,LRSD("ERROR")="17^ Unable to link "_LRSD("RIEN") Q | 
|---|
| 80 | Q | 
|---|
| 81 | ; | 
|---|
| 82 | ; | 
|---|
| 83 | UPDATE ; Store updated demographics | 
|---|
| 84 | N DA,DR,DIE,DIC,RACE | 
|---|
| 85 | S (DFN,DA)=LRSD("RIEN") | 
|---|
| 86 | S DIE="^LRT(67," | 
|---|
| 87 | S DR=".01////"_PNM_";.02////"_SEX_";.03////"_DOB_";.09////"_SSN | 
|---|
| 88 | I $G(LRSD("RACE"))'="" D RACE | 
|---|
| 89 | D ^DIE S LREND=+$G(Y) | 
|---|
| 90 | I LREND S DFN=-1,LRSD("ERROR")="18^Unable to update demographics" Q | 
|---|
| 91 | Q | 
|---|
| 92 | ; | 
|---|
| 93 | ; | 
|---|
| 94 | ERR1 W !?5,"Error1 ",! | 
|---|
| 95 | Q | 
|---|
| 96 | ; | 
|---|
| 97 | ERR W !?5,"Error ",! | 
|---|
| 98 | Q | 
|---|
| 99 | ; | 
|---|
| 100 | ; | 
|---|
| 101 | DUP ; | 
|---|
| 102 | S LRSD("ERROR")="15^Duplicate "_SSN_" SSN nunbers in LRT(67 ",LREND=1 | 
|---|
| 103 | W !?5,$P(LRSD("ERROR"),U,2) | 
|---|
| 104 | Q | 
|---|
| 105 | ; | 
|---|
| 106 | ; | 
|---|
| 107 | KEYIN ; | 
|---|
| 108 | S LRSD("ERROR")="16^Error During Manual Patient Entry" | 
|---|
| 109 | W !!?30,"Manual Referral Patient Entry",!! | 
|---|
| 110 | K DIR | 
|---|
| 111 | S DIR(0)="F^9:12^K:X?1""-""!(X'?1N.N)!(X?1"" "") X I $D(X),$D(^LRT(67,""C"",X)) W !!?15,X,""  Already Exist"" K X" | 
|---|
| 112 | S DIR("A")="Patient ID (SSN)",DIR("?")="Enter New Patient ID Nunber " | 
|---|
| 113 | S DIR("?",1)="9-12 Number string '-' character or duplicates are Not allowed" | 
|---|
| 114 | D RDDIR Q:LREND | 
|---|
| 115 | S (LRSD("SSN"),SSN)=Y,Y=0 | 
|---|
| 116 | K DIR S DIR(0)="67,.01",DIR("A")="Patient Name" | 
|---|
| 117 | D RDDIR Q:LREND  S (LRSD("PNM"),PNM)=Y | 
|---|
| 118 | ; | 
|---|
| 119 | K DIR S DIR(0)="67,.02" D RDDIR Q:LREND  S (LRSD("SEX"),SEX)=Y | 
|---|
| 120 | K DIR S DIR(0)="67,.03" D RDDIR Q:LREND  S (LRSD("DOB"),DOB)=Y | 
|---|
| 121 | S (LRXDPF,LRSD("LRXDPF"))="67^LRT(67," D SET1 | 
|---|
| 122 | Q | 
|---|
| 123 | ; | 
|---|
| 124 | ; | 
|---|
| 125 | RDDIR ; | 
|---|
| 126 | S LREND=0 | 
|---|
| 127 | D ^DIR | 
|---|
| 128 | S:$D(DUOUT)!($D(DTOUT)) LREND=1 K DIR | 
|---|
| 129 | S:Y="" LREND=1 | 
|---|
| 130 | Q | 
|---|
| 131 | ; | 
|---|
| 132 | ; | 
|---|
| 133 | RACE ; Resolve race pointer | 
|---|
| 134 | N RACE | 
|---|
| 135 | S RACE="" | 
|---|
| 136 | I $P(LRSD("RACE"),":",3)="" S RACE=$$CODE2PTR^DGUTL4(+LRSD("RACE"),1,1) | 
|---|
| 137 | I $P(LRSD("RACE"),":",3)="HL70005" S RACE=$$CODE2PTR^DGUTL4($P($P(LRSD("RACE"),":"),"-",1,2),1,2) | 
|---|
| 138 | I RACE>0 D | 
|---|
| 139 | . I $D(DR) S DR=DR_";.06////"_RACE Q | 
|---|
| 140 | . I $D(DIC("DR")) S DIC("DR")=DIC("DR")_";.06////"_RACE | 
|---|
| 141 | Q | 
|---|