| 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
 | 
|---|