| 1 | SDWLIFT ;IOFO BAY PINES/OG - INTER-FACILITY TRANSFER: CONTROL RESPONSES;Compiled March 29, 2005 15:36:25  ; Compiled January 25, 2007 09:47:44  ; Compiled April 16, 2007 10:12:05
 | 
|---|
| 2 |  ;;5.3;Scheduling;**415,446**;AUG 13 1993;Build 77
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;******************************************************************
 | 
|---|
| 5 |  ;                             CHANGE LOG
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  ;   DATE                        PATCH                   DESCRIPTION
 | 
|---|
| 8 |  ;   ----                        -----                   -----------
 | 
|---|
| 9 |  ;   12/12/05                    SD*5.3*446              Enhancements
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 | MSGSVR ;xfer message server
 | 
|---|
| 12 |  ;variables provided by server XQ*
 | 
|---|
| 13 |  ;XQSOP : server option name
 | 
|---|
| 14 |  ;XQMSG : server request message number
 | 
|---|
| 15 |  ;XQSND : DUZ of sender
 | 
|---|
| 16 |  ;XQSUB : subject
 | 
|---|
| 17 |  ;SDMSG : local array of message lines
 | 
|---|
| 18 |  N SDWLMSG
 | 
|---|
| 19 |  D
 | 
|---|
| 20 |  .I $E(XQSUB,1,3)="RE:" Q  ;quit for messages that are replies to original
 | 
|---|
| 21 |  .I XQSUB="SDWL TRANSFER REQUEST" D MSGSVRRQ^SDWLIFT0 Q  ;transfer request
 | 
|---|
| 22 |  .I XQSUB="SDWL TRANSFER ACKNOWLEDGEMENT" D MSGSVRAR Q  ;acknowledge request from receiving facility
 | 
|---|
| 23 |  .I XQSUB="SDWL TRANSFER REMOVAL REQUEST" D MSGSVRRM^SDWLIFT0 Q  ;remove request
 | 
|---|
| 24 |  .I XQSUB="SDWL TRANSFER REMOVAL REQUEST ACKNOWLEDGEMENT" D MSGSVRRA Q  ;remove request acknowledgement
 | 
|---|
| 25 |  .I XQSUB="SDWL TRANSFER ACCEPTANCE" D MSGSVRAC Q  ;transaction accepted.
 | 
|---|
| 26 |  .I XQSUB="SDWL TRANSFER REJECTION" D MSGSVRRJ Q  ;transaction rejected.
 | 
|---|
| 27 |  .I XQSUB="SDWL TRANSFER STATUS CHANGE" D MSGSVRSC Q  ;status changed
 | 
|---|
| 28 |  .S SDWLMSG(1,0)="Message received by S.SDWL-XFER-SERVER option has an unrecognized message subject"
 | 
|---|
| 29 |  .D ERR(.SDWLMSG)
 | 
|---|
| 30 |  .Q
 | 
|---|
| 31 |  K XQMSG,XQSND,XQSUB
 | 
|---|
| 32 |  Q
 | 
|---|
| 33 | MSGSVRAR ;Acknowledge request
 | 
|---|
| 34 |  N DIE,DA,DR,DIC,D,X,SDWLX,SDWLI,SDWLMSG,TMP,SDWLDA,SDWLIST
 | 
|---|
| 35 |  D RMSG
 | 
|---|
| 36 |  S SDWLI=$O(SDWLMSG(1),-1)  ;There's stuff between 0 and 1
 | 
|---|
| 37 |  F  S SDWLI=$O(SDWLMSG(SDWLI)) Q:'SDWLI  S SDWLX($P(SDWLMSG(SDWLI,0),U))=$P(SDWLMSG(SDWLI,0),U,3)
 | 
|---|
| 38 |  S DIC(0)="",DIC="^SDWL(409.35,",X="`"_SDWLX(.5) D ^DIC
 | 
|---|
| 39 |  ;If the transfer entry does not exist or does not belong to this request, send a removal request back
 | 
|---|
| 40 |  I Y=-1!(SDWLX(2)'=$$GET1^DIQ(409.35,SDWLX(.5),2,"I")) D SEND^SDWLIFT4(SDWLX(6),$$GET1^DIQ(4,$$FIND1^DIC(4,"","X",SDWLX(1),"D"),60)) Q
 | 
|---|
| 41 |  ; if this EWL entry is the subject of a transfer, close it and send message back to requesting facility
 | 
|---|
| 42 |  S SDWLIST="R",SDWLDA=$P(Y,U,2)
 | 
|---|
| 43 |  I $D(^SDWL(409.36,"C",SDWLDA)) S SDWLIST="C" D
 | 
|---|
| 44 |  .N DA,SDWLDUZ
 | 
|---|
| 45 |  .S DIE="^SDWL(409.3,"
 | 
|---|
| 46 |  .S DA=SDWLDA,SDWLDUZ=$$GET1^DIQ(409.35,SDWLIFTN,4,"I")
 | 
|---|
| 47 |  .S DR="21////^S X=""TR"";19////^S X=DT;20////^S X=SDWLDUZ;23////^S X=""C"""
 | 
|---|
| 48 |  .D ^DIE
 | 
|---|
| 49 |  .S DIE="^SDWL(409.36,",DA=$O(^SDWL(409.36,"C",SDWLDA,""))
 | 
|---|
| 50 |  .S DR="1///""R"";2///"_$$GET1^DIQ(409.35,SDWLIFTN,1,"I") D ^DIE
 | 
|---|
| 51 |  .D SENDST^SDWLIFT6(DA)
 | 
|---|
| 52 |  .Q
 | 
|---|
| 53 |  ;finally, set the transfer request file.
 | 
|---|
| 54 |  S DIE="^SDWL(409.35,",DA=SDWLX(.5),DR="3///"_SDWLIST_";6///"_SDWLX(6) D ^DIE Q
 | 
|---|
| 55 |  Q
 | 
|---|
| 56 | MSGSVRRA ;Removal acknowledgement
 | 
|---|
| 57 |  N SDWLX,SDWLNM,SDWLIFTN,SDWLSTN,SDWLINST,DIE,DA,DR,XMY,XMSUB,XMTEXT,XMDUZ,XMMG
 | 
|---|
| 58 |  D RMSG
 | 
|---|
| 59 |  S DIE=409.35,DA=$P(SDWLMSG(1,0),U,3)
 | 
|---|
| 60 |  D GETS^DIQ(DIE,DA_",",".01;6",,"TMP")
 | 
|---|
| 61 |  Q:'$D(TMP(DIE,DA_",",.01))  ;Already removed
 | 
|---|
| 62 |  S SDWLNM=TMP(DIE,DA_",",.01)  ;Patient name
 | 
|---|
| 63 |  S SDWLIFTN=TMP(DIE,DA_",",6)  ;Receiving facility's request id
 | 
|---|
| 64 |  S SDWLSTN=$$GET1^DIQ(DIE,DA,1)
 | 
|---|
| 65 |  S SDWLINST=$$FIND1^DIC(4,"","X",SDWLSTN,"D")
 | 
|---|
| 66 |  S DA=$P(SDWLMSG(1,0),U,3),DIK="^SDWL(409.35," D ^DIK
 | 
|---|
| 67 |  S XMY("G.SDWL-TRANSFER-ADMIN")="",XMSUB="INTER-FACILITY XFER: Removal of cancelled request",XMTEXT="SDWLX(",XMDUZ="POSTMASTER"
 | 
|---|
| 68 |  S SDWLX(0)=1,SDWLX(SDWLX(0),0)="The request to transfer "_SDWLNM_" to "_$$GET1^DIQ(4,SDWLINST,.01)_" ("_SDWLSTN_") has been recalled."
 | 
|---|
| 69 |  D COL80(.SDWLX)
 | 
|---|
| 70 |  S SDWLX(0)=SDWLX(0)+1,SDWLX(SDWLX(0),0)="",SDWLX(0)=SDWLX(0)+1,SDWLX(SDWLX(0),0)="The details have been removed from the system."
 | 
|---|
| 71 |  D ^XMD
 | 
|---|
| 72 |  I $G(XMMG)["Error" S SDWLMSG(0)=1,SDWLMSG(1,0)="Message aborted with the following error: "_XMMG D ERR(.SDWLMSG)
 | 
|---|
| 73 |  Q
 | 
|---|
| 74 | MSGSVRAC ;Acceptance notification.
 | 
|---|
| 75 |  N TMP,DIE,DA,DR,XMY,XMSUB,XMTEXT,XMDUZ,XMMG,SDWLDUZ,SDWLINST,SDWLNM,SDWLX,SDWLTXT,SDWLMSG
 | 
|---|
| 76 |  D RMSG
 | 
|---|
| 77 |  S DIE=409.35,DA=$P(SDWLMSG(1,0),U,3),DR="3///A;7///"_$P(SDWLMSG(2,0),U,3) D ^DIE
 | 
|---|
| 78 |  S SDWLSTN=$$GET1^DIQ(409.35,DA,1),SDWLINST=$$FIND1^DIC(4,"","X",SDWLSTN,"D"),SDWLNM=$$GET1^DIQ(409.35,DA,.01)
 | 
|---|
| 79 |  D GETS^DIQ(409.35,DA,".01;4","I","TMP")
 | 
|---|
| 80 |  S SDWLDUZ=TMP(409.35,DA_",",4,"I"),DIE("NO^")="NO EDITING"  ;Disposition the EWL entry.
 | 
|---|
| 81 |  S DIE="^SDWL(409.3,",DA=TMP(409.35,DA_",",.01,"I"),DR="19////^S X=DT;20////^S X=SDWLDUZ;21////^S X=""TR"";23////^S X=""C""" D ^DIE
 | 
|---|
| 82 |  S XMY("G.SDWL-TRANSFER-ADMIN")="",XMSUB="INTER-FACILITY XFER: Request accepted",XMTEXT="SDWLX(",XMDUZ="POSTMASTER"
 | 
|---|
| 83 |  S SDWLX(0)=1,SDWLX(SDWLX(0),0)="The request to transfer "_SDWLNM_" to "_$$GET1^DIQ(4,SDWLINST,.01)_" ("_SDWLSTN_") has been accepted by the receiving facility."
 | 
|---|
| 84 |  D COL80(.SDWLX)
 | 
|---|
| 85 |  S SDWLX(0)=SDWLX(0)+1,SDWLX(SDWLX(0),0)="",SDWLX(0)=SDWLX(0)+1,SDWLX(SDWLX(0),0)="The status has been updated and can be viewed in SDWL TRANSFER REQUEST"
 | 
|---|
| 86 |  D ^XMD
 | 
|---|
| 87 |  I $G(XMMG)["Error" S SDWLMSG(0)=1,SDWLMSG(1,0)="Message aborted with the following error: "_XMMG D ERR(.SDWLMSG)
 | 
|---|
| 88 |  Q
 | 
|---|
| 89 | MSGSVRRJ ;Rejection notification.
 | 
|---|
| 90 |  N DIE,DA,DR,SDWLX,SDWLINST,SDWLNM,SDWLTXT,SDWLMSG,XMY,XMSUB,XMTEXT,XMDUZ,XMMG
 | 
|---|
| 91 |  D RMSG
 | 
|---|
| 92 |  S DIE=409.35,DA=$P(SDWLMSG(1,0),U,3),SDWLSTN=$$GET1^DIQ(DIE,DA,1),SDWLINST=$$FIND1^DIC(4,"","X",SDWLSTN,"D"),SDWLNM=$$GET1^DIQ(DIE,DA,.01)
 | 
|---|
| 93 |  S DR="3///X" D ^DIE
 | 
|---|
| 94 |  S XMY("G.SDWL-TRANSFER-ADMIN")=""
 | 
|---|
| 95 |  S XMSUB="INTER-FACILITY XFER: Request declined",XMTEXT="SDWLX(",XMDUZ="POSTMASTER"
 | 
|---|
| 96 |  S SDWLX(0)=1,SDWLX(SDWLX(0),0)="The request to transfer "_SDWLNM_" to "_$$GET1^DIQ(4,SDWLINST,.01)_" ("_SDWLSTN_") has been rejected by the receiving facility."
 | 
|---|
| 97 |  D COL80(.SDWLX)
 | 
|---|
| 98 |  S SDWLX(0)=SDWLX(0)+1,SDWLX(SDWLX(0),0)="",SDWLX(0)=SDWLX(0)+1,SDWLX(SDWLX(0),0)="The status has been updated and can be viewed in, SDWL TRANSFER REQUEST"
 | 
|---|
| 99 |  D ^XMD
 | 
|---|
| 100 |  I $G(XMMG)["Error" S SDWLMSG(0)=1,SDWLMSG(1,0)="Message aborted with the following error: "_XMMG D ERR(.SDWLMSG)
 | 
|---|
| 101 |  Q
 | 
|---|
| 102 | MSGSVRSC ;Status changed
 | 
|---|
| 103 |  N SDWLDIS,SDWLDUZ,SDWLIFTN,SDWLINST,SDWLMSG,SDWLST35,SDWLST36,SDWLSTN,SDWLX
 | 
|---|
| 104 |  D RMSG
 | 
|---|
| 105 |  S SDWLST36=$P(SDWLMSG(2,0),U,3),SDWLST35=$S(SDWLST36="P":"R",SDWLST36="C":"A",SDWLST36="R":"X",1:SDWLST36)
 | 
|---|
| 106 |  I SDWLST36="T"  ;?
 | 
|---|
| 107 |  S DIE=409.35,(SDWLIFTN,DA)=$P(SDWLMSG(1,0),U,3),DR="3///"_SDWLST35_";7///"_$P(SDWLMSG(3,0),U,3) D ^DIE
 | 
|---|
| 108 |  S SDWLSTN=$$GET1^DIQ(409.35,SDWLIFTN,1),SDWLINST=$$FIND1^DIC(4,"","X",SDWLSTN,"D"),SDWLNM=$$GET1^DIQ(409.35,SDWLIFTN,.01)
 | 
|---|
| 109 |  S SDWLDIS=$P(SDWLMSG(5,0),U,3)
 | 
|---|
| 110 |  S XMY("G.SDWL-TRANSFER-ADMIN")=""
 | 
|---|
| 111 |  S XMSUB="INTER-FACILITY XFER: Transfer status change",XMTEXT="SDWLX(",XMDUZ="POSTMASTER"
 | 
|---|
| 112 |  S SDWLX(0)=1,SDWLX(SDWLX(0),0)="The the status of the transfer of "_SDWLNM_" to "_$$GET1^DIQ(4,SDWLINST,.01)_" ("_SDWLSTN_") has changed."
 | 
|---|
| 113 |  S SDWLX(0)=2,SDWLX(SDWLX(0),0)="It is now "_$$GET1^DIQ(409.35,SDWLIFTN,3)_"."
 | 
|---|
| 114 |  D COL80(.SDWLX)
 | 
|---|
| 115 |  S SDWLX(0)=SDWLX(0)+1,SDWLX(SDWLX(0),0)="",SDWLX(0)=SDWLX(0)+1,SDWLX(SDWLX(0),0)="The status has been updated and can be viewed in, SDWL TRANSFER REQUEST"
 | 
|---|
| 116 |  D ^XMD
 | 
|---|
| 117 |  I $G(XMMG)["Error" S SDWLMSG(0)=1,SDWLMSG(1,0)="Message aborted with the following error: "_XMMG D ERR(.SDWLMSG)
 | 
|---|
| 118 |  Q:SDWLST35'="A"
 | 
|---|
| 119 |  ; Close EWL entry
 | 
|---|
| 120 |  S DIE="^SDWL(409.3,"
 | 
|---|
| 121 |  S DA=$$GET1^DIQ(409.35,SDWLIFTN,.01,"I"),SDWLDUZ=$$GET1^DIQ(409.35,SDWLIFTN,4,"I")
 | 
|---|
| 122 |  S DR="21////^S X=SDWLDIS;19////^S X=DT;20////^S X=SDWLDUZ;23////^S X=""C"""
 | 
|---|
| 123 |  D ^DIE
 | 
|---|
| 124 |  Q
 | 
|---|
| 125 | COL80(SDWLX) ;Stop lines going over 80 columns.
 | 
|---|
| 126 |  N SDWLI,COLS
 | 
|---|
| 127 |  S COLS=79
 | 
|---|
| 128 |  F SDWLI=1:1 Q:'$D(SDWLX(SDWLI))  D:$L(SDWLX(SDWLI,0))>COLS
 | 
|---|
| 129 |  .N SDWLF,SDWLF0,SDWLX0
 | 
|---|
| 130 |  .S SDWLF=0
 | 
|---|
| 131 |  .F  S SDWLF=$F(SDWLX(SDWLI,0)," ",SDWLF) Q:SDWLF>COLS!'SDWLF  S SDWLF0=SDWLF
 | 
|---|
| 132 |  .S:'$D(SDWLX(SDWLI+1)) SDWLX(0)=SDWLI+1
 | 
|---|
| 133 |  .S SDWLX0=$G(SDWLX(SDWLI+1,0))
 | 
|---|
| 134 |  .S SDWLX(SDWLI+1,0)=$E(SDWLX(SDWLI,0),SDWLF0,$L(SDWLX(SDWLI,0)))
 | 
|---|
| 135 |  .S:SDWLX0'="" SDWLX(SDWLI+1,0)=SDWLX(SDWLI+1,0)_" "_SDWLX0
 | 
|---|
| 136 |  .S SDWLX(SDWLI,0)=$E(SDWLX(SDWLI,0),1,SDWLF0-2)
 | 
|---|
| 137 |  .Q
 | 
|---|
| 138 |  Q
 | 
|---|
| 139 | RMSG ;load message into local array
 | 
|---|
| 140 |  M SDWLMSG=^XMB(3.9,XQMSG,2)
 | 
|---|
| 141 |  Q
 | 
|---|
| 142 | ERR(SDWLX) ;send error message to developer
 | 
|---|
| 143 |  N XMSUB,XMY,XMTEXT,XMDUZ,SDWLMSG,SDWLI
 | 
|---|
| 144 |  S XMY("G.SDWL-TRANSFER-ADMIN")="",XMSUB="Error from S.SDWL-XFER Server",XMTEXT="SDWLMSG(",XMDUZ="POSTMASTER"
 | 
|---|
| 145 |  S SDWLMSG(1,0)="      Forum Message #: "_XQMSG
 | 
|---|
| 146 |  S SDWLMSG(2,0)="Sender's Mail Address: "_XQSND
 | 
|---|
| 147 |  S SDWLMSG(3,0)="              Subject: "_XQSUB
 | 
|---|
| 148 |  S SDWLMSG(4,0)="",SDWLMSG(0)=4
 | 
|---|
| 149 |  F SDWLI=1:1:SDWLX(0) S SDWLMSG(0)=SDWLMSG(0)+1,SDWLMSG(SDWLMSG(0),0)=SDWLX(SDWLI,0)
 | 
|---|
| 150 |  D ^XMD
 | 
|---|
| 151 |  Q
 | 
|---|
| 152 | GETTN(SDWLINFO) ;Get transfer id.
 | 
|---|
| 153 |  N LAST,DIR,Y
 | 
|---|
| 154 |  S LAST=$O(SDWLINFO(":"),-1)
 | 
|---|
| 155 |  I 'LAST S DIR(0)="Y",DIR("A")="No entries. OK",DIR("B")="YES" D ^DIR Q 0
 | 
|---|
| 156 |  I LAST=1 S Y=1  ;If there is only one, don't ask.
 | 
|---|
| 157 |  E  S DIR(0)="L^1:"_LAST,DIR("A")="Which entry?" D ^DIR
 | 
|---|
| 158 |  Q $G(SDWLINFO(+Y,1),0)
 | 
|---|
| 159 | EXMNU Q
 | 
|---|
| 160 | ENMNU Q
 | 
|---|