1 | EASPFSS ;OAK/ELZ - PFSS SUPPORT FOR INBOUND LTC STATUS MESSAGE; 10/6/05
|
---|
2 | ;;1.0;ENROLLMENT APPLICATION SYSTEM;**67**;21-OCT-94
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | MSG ; receives HL7 message from COTS product
|
---|
6 | N EASMSG,EASHEAD,EASICN,EASDFN,EASSSN,EASVACLM,EASALIAS,EASSTAT,EASD,EAST,EASRESLT,EASDT,EASLOS,EASCODE,SEG,EASX
|
---|
7 | ;
|
---|
8 | ;parse message
|
---|
9 | S EASSTAT=$$STARTMSG^HLPRS(.EASMSG,HLMTIENS,.EASHEAD)
|
---|
10 | I 'EASSTAT S HLERR="Unable to start parse of message" G MSGQ
|
---|
11 | ;
|
---|
12 | F Q:'$$NEXTSEG^HLPRS(.EASMSG,.SEG) D
|
---|
13 | . F EAST=3:1 S EASD=$P($T(HL7DATA+EAST),";",4) Q:EASD="" D
|
---|
14 | . . I $P(EASD,"^",2)=SEG("SEGMENT TYPE") D
|
---|
15 | . . . S @$P(EASD,"^")=$$GET^HLOPRS(.SEG,$P(EASD,"^",3),$P(EASD,"^",4),$P(EASD,"^",5),$P(EASD,"^",6))
|
---|
16 | . . . S EASCODE=$P(EASD,"^",7,99)
|
---|
17 | . . . I $L(EASCODE),$L(@$P(EASD,"^")) S X=@$P(EASD,"^") X EASCODE S @$P(EASD,"^")=X
|
---|
18 | ;
|
---|
19 | ;check out data received from message
|
---|
20 | S DFN=$$PATIENT($G(EASICN),$G(EASDFN),$G(EASSSN),$G(EASVACLM),$G(EASALIAS)) I 'DFN S HLERR="Unable to validate the patient" G MSGQ
|
---|
21 | ;
|
---|
22 | ;data for $$copay^easeccal call
|
---|
23 | ; input: Patient's DFN, Date of Care, Length of stay
|
---|
24 | ; output: exemption flag ^ exemption reason (714.1 pointer) ^ <181 $ amount ^ >180 $ amount ^ opt $ amount
|
---|
25 | ;
|
---|
26 | S EASX=$$FILE(DFN,EASDT,EASLOS,$$COPAY^EASECCAL(DFN,EASDT,EASLOS)) I EASX<1 S HLERR="Unable to create 714.5 record" G MSGQ
|
---|
27 | ;
|
---|
28 | S EASX=$$QUEUE^VDEFQM("ADT^A08","SUBTYPE=LTUPI^IEN="_EASX,,"PFSS OUTBOUND") I 'EASX S HLERR="Unable to queue to VDEF"
|
---|
29 | ;
|
---|
30 | MSGQ ;
|
---|
31 | S HLA("HLA",1)="MSA"_HL("FS")_$S('$D(HLERR):"AA",1:"AE")_HL("FS")_HL("MID")
|
---|
32 | D GENACK^HLMA1(HL("EID"),HLMTIENS,HL("EIDS"),"LM",1,.EASRESLT)
|
---|
33 | ;
|
---|
34 | Q
|
---|
35 | ;
|
---|
36 | FILE(DFN,EASDT,EASLOS,EASDAT) ; creates a new entry in 714.5 and returns ien
|
---|
37 | ;
|
---|
38 | N DIC,DO,X,Y
|
---|
39 | S DIC="^EASPFS(714.5,",DIC(0)="",X=DFN
|
---|
40 | S DIC("DR")=".02////^S X=EASDT;.03////^S X=EASLOS;.04////^S X=+EASDAT;.06////^S X=+$P(EASDAT,""^"",3);.07////^S X=+$P(EASDAT,""^"",4);.08////^S X=+$P(EASDAT,""^"",5)"
|
---|
41 | S:$P(EASDAT,"^",2) DIC("DR")=DIC("DR")_";.05////^S X=$P(EASDAT,""^"",2)"
|
---|
42 | D FILE^DICN
|
---|
43 | Q +Y
|
---|
44 | ;
|
---|
45 | PATIENT(EASICN,EASDFN,EASSSN,EASVACLM,EASALIAS) ; this function will receive
|
---|
46 | ; several patient data elements and validate them. Assuming the data
|
---|
47 | ; meets expected requirements, the function will return the patient's
|
---|
48 | ; DFN. The requirement is ICN is a must, the patient must also match
|
---|
49 | ; at least 2 other data elements.
|
---|
50 | ;
|
---|
51 | N DFN,EASMATCH,EASX
|
---|
52 | S (EASMATCH,EASX)=0
|
---|
53 | S DFN=$$DFN(EASICN) I 'DFN G PATQ
|
---|
54 | I DFN=EASDFN S EASMATCH=1
|
---|
55 | I $P($G(^DPT(DFN,0)),"^",9)=EASSSN S EASMATCH=EASMATCH+1 I EASMATCH>1 G PATQ
|
---|
56 | I $P($G(^DPT(DFN,.31)),"^",3)=EASVACLM S EASMATCH=EASMATCH+1 I EASMATCH>1 G PATQ
|
---|
57 | F S EASX=$O(^DPT(DFN,.01,EASX)) Q:'EASX!(EASMATCH>1) I $P($G(^DPT(DFN,.01,EASX,0)),"^",2)=EASALIAS S EASMATCH=EASMATCH+1 Q
|
---|
58 | I EASMATCH<2 S DFN=0
|
---|
59 | PATQ ;
|
---|
60 | Q DFN
|
---|
61 | ;
|
---|
62 | DFN(EASICN) ; returns dfn for icn ia #2701
|
---|
63 | N DFN ; check to see if mpi software installed
|
---|
64 | S DFN=$S($L($T(GETDFN^MPIF001)):+$$GETDFN^MPIF001(+EASICN),1:0)
|
---|
65 | Q $S(DFN>0:DFN,1:0)
|
---|
66 | ;
|
---|
67 | HL7DATA ; hl7 data mapping
|
---|
68 | ; format: description ; EAS Variable ^ segment ^ seq ^ comp ^ subcomp ^
|
---|
69 | ; extract code
|
---|
70 | ;;patient icn;EASICN^PID^3^1^1^1
|
---|
71 | ;;patient dfn;EASDFN^PID^3^1^1^2^S X=$E(X,4,99)
|
---|
72 | ;;patient ssn;EASSSN^PID^3^1^1^3
|
---|
73 | ;;patient va claim;EASVACLM^PID^3^1^1^4
|
---|
74 | ;;patient alias ssn;EASALIAS^PID^3^1^1^5
|
---|
75 | ;;last month date;EASDT^OBX^14^1^^^S X=$$FMDATE^HLFNC(X)
|
---|
76 | ;;ltc los;EASLOS^OBX^5
|
---|
77 | ;;
|
---|
78 | ;
|
---|