| 1 | RGRSPT ;ALB/RJS,CML-HIGH LEVEL ROUTINE FOR PARSING AND FILING ;06/25/98
 | 
|---|
| 2 |  ;;1.0;CLINICAL INFO RESOURCE NETWORK;**1,3,7,8**;30 Apr 99
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;Parse Incoming Message, and file.
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  Q:($G(HL("MTN"))'="ADT")
 | 
|---|
| 8 |  N RGRSDFN,VAFCA,RGRS,VAFCA08,RGRSARAY,BOGUS,RGDC,SENSTVTY,CMORDISP
 | 
|---|
| 9 |  N NAME,LASTNAME,SSN,ICN,CMOR,CMORIEN,OTHSITE,RGRSDATA,HERE,BULSUB,NODE
 | 
|---|
| 10 |  S RGRSARAY="RGRS(2)"
 | 
|---|
| 11 |  D INITIZE^RGRSUTIL ;copy HL7 message into local RGDC array
 | 
|---|
| 12 |  S VAFCA=$$EN^RGRSMSH() ;parse MSH for filer
 | 
|---|
| 13 |  D EN^RGRSPARS(RGRSARAY) ;parse HL7 message into local array RGRS
 | 
|---|
| 14 |  I $$SKIP^RGRSZZPT(1,RGRSARAY) D  G EXIT ;skip if certain data is not there
 | 
|---|
| 15 |  . D SKIPBULL^RGRSBULL(RGRSARAY)
 | 
|---|
| 16 |  S RGRSDFN=$$GETDFN^MPIF001(@RGRSARAY@(991.01)) ;Get DFN from ICN
 | 
|---|
| 17 |  Q:+$$SEND2^VAFCUTL1(RGRSDFN,"T")  ;safeguard to prevent the processing of test patients
 | 
|---|
| 18 |  S OTHSITE=@RGRSARAY@("SITENUM")\1
 | 
|---|
| 19 |  S HERE=$P($$SITE^VASITE,"^",3)\1
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 |  ;If patient not known in site, send bulletin, go exit
 | 
|---|
| 22 |  ;
 | 
|---|
| 23 |  I +RGRSDFN=-1 D EXC^RGHLLOG(210,"Msg#"_$G(HL("MID"))_" Bad DFN#"_$G(RGRSDFN)_" for "_$G(@RGRSARAY@(.01))_" (ICN#"_$G(@RGRSARAY@(991.01))_")") D STOP^RGHLLOG(1) Q
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 |  S NAME=$$GET1^DIQ(2,+RGRSDFN_",",.01)
 | 
|---|
| 26 |  S LASTNAME=$P(NAME,",",1)
 | 
|---|
| 27 |  S SSN=$$GET1^DIQ(2,+RGRSDFN_",",.09)
 | 
|---|
| 28 |  S NODE=$$MPINODE^MPIFAPI(RGRSDFN)
 | 
|---|
| 29 |  S ICN=$P(NODE,"^")
 | 
|---|
| 30 |  S CMORIEN=$P(NODE,"^",3)
 | 
|---|
| 31 |  S CMOR=$$NS^XUAF4(CMORIEN)
 | 
|---|
| 32 |  S CMORDISP=$P(CMOR,"^",1)
 | 
|---|
| 33 |  S CMOR=$P(CMOR,"^",2)
 | 
|---|
| 34 |  ;
 | 
|---|
| 35 |  S @RGRSARAY@("NAME")=@RGRSARAY@(.01)
 | 
|---|
| 36 |  S @RGRSARAY@("SSN")=@RGRSARAY@(.09)
 | 
|---|
| 37 |  S @RGRSARAY@("ICN")=@RGRSARAY@(991.01)
 | 
|---|
| 38 |  S @RGRSARAY@("CMOR")=$P($$NS^XUAF4($$LKUP^XUAF4(OTHSITE)),"^")
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 |  ;If ICN or CMOR don't match, send bulletin and go exit
 | 
|---|
| 41 |  I '$$MATCH(RGRSDFN,RGRSARAY,,,ICN,CMOR,.BULSUB) D  G EXIT
 | 
|---|
| 42 |  . D MTCHBULL^RGRSBULL(RGRSDFN,RGRSARAY,NAME,SSN,ICN,CMORDISP,BULSUB)
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 |  ;if ICN and CMOR match, check for SSN edit from CMOR
 | 
|---|
| 45 |  I @RGRSARAY@("SENDING SITE")=CMOR,(SSN'=@RGRSARAY@(.09)) D
 | 
|---|
| 46 |  .D SSNBULL^RGRSBUL1(RGRSDFN,RGRSARAY,NAME,SSN,ICN,CMORDISP)
 | 
|---|
| 47 |  ;
 | 
|---|
| 48 |  ;If patient is Sensitive at other site but not here send bulletin
 | 
|---|
| 49 |  S SENSTVTY=$G(@RGRSARAY@("SENSITIVITY"))
 | 
|---|
| 50 |  I '$$SENSTIVE^RGRSENS(RGRSDFN),SENSTVTY D SENSTIVE^RGRSBUL1(RGRSDFN,RGRSARAY,NAME)
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 |  ;If patient has DATE OF DEATH (DOD) at remote site send bulletin
 | 
|---|
| 53 |  ;Ignore time if present with date.
 | 
|---|
| 54 |  S RMTDOD=@RGRSARAY@(.351),RMTDOD=$P(RMTDOD,".")
 | 
|---|
| 55 |  S DFN=RGRSDFN D DEM^VADPT
 | 
|---|
| 56 |  S LOCDOD=$P($P(VADM(6),"^"),".")
 | 
|---|
| 57 |  ;If there is a remote DOD but no local DOD  OR
 | 
|---|
| 58 |  ;if remote DOD is different from local DOD, send bulletin
 | 
|---|
| 59 |  I RMTDOD D RMTDOD^RGRSBUL1(RGRSDFN,RGRSARAY,NAME,RMTDOD,LOCDOD)
 | 
|---|
| 60 |  K LOCDOD,RMTDOD,VADM
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 |  D  G EXIT ;**7
 | 
|---|
| 63 |  . ;
 | 
|---|
| 64 |  . ;IF it's the CMOR - review file
 | 
|---|
| 65 |  . ;
 | 
|---|
| 66 |  . I (OTHSITE)=(HERE) D  Q
 | 
|---|
| 67 |  . . S VAFCA=VAFCA_"^"_RGRSDFN
 | 
|---|
| 68 |  . . S VAFCA08=1 S BOGUS=$$ADD^VAFCEHU1(VAFCA,"RGRS")
 | 
|---|
| 69 |  . ;
 | 
|---|
| 70 |  . ;IF it's not the CMOR - Don't Rebroadcast
 | 
|---|
| 71 |  . ;
 | 
|---|
| 72 |  . I (OTHSITE)'=(HERE) D  Q
 | 
|---|
| 73 |  . . S VAFCA08=1
 | 
|---|
| 74 |  . . D EDIT^VAFCPTED(RGRSDFN,RGRSARAY,".01;.03;.09;.02;.2403") ;**7 broadcasted fields - removed .05,.08,.111;.112;.113;.114;.115;.1112;.117;.131;.132;.211;.219;.31115
 | 
|---|
| 75 | EXIT ;
 | 
|---|
| 76 |  Q
 | 
|---|
| 77 |  ;
 | 
|---|
| 78 | MATCH(DFN,RGRSARAY,LASTNAME,SSN,ICN,CMOR,BULSUB) ;
 | 
|---|
| 79 |  Q:$G(DFN)=""!($G(RGRSARAY)="") 0
 | 
|---|
| 80 |  N COUNT,TRUE S (COUNT,TRUE)=0
 | 
|---|
| 81 |  S BULSUB=""
 | 
|---|
| 82 |  I $D(LASTNAME) D
 | 
|---|
| 83 |  . S COUNT=COUNT+1
 | 
|---|
| 84 |  . I (LASTNAME'=""),(LASTNAME=$P(@RGRSARAY@(.01),",",1)) S TRUE=TRUE+1
 | 
|---|
| 85 |  I $D(SSN) D
 | 
|---|
| 86 |  . S COUNT=COUNT+1
 | 
|---|
| 87 |  . I (SSN'=""),(SSN=$G(@RGRSARAY@(.09))) S TRUE=TRUE+1
 | 
|---|
| 88 |  I $D(ICN) D
 | 
|---|
| 89 |  . S COUNT=COUNT+1
 | 
|---|
| 90 |  . I (ICN'=""),(ICN=$G(@RGRSARAY@(991.01))) S TRUE=TRUE+1 Q
 | 
|---|
| 91 |  . S BULSUB=BULSUB_"ICN"
 | 
|---|
| 92 |  I $D(CMOR) D
 | 
|---|
| 93 |  . S COUNT=COUNT+1
 | 
|---|
| 94 |  . I (CMOR'=""),(CMOR=$G(@RGRSARAY@("SITENUM"))) S TRUE=TRUE+1 Q
 | 
|---|
| 95 |  . I BULSUB]"" S BULSUB=BULSUB_" & "
 | 
|---|
| 96 |  . S BULSUB=BULSUB_"CMOR"
 | 
|---|
| 97 |  I COUNT=TRUE Q 1
 | 
|---|
| 98 |  Q 0
 | 
|---|