| 1 | MPIFREQ ;SF/TN/CMC-CMOR CHANGE REQUEST ;FEB 20, 1998
 | 
|---|
| 2 |  ;;1.0; MASTER PATIENT INDEX VISTA ;**1,6,11,26,30,34**;30 Apr 99
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; Integration Agreements Utilized:
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ;   EXC^RGHLLOG     IA #2796
 | 
|---|
| 7 |  ;   START^RGHLLOG   IA #2796
 | 
|---|
| 8 |  ;   STOP^RGHLLOG    IA #2796
 | 
|---|
| 9 |  ;   $$EN^VAFCPID    IA #3015
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 | EN(TYPE,REQNO,ERROR,HL7) ;
 | 
|---|
| 12 |  ; Create HL7 message for Change of CMOR Request
 | 
|---|
| 13 |  N RGL,INST,USER,REASON,NDATE,ICN,PHONE,N0,CNT,HLA,HL,ID,XX,PID
 | 
|---|
| 14 |  S CNT=0,HL=0
 | 
|---|
| 15 |  S N0=$G(^MPIF(984.9,REQNO,0))
 | 
|---|
| 16 |  I N0="" S ERROR="Node for request #"_REQNO_" is not defined" Q
 | 
|---|
| 17 |  S INST=$P($$SITE^VASITE(),"^",3) ;station number
 | 
|---|
| 18 |  N X,Y,DIC
 | 
|---|
| 19 |  S DIC="^VA(200,",DIC(0)="MZO",X="`"_+$P(N0,"^",2)
 | 
|---|
| 20 |  D ^DIC
 | 
|---|
| 21 |  I $G(Y)<1 S USER=""
 | 
|---|
| 22 |  I $G(Y)>0 S USER=$G(Y(0,0))
 | 
|---|
| 23 |  S REASON=$P($G(^MPIF(984.9,REQNO,1)),"^",2)
 | 
|---|
| 24 |  S NDATE=$P(N0,"^",3)
 | 
|---|
| 25 |  S ICN=$$ICN^MPIFNQ(+$P(N0,"^",4))
 | 
|---|
| 26 |  S PHONE=$P(N0,"^",5)
 | 
|---|
| 27 |  S ID=$P(N0,"^")
 | 
|---|
| 28 |  D INIT^HLFNC2("MPIF CMOR REQUEST",.HL)
 | 
|---|
| 29 |  I HL D START^RGHLLOG(),EXC^RGHLLOG(220,"Unable to setup HL7 for sending Change of CMOR Request # "_REQNO_" FOR ICN= "_ICN,$P(N0,"^",4)),STOP^RGHLLOG() D RESET(REQNO) Q
 | 
|---|
| 30 |  K HLL("LINKS") N MPILK
 | 
|---|
| 31 |  S MPILK=$$MPILINK^MPIFAPI ;routing all messages through the MPI
 | 
|---|
| 32 |  I +MPILK<0 D  Q
 | 
|---|
| 33 |  .D START^RGHLLOG()
 | 
|---|
| 34 |  .D EXC^RGHLLOG(224,"No MPI link found for Change CMOR Request # "_REQNO_" for ICN="_ICN,$P(N0,"^",4))
 | 
|---|
| 35 |  .D STOP^RGHLLOG()
 | 
|---|
| 36 |  .D RESET^MPIFREQ(REQNO)
 | 
|---|
| 37 |  .S ERROR="-1^No Links found"
 | 
|---|
| 38 |  ;Broadcast new CMOR to MPI which will send it out to all sites
 | 
|---|
| 39 |  S HLL("LINKS",1)="MPIF CMOR RESPONSE^"_MPILK
 | 
|---|
| 40 |  S CNT=CNT+1,PID=$$EN^VAFCPID(+$P(N0,"^",4),"1,2,4,5,6,7,8,11,12,13,14,16,17,19")
 | 
|---|
| 41 |  S HLA("HLS",CNT)=PID
 | 
|---|
| 42 |  S CNT=CNT+1
 | 
|---|
| 43 |  S CMOR=$P(^MPIF(984.9,REQNO,0),"^",9),CMOR=$$STA^XUAF4(CMOR)
 | 
|---|
| 44 |  S HLA("HLS",CNT)="NTE"_HL("FS")_HL("FS")_"P"_HL("FS")_PHONE_HL("FS")_REASON_HL("FS")_HL("FS")_ID_HL("FS")_INST_HL("FS")_HL("FS")_CMOR
 | 
|---|
| 45 |  S CNT=CNT+1
 | 
|---|
| 46 |  S HLA("HLS",CNT)="EVN"_HL("FS")_"A31"_HL("FS")_NDATE_HL("FS")_HL("FS")_""_HL("FS")_USER
 | 
|---|
| 47 |  N RLST
 | 
|---|
| 48 |  D GENERATE^HLMA("MPIF CMOR REQUEST","LM",1,.RLST,"",.HL)
 | 
|---|
| 49 |  I 'RLST D START^RGHLLOG(),EXC^RGHLLOG(220,"Unable to setup HL7 for sending Change of CMOR Request # "_REQNO_" for ICN= "_ICN,$P(N0,"^",4)),STOP^RGHLLOG(),RESET(REQNO)
 | 
|---|
| 50 |  Q
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 | RESET(REQNO) ; reset status to Open
 | 
|---|
| 53 |  S DIE="^MPIF(984.9,",DA=REQNO,DR=".06///1" D ^DIE
 | 
|---|
| 54 |  K DIE,DA,DR
 | 
|---|
| 55 |  Q
 | 
|---|
| 56 |  ;
 | 
|---|
| 57 | IN(INST,USER,REASON,NDATE,ICN,PHONE,ID) ;Process an incoming CMOR request
 | 
|---|
| 58 |  N INSTN,PATIEN,MAIL,MPIF,TYPE,N0,IEN,XMCHAN,XMDUZ,XMTEXT,XMSUB,XMY,TEXT,X
 | 
|---|
| 59 |  S PATIEN=$$GETDFN^MPIF001(ICN)
 | 
|---|
| 60 |  I PATIEN<1 D  Q
 | 
|---|
| 61 |  . D START^RGHLLOG()
 | 
|---|
| 62 |  . D EXC^RGHLLOG(210,"Received CMOR Change Request for ICN "_ICN_" ICN not Found. Request # "_ID)
 | 
|---|
| 63 |  . D STOP^RGHLLOG()
 | 
|---|
| 64 |  S IEN=$$ADD^MPIFNEW(ID) ;add request to request file
 | 
|---|
| 65 |  S TYPE=2 ;type of action to Request Received From
 | 
|---|
| 66 |  S INSTN=$G(HL("SFN")) ; site that sent this message - station #
 | 
|---|
| 67 |  S INST=$$IEN^XUAF4(INSTN),INST="`"_INST ; institution ien
 | 
|---|
| 68 |  S DIE="^MPIF(984.9,",DA=IEN,DR="[MPIF REQUEST INCOMING]" D ^DIE
 | 
|---|
| 69 |  I $$IFVCCI^MPIF001(+PATIEN)=-1 D PUSH(IEN) Q
 | 
|---|
| 70 |  ; ^ your site isn't the CMOR, so this is a push to make you the CMOR
 | 
|---|
| 71 |  S DIE="^MPIF(984.9,",DA=IEN,DR=".09///"_INST D ^DIE
 | 
|---|
| 72 |  ; ^ update CMOR AFTER APPROVAL field
 | 
|---|
| 73 |  I $$AUTO^MPIFNQ() D AUTO(IEN) Q
 | 
|---|
| 74 |  S MAIL=$$MAIL^MPIFUTL()
 | 
|---|
| 75 |  I MAIL="" S MAIL="MPIF EXCEPTIONS"
 | 
|---|
| 76 |  S XMDUZ="MPI VISTA Package",XMTEXT="MPIF(1,",MPIF(1,1)="New Coordinating Master Of Record (CMOR) request received for patient "_$S($P($G(^DPT(+PATIEN,0)),U)]"":$P(^DPT(PATIEN,0),"^")_" ("_$E($P(^(0),"^",9),6,9)_")",1:"UNKNOWN")
 | 
|---|
| 77 |  I MAIL="MPIF EXCEPTIONS" S XMTEXT=XMTEXT_" no mail group defined for CMOR requests"
 | 
|---|
| 78 |  S XMSUB="CMOR Change Request #"_$P(^MPIF(984.9,IEN,0),"^"),XMY("G."_MAIL)="" D ^XMD
 | 
|---|
| 79 |  Q
 | 
|---|
| 80 |  ;
 | 
|---|
| 81 | AUTO(REQNO) ;Process a request automatically
 | 
|---|
| 82 |  N DFN,MPIFERR,DIE,DR,DA,CMOR,RES,CMORN
 | 
|---|
| 83 |  S MPIFERR=0
 | 
|---|
| 84 |  S DIE="^MPIF(984.9,",DR="[MPIF REVIEW AUTO]",DA=REQNO D ^DIE
 | 
|---|
| 85 |  S DFN=$P($G(^MPIF(984.9,REQNO,0)),"^",4)
 | 
|---|
| 86 |  S CMORN=$P($G(^MPIF(984.9,REQNO,0)),"^",7)
 | 
|---|
| 87 |  S CMOR=$$CMORNAME^MPIF001(CMORN)
 | 
|---|
| 88 |  I +CMOR=-1 D START^RGHLLOG(),EXC^RGHLLOG(220,"CMOR not sent in Change CMOR message for patient DFN= "_DFN_" Request # "_REQNO,DFN),STOP^RGHLLOG(),RESET2(REQNO)
 | 
|---|
| 89 |  Q:+CMOR=-1      ;No CMOR defined
 | 
|---|
| 90 |  I $P($G(^MPIF(984.9,REQNO,1)),"^",3)=2 D
 | 
|---|
| 91 |  .S RES=1,RES=$$CHANGE^MPIF001(DFN,CMORN)
 | 
|---|
| 92 |  .I +RES<1 I +RES<1 D START^RGHLLOG(),EXC^RGHLLOG(220,"Unable to Change CMOR to "_CMOR_" in a CMOR Change Message for Patient DFN= "_DFN_" Request # "+REQNO,DFN),STOP^RGHLLOG(),RESET2(REQNO)
 | 
|---|
| 93 |  .Q:+RES<1
 | 
|---|
| 94 |  .D BROAD^MPIFCMOR(REQNO,.MPIFERR)
 | 
|---|
| 95 |  .I +MPIFERR=0 D EN^MPIFRESS(REQNO)
 | 
|---|
| 96 |  .; ^ trigger approval msg
 | 
|---|
| 97 |  Q
 | 
|---|
| 98 |  ;
 | 
|---|
| 99 | RESET2(REQNO) ; reset status to Pending Approval
 | 
|---|
| 100 |  S DIE="^MPIF(984.9,",DA=REQNO,DR=".06///3" D ^DIE
 | 
|---|
| 101 |  K DIE,DA,DR
 | 
|---|
| 102 |  Q
 | 
|---|
| 103 |  ;
 | 
|---|
| 104 | PUSH(IEN) ;Change of CMOR Request is a Push
 | 
|---|
| 105 |  ; just want to get request into 984.9 for
 | 
|---|
| 106 |  ; tracking purposes, marking it as approved
 | 
|---|
| 107 |  N DA,DIE,X,Y,TEXT
 | 
|---|
| 108 |  S DIE="^MPIF(984.9,",DA=IEN,TEXT="Auto change - CMOR pushed here"
 | 
|---|
| 109 |  S DR=".06///4;1.03///4;3.01///"_TEXT_";.09///`"_+$$SITE^VASITE()
 | 
|---|
| 110 |  D ^DIE
 | 
|---|
| 111 |  Q
 | 
|---|