| 1 | RGRSENS ;ALB/RJS,CML-PT SENSITIVITY PARSER/FILER ;06/25/98
 | 
|---|
| 2 |  ;;1.0; CLINICAL INFO RESOURCE NETWORK ;;30 Apr 99
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;Parse Incoming Message, and file.
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  N RGRSDFN,VAFCA,RGRS,VAFCA08,ARRAY,BOGUS,RGDC,RGRSDATA
 | 
|---|
| 8 |  N NAME,LASTNAME,SSN,ICN,CMOR,OTHSITE,SENSTVTY,CMORIEN,CMORDISP,BULSUB
 | 
|---|
| 9 |  S ARRAY="RGRS(2)"
 | 
|---|
| 10 |  D INITIZE^RGRSUTIL ;copy HL7 message into local RGDC array
 | 
|---|
| 11 |  D EN^RGRSPAR2(ARRAY) ;parse HL7 nessage into local array RGRS
 | 
|---|
| 12 |  I $$SKIP^RGRSZZPT(1,ARRAY) D  G EXIT ;skip if certain data is not there
 | 
|---|
| 13 |  . D SKIPBULL^RGRSBULL(ARRAY)
 | 
|---|
| 14 |  S RGRSDFN=$$GETDFN^MPIF001(@ARRAY@(991.01)) ;Get DFN from ICN
 | 
|---|
| 15 |  S OTHSITE=@ARRAY@("SENDING SITE")
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 |  ;If patient not known in site, send bulletin, go exit
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  I +RGRSDFN=-1 M RGRS("MESSAGE")=RGDC D NOT2^RGRSBUL1(ARRAY) G EXIT
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 |  D GETDATA^MPIFQ0("^DPT(",RGRSDFN,"RGRSDATA",".01;.09;991.01;991.03","EI")
 | 
|---|
| 22 |  S NAME=$G(RGRSDATA(2,RGRSDFN,.01,"E"))
 | 
|---|
| 23 |  S LASTNAME=$P(NAME,",",1)
 | 
|---|
| 24 |  S SSN=$G(RGRSDATA(2,RGRSDFN,.09,"E"))
 | 
|---|
| 25 |  S ICN=$G(RGRSDATA(2,RGRSDFN,991.01,"E"))
 | 
|---|
| 26 |  S CMORIEN=$G(RGRSDATA(2,RGRSDFN,991.03,"I"))
 | 
|---|
| 27 |  S CMOR=$$NS^XUAF4(CMORIEN)
 | 
|---|
| 28 |  S CMORDISP=$P(CMOR,"^",1)
 | 
|---|
| 29 |  S CMOR=$P(CMOR,"^",2)
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 |  S @ARRAY@("NAME")=@ARRAY@(.01)
 | 
|---|
| 32 |  S @ARRAY@("SSN")=@ARRAY@(.09)
 | 
|---|
| 33 |  S @ARRAY@("ICN")=@ARRAY@(991.01)
 | 
|---|
| 34 |  S @ARRAY@("CMOR")=$P($$NS^XUAF4($$LKUP^XUAF4(OTHSITE)),"^")
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 |  ;If ICN or CMOR don't match, send bulletin and go exit
 | 
|---|
| 37 |  I '$$MATCH(RGRSDFN,ARRAY,,,ICN,CMOR,.BULSUB) D  G EXIT
 | 
|---|
| 38 |  . D MTCHBULL^RGRSBULL(RGRSDFN,ARRAY,NAME,SSN,ICN,CMORDISP,BULSUB)
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 |  ;If patient is Sensitive at other site but not here send bulletin
 | 
|---|
| 41 |  S SENSTVTY=@ARRAY@("SENSITIVITY")
 | 
|---|
| 42 |  I '$$SENSTIVE(RGRSDFN),SENSTVTY D SENSTIVE^RGRSBUL1(RGRSDFN,ARRAY,NAME)
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 | EXIT ;
 | 
|---|
| 45 |  Q
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 | SENSTIVE(DFN) ;CHECK SENSITIVITY FLAG FOR A PATIENT
 | 
|---|
| 48 |  Q:$G(DFN)="" 0
 | 
|---|
| 49 |  Q:$P($G(^DGSL(38.1,DFN,0)),"^",2)=1 1
 | 
|---|
| 50 |  Q 0
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 | MATCH(DFN,ARRAY,LASTNAME,SSN,ICN,CMOR,BULSUB) ;
 | 
|---|
| 54 |  Q:$G(DFN)=""!($G(ARRAY)="") 0
 | 
|---|
| 55 |  N COUNT,TRUE S (COUNT,TRUE)=0
 | 
|---|
| 56 |  S BULSUB=""
 | 
|---|
| 57 |  I $D(LASTNAME) D
 | 
|---|
| 58 |  . S COUNT=COUNT+1
 | 
|---|
| 59 |  . I (LASTNAME'=""),(LASTNAME=$P(@ARRAY@(.01),",",1)) S TRUE=TRUE+1
 | 
|---|
| 60 |  I $D(SSN) D
 | 
|---|
| 61 |  . S COUNT=COUNT+1
 | 
|---|
| 62 |  . I (SSN'=""),(SSN=$G(@ARRAY@(.09))) S TRUE=TRUE+1
 | 
|---|
| 63 |  I $D(ICN) D
 | 
|---|
| 64 |  . S COUNT=COUNT+1
 | 
|---|
| 65 |  . I (ICN'=""),(ICN=$G(@ARRAY@(991.01))) S TRUE=TRUE+1 Q
 | 
|---|
| 66 |  . S BULSUB=BULSUB_"ICN"
 | 
|---|
| 67 |  I $D(CMOR) D
 | 
|---|
| 68 |  . S COUNT=COUNT+1
 | 
|---|
| 69 |  . I (CMOR'=""),(CMOR=$G(@ARRAY@("SITENUM"))) S TRUE=TRUE+1 Q
 | 
|---|
| 70 |  . I BULSUB]"" S BULSUB=BULSUB_" & "
 | 
|---|
| 71 |  . S BULSUB=BULSUB_"CMOR"
 | 
|---|
| 72 |  I COUNT=TRUE Q 1
 | 
|---|
| 73 |  Q 0
 | 
|---|