1 | VEPERIC ;KFK;REGISTRATION CHECK; 5/3/05 11:22am ; 6/2/05 1:56pm
|
---|
2 | ;;1.0;VOEB;;Jun 12, 2005
|
---|
3 | ;
|
---|
4 | ; This routine will check an HL7 message that is generated through
|
---|
5 | ; the registration process in COTS, a doctor's office package.
|
---|
6 | ; The results of the lookup are returned in the variable MSG:
|
---|
7 | ;
|
---|
8 | ; DFN = Match is found
|
---|
9 | ; 0 = New patient flag
|
---|
10 | ; -1 = Error Flag
|
---|
11 | ;
|
---|
12 | ; The results of the error will be stored in the ^VEPER(19904.2
|
---|
13 | ; file.
|
---|
14 | ;
|
---|
15 | Q ;No direct entry
|
---|
16 | ;
|
---|
17 | LKUP(HL7,HL7DT,VCOB,VDOB,VFI,VHRN,VNAME,VSEX) ;
|
---|
18 | ;
|
---|
19 | N DIC,DIE,DR,ERR,ERRDT,ERRMSG,ERRTYP,FCOB,FDOB,FE,FIN,FOUND,FSEX,MATCH
|
---|
20 | N MSG,MULT,NAN,NOFI,NOHRN,NONAME,RESULTS,SCREEN,VAR,VPID,Y
|
---|
21 | ;
|
---|
22 | D FINDN,FINDF,FINDH
|
---|
23 | I MULT=0 D MSGMP Q MSG
|
---|
24 | I NONAME=0,NOFI=0,NOHRN=0 D MSGNP Q MSG
|
---|
25 | I FIN'=NAN D PID,MSGID D:MATCH=1 MSGMM Q MSG
|
---|
26 | D PID I MATCH'=1 D MSGID
|
---|
27 | Q MSG
|
---|
28 | ;
|
---|
29 | MSGM ; Error set if there is a piece of data missing from the VISTA file.
|
---|
30 | ; Full verification can not be completed.
|
---|
31 | S (FE,VAR)="" F S VAR=$O(ERR(VAR)) Q:VAR="" D
|
---|
32 | . S FE=FE_$S(VAR="FSEX":"SEX",VAR="FDOB":"DATE OF BIRTH",1:"HEALTH RECORD NUMBER")_","
|
---|
33 | I $E($L(FE))="," S FE=$E(FE,1,$L(FE)-1)
|
---|
34 | S MSG="-1",ERRTYP="MD"
|
---|
35 | S ERRMSG="Missing Data Error: Match could not be verified because the following pieces of data are missing in the VISTA file - "_FE
|
---|
36 | D SAVE
|
---|
37 | Q
|
---|
38 | ;
|
---|
39 | MSGMP ; Multiple mathces were found for incoming data.
|
---|
40 | S MSG="-1",ERRTYP="MP"
|
---|
41 | S ERRMSG="Multiple Match Error: Multiple matches were found for the information that was entered."
|
---|
42 | D SAVE
|
---|
43 | Q
|
---|
44 | ;
|
---|
45 | MSGNP ; Flag returned to indicate that this is a new patient.
|
---|
46 | S MSG=0
|
---|
47 | Q
|
---|
48 | ;
|
---|
49 | MSGMM ; Error set as a patient mismatch.
|
---|
50 | S MSG="-1",ERRTYP="MM"
|
---|
51 | S ERRMSG="Patient Mismatch Error: Patient appears to already be registered under Patient ID - "_VFI
|
---|
52 | D SAVE
|
---|
53 | Q
|
---|
54 | ;
|
---|
55 | MSGID ; Error set if a piece of registration data does not match stored
|
---|
56 | ; data from patient file.
|
---|
57 | S MSG="-1",ERRTYP="ID"
|
---|
58 | S ERRMSG="Match Incomplete Error: Patient information sent in does not match patient information on file. Possible new patient."
|
---|
59 | D SAVE
|
---|
60 | Q
|
---|
61 | ;
|
---|
62 | PID ; Verification of patient demoghrapic information.
|
---|
63 | S MATCH=0
|
---|
64 | S VPID=^DPT(NAN,0),FSEX=$P(VPID,U,2),FDOB=$P(VPID,U,3)
|
---|
65 | K ERR
|
---|
66 | F VAR="FSEX","FDOB" D
|
---|
67 | . I @VAR="" S ERR(VAR)=""
|
---|
68 | I $D(ERR) D MSGM Q
|
---|
69 | I FSEX'=VSEX Q
|
---|
70 | I FDOB'=VDOB Q
|
---|
71 | S MATCH=1,MSG=NAN
|
---|
72 | Q
|
---|
73 | ;
|
---|
74 | SAVE ; Save errors to error file.
|
---|
75 | N DA,X,Y
|
---|
76 | S ERRDT=""""_$$NOW^XLFDT_""""
|
---|
77 | S DIC="^VEPER(19904.2,",DIC(0)="L",X=ERRDT
|
---|
78 | D ^DIC
|
---|
79 | S DIE=DIC,DA=+Y
|
---|
80 | K DR
|
---|
81 | S DR=".02///^S X=VNAME;.03////"_HL7_";.04////"_VFI_";.05////"_ERRTYP_";.06////"_HL7DT_";1.01////"_ERRMSG D ^DIE
|
---|
82 | Q
|
---|
83 | ;
|
---|
84 | FINDN ; Name lookup.
|
---|
85 | S (MULT,NAN,NONAME)=1
|
---|
86 | S FOUND="RESULTS",SCREEN="I $P(^(0),U,2)=VSEX&($P(^(0),U,3)=VDOB)"
|
---|
87 | K RESULTS
|
---|
88 | D FIND^DIC(2,,"@;.02;.03","O",VNAME,"*",,SCREEN,,FOUND)
|
---|
89 | I $P(RESULTS("DILIST",0),U)=0 S NONAME=0 Q
|
---|
90 | I $P(RESULTS("DILIST",0),U)>1 S MULT=0 Q
|
---|
91 | S NAN=RESULTS("DILIST",2,1)
|
---|
92 | Q
|
---|
93 | ;
|
---|
94 | FINDF ; Foreign ID lookup.
|
---|
95 | N D,X,Y
|
---|
96 | S (FIN,NOFI)=1
|
---|
97 | S DIC="^AUPNPAT(",DIC(0)="M",D="C",X=VFI
|
---|
98 | D IX^DIC
|
---|
99 | I Y=-1 S NOFI=0 Q
|
---|
100 | S FIN=$P(Y,U)
|
---|
101 | Q
|
---|
102 | ;
|
---|
103 | FINDH ; Health Record Number lookup.
|
---|
104 | N D,HRNN,X,Y
|
---|
105 | S (HRNN,NOHRN)=1
|
---|
106 | S DIC="^AUPNPAT(",DIC(0)="M",D="D",X=VHRN
|
---|
107 | D IX^DIC
|
---|
108 | I Y=-1 S NOHRN=0 Q
|
---|
109 | S HRNN=$P(Y,U)
|
---|
110 | Q
|
---|