| [613] | 1 | MPIFA24 ;BPOFO/CMC-A24 PROCESSING ROUTINE ;18 Mar 02 | 
|---|
|  | 2 | ;;1.0; MASTER PATIENT INDEX VISTA ;**22,24,27,31,25,41,39,48**;30 Apr 99;Build 6 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | ; Integration Agreements Utilized: | 
|---|
|  | 5 | ;  START, EXC, STOP^RGHLLOG - #2796 | 
|---|
|  | 6 | ;  BLDEVN, BLDPD1, BLDPID^VAFCQRY - #3630 | 
|---|
|  | 7 | ;  ^DPT("AICN" - #2070 | 
|---|
|  | 8 | ;  DELETETF^VAFCTFU, FILE^VAFCTFU - #2988 | 
|---|
|  | 9 | ; | 
|---|
|  | 10 | ;PROCESS A24 RESULTING FROM A28 ADD TO MPI MESSAGE OR FROM A40 MERGE | 
|---|
|  | 11 | A24 ; | 
|---|
|  | 12 | N MPII,MPIJ,ARRY,SEG,CNT,ERR,SITE,MSG,DFN,IEN,LIST,RARRY | 
|---|
|  | 13 | S (CNT,ERR,FIRST)=1 | 
|---|
|  | 14 | F MPII=1:1 X HLNEXT Q:HLQUIT'>0  S MSG=HLNODE D | 
|---|
|  | 15 | .S MPIJ=0 F  S MPIJ=$O(HLNODE(MPIJ)) Q:'MPIJ  S MSG(MPIJ)=HLNODE(MPIJ) | 
|---|
|  | 16 | .S SEG=$E(HLNODE,1,3) | 
|---|
|  | 17 | .I SEG="MSH" D MSH(.ARRY,.MSG) Q | 
|---|
|  | 18 | .I SEG="EVN" D EVN(.ARRY,.MSG) Q | 
|---|
|  | 19 | .I SEG="PID" D PID(.ARRY,.MSG,FIRST) D:FIRST=1  S FIRST=2 Q | 
|---|
|  | 20 | ..;preserve the retained ICN values 991.01 and 991.02 | 
|---|
|  | 21 | .. S RARRY(991.01)=ARRY(991.01),RARRY(991.02)=ARRY(991.02) | 
|---|
|  | 22 | .I SEG="PD1" D PD1(.ARRY,.MSG) Q | 
|---|
|  | 23 | ; | 
|---|
|  | 24 | ;restore the retained ICN values | 
|---|
|  | 25 | S ARRY(991.01)=RARRY(991.01),ARRY(991.02)=RARRY(991.02) | 
|---|
|  | 26 | ;UPDATE 991.01, 991.02, 991.03 | 
|---|
|  | 27 | ;**41 first check for DFN, if this DFN location is here | 
|---|
|  | 28 | I $G(ARRY("DFN",2))'=""&($G(ARRY("DFNLOC"))=$P($$SITE^VASITE,"^",3)) S DFN=ARRY("DFN",2) | 
|---|
|  | 29 | ;**41 if dfn is not passed set DFN from ICN | 
|---|
|  | 30 | I $G(DFN)="" D | 
|---|
|  | 31 | . I $G(ARRY("ICN",2))'="" S DFN=$$GETDFN^MPIF001(ARRY("ICN",2)) | 
|---|
|  | 32 | . I $G(ARRY("ICN",2))=""!(+$G(DFN)'>0) D | 
|---|
|  | 33 | .. I $G(ARRY("DFN",2))'="" S DFN=ARRY("DFN",2) | 
|---|
|  | 34 | .. I $G(ARRY("DFN",2))="" S DFN=ARRY("DFN",1) | 
|---|
|  | 35 | S ARRY(991.03)=$$LKUP^XUAF4(ARRY(991.03)) | 
|---|
|  | 36 | I +$G(DFN)'>0 S ERR="-1^Unknown Identifier(s) ICN#"_$G(ARRY("ICN",2))_" and DFN#"_$G(ARRY("DFN",2)) | 
|---|
|  | 37 | I +$G(DFN)>0 S ERR=$$UPDATE^MPIFAPI(DFN,"ARRY",0) D | 
|---|
|  | 38 | .;remove ALL Treating Facilities except your sites and add the CMOR | 
|---|
|  | 39 | .D TFL^VAFCTFU1(.LIST,DFN) I $O(LIST(0)) D | 
|---|
|  | 40 | .. N LOC,MPINODE,LOCIEN,CMOR,MPIFX,ERROR | 
|---|
|  | 41 | .. S (CMOR,MPIFX)=0 F  S MPIFX=$O(LIST(MPIFX)) Q:'MPIFX  I $P(LIST(MPIFX),"^",5)="VAMC" D | 
|---|
|  | 42 | ... ;get MPI node | 
|---|
|  | 43 | ... S MPINODE=$$MPINODE^MPIFAPI(DFN),LOC=$P(LIST(MPIFX),"^"),LOCIEN=$$IEN^XUAF4(LOC) | 
|---|
|  | 44 | ... I LOC=$P($$SITE^VASITE,"^",3) Q  ;do not delete own site | 
|---|
|  | 45 | ... I LOCIEN=$P(MPINODE,"^",3) S CMOR=LOCIEN Q  ;do not delete CMOR site | 
|---|
|  | 46 | ... S ERROR=$$DELETETF^VAFCTFU($P(MPINODE,"^",1),LOCIEN) | 
|---|
|  | 47 | .. ;add CMOR site to TF list if it did not already exist | 
|---|
|  | 48 | .. I CMOR'=0 D FILE^VAFCTFU(DFN,CMOR,1) | 
|---|
|  | 49 | .; trigger A31 to MPI incase there have been edits since the ICN was created -- tasked off | 
|---|
|  | 50 | .; **39 DON'T TASK OFF A31 IF MOVING FROM ONE NATIONAL ICN TO A DIFFERENT NATIONAL ICN | 
|---|
|  | 51 | .I ARRY("ICN",1)=ARRY("ICN",2) D | 
|---|
|  | 52 | ..S ZTRTN="TA31^MPIFA31B",ZTDESC="A31 triggered from A24 for DFN "_DFN ;**39 added DFN to text | 
|---|
|  | 53 | ..S ZTSAVE("DFN")=DFN,ZTIO="",ZTDTH=$$FMADD^XLFDT($$NOW^XLFDT,0,0,1,0) | 
|---|
|  | 54 | ..D ^%ZTLOAD | 
|---|
|  | 55 | .I ARRY("ICN",1)'=ARRY("ICN",2) D RESEX^MPIFDUP(DFN,2) ;**48 | 
|---|
|  | 56 | .K ZTRTN,ZTDESC,ZTIO,ZTSAVE,ZTDTH,ZTREQ | 
|---|
|  | 57 | ; | 
|---|
|  | 58 | S HLA("HLA",1)="MSA"_HL("FS")_"AA"_HL("FS")_HL("MID")_HL("FS")_$S(+$G(ERR)'>0:$P(ERR,"^",2),1:"") | 
|---|
|  | 59 | S $P(HLA("HLA",1),HL("FS"),7)="ICN="_ARRY("ICN",1) | 
|---|
|  | 60 | D LINK^HLUTIL3(ARRY("SITE"),.LINK) S IEN=$O(LINK(0)),HLL("LINKS",1)="^"_LINK(IEN) | 
|---|
|  | 61 | D GENACK^HLMA1(HL("EID"),HLMTIENS,HL("EIDS"),"LM",1,.MPIFRSLT,"",.HL) | 
|---|
|  | 62 | K LINK,MPIFRSLT | 
|---|
|  | 63 | ;PATCH 25 | 
|---|
|  | 64 | I ARRY("ICN",1)'=ARRY("ICN",2),ARRY("ICN",2)'="" D | 
|---|
|  | 65 | .; ^ checking if this is a result of a "merge" of ICNs from the MPI | 
|---|
|  | 66 | .; to trigger if this is station 200 the MERGE for the FHIE Framework | 
|---|
|  | 67 | .Q:$P($$SITE^VASITE,"^",3)'=200 | 
|---|
|  | 68 | .N FHIE S FHIE=$$MERGE^OMGPIDMI(ARRY("ICN",2),ARRY("ICN",1)) | 
|---|
|  | 69 | .;       ^^ THIS API IS ONLY AVAILABLE ON THE FHIE HOST SYSTEM | 
|---|
|  | 70 | .I +FHIE=-1 D START^RGHLLOG(),EXC^RGHLLOG(208,$P(FHIE,"^",2),DFN),STOP^RGHLLOG() | 
|---|
|  | 71 | Q | 
|---|
|  | 72 | ; | 
|---|
|  | 73 | MSH(ARY,MSG) ;processing MSH fields | 
|---|
|  | 74 | N COMP | 
|---|
|  | 75 | S COMP=$E(HL("ECH"),1) | 
|---|
|  | 76 | S ARY("SITE")=$$LKUP^XUAF4($P($P(MSG,HL("FS"),4),COMP)) | 
|---|
|  | 77 | Q | 
|---|
|  | 78 | ; | 
|---|
|  | 79 | EVN(ARY,MSG) ;processing EVN fields | 
|---|
|  | 80 | S ARY("EVTR")=$P(MSG,HL("FS"),2) ;not currently used | 
|---|
|  | 81 | S ARY("DLT")=$$FMDATE^HLFNC($P(MSG,HL("FS"),3)) | 
|---|
|  | 82 | Q | 
|---|
|  | 83 | ; | 
|---|
|  | 84 | PID(ARY,MSG,FIRST) ;processing PID fields | 
|---|
|  | 85 | N REP,PID,COMP,SUBCOMP,MPIDFN,MPISSN,ICN | 
|---|
|  | 86 | S REP=$E(HL("ECH"),2),COMP=$E(HL("ECH"),1),SUBCOMP=$E(HL("ECH"),4) | 
|---|
|  | 87 | S MPISSN="",MPIDFN="" | 
|---|
|  | 88 | ;**41 replaced with line below D PIDPROC^MPIFA43(.ICN,.MPISSN,.MPIDFN,.PID) | 
|---|
|  | 89 | D PIDP^RGADTP1(.MSG,.ARY,.HL) | 
|---|
|  | 90 | I FIRST=1 S ARY(991.01)=+ARY("ICN"),ARY(991.02)=$P(ARY("ICN"),"V",2) | 
|---|
|  | 91 | S ARY("ICN",FIRST)=ARY("ICN") | 
|---|
|  | 92 | S ARY("SSN",FIRST)=ARY("SSN") | 
|---|
|  | 93 | S ARY("DFN",FIRST)=ARY("DFN") | 
|---|
|  | 94 | Q | 
|---|
|  | 95 | ; | 
|---|
|  | 96 | PD1(ARY,MSG) ;processing PD1 fields | 
|---|
|  | 97 | N COMP | 
|---|
|  | 98 | S COMP=$E(HL("ECH"),1) | 
|---|
|  | 99 | S ARY(991.03)=$P($P(HLNODE,HL("FS"),4),COMP,3) | 
|---|
|  | 100 | Q | 
|---|
|  | 101 | ; | 
|---|
|  | 102 | PROC ; | 
|---|
|  | 103 | N NXT,DFN | 
|---|
|  | 104 | F NXT=1:1 X HLNEXT Q:HLQUIT'>0  D | 
|---|
|  | 105 | .I $E(HLNODE,1,3)="MSA" S DFN=$P($P(HLNODE,HL("FS"),7),"=",2) | 
|---|
|  | 106 | .I $E(HLNODE,1,3)="MSA"&($P(HLNODE,HL("FS"),4)'="") D | 
|---|
|  | 107 | ..; ERROR RETURNED IN MSA - LOG EXCEPTION | 
|---|
|  | 108 | ..D START^RGHLLOG(HLMTIEN,"","") | 
|---|
|  | 109 | ..D EXC^RGHLLOG(208,$P(HLNODE,HL("FS"),4)_" for HL msg# "_HLMTIEN,DFN) | 
|---|
|  | 110 | ..D STOP^RGHLLOG(0) | 
|---|
|  | 111 | K ^XTMP("MPIFA24%"_DFN) | 
|---|
|  | 112 | Q | 
|---|