| [613] | 1 | MDRPCOW ; HOIFO/DP/NCA - Billing Widget ;10/3/05  12:17
 | 
|---|
 | 2 |         ;;1.0;CLINICAL PROCEDURES;**6**;Apr 01, 2004;Build 102
 | 
|---|
 | 3 |         ; Reference IA# 2240 [Supported] ENCRYP^XUSRB1 call
 | 
|---|
 | 4 |         ;               2241 [Supported] DECRYP^XUSRB1 call
 | 
|---|
 | 5 |         ;               10017 [Supported] ^DD("DD") reference
 | 
|---|
 | 6 |         ;               10040 [Supported] Hospital Location File Access
 | 
|---|
 | 7 |         ;               10045 [Supported] XUSHSHP call
 | 
|---|
 | 8 |         ;               10060 [Supported] FILE 200 references
 | 
|---|
 | 9 |         ;
 | 
|---|
 | 10 | RPC(RESULTS,OPTION,P1,P2,P3,P4,P5,P6,P7)        ; [Procedure] Main RPC call
 | 
|---|
 | 11 |         ; RPC: [MD TMDWIDGET]
 | 
|---|
 | 12 |         ;
 | 
|---|
 | 13 |         D CLEAN^DILF
 | 
|---|
 | 14 |         S RESULTS=$NA(^TMP("MDKUTL",$J)) K @RESULTS
 | 
|---|
 | 15 |         I $T(@OPTION)="" D  Q
 | 
|---|
 | 16 |         .S @RESULTS@(0)="-1^Error in RPC: MD TMDWIDGET at "_OPTION_U_$T(+0)
 | 
|---|
 | 17 |         D @OPTION S:'$D(@RESULTS) @RESULTS@(0)="-1^No return"
 | 
|---|
 | 18 |         D CLEAN^DILF
 | 
|---|
 | 19 |         Q
 | 
|---|
 | 20 |         ;
 | 
|---|
 | 21 | SUBMIT  ; Submit a final report to close out an entry in 702
 | 
|---|
 | 22 |         ;
 | 
|---|
 | 23 |         ; P1=702 IEN
 | 
|---|
 | 24 |         ; P2=Encoded E-Sig
 | 
|---|
 | 25 |         ; P3=Array containing the text for the note
 | 
|---|
 | 26 |         ;
 | 
|---|
 | 27 |         I '$D(^MDD(702,+P1,0)) S @RESULTS@(0)="-1^No such study" Q
 | 
|---|
 | 28 |         I $P(^MDD(702,+P1,0),U,9)=2 S @RESULTS@(0)="-1^Study is in Error status, cannot use study until the error is fixed." Q
 | 
|---|
 | 29 |         I "016"[$P(^MDD(702,+P1,0),U,9) S @RESULTS@(0)="-1^Cannot submit - not a Dialysis study." Q
 | 
|---|
 | 30 |         I $D(P3)<1 S @RESULTS@(0)="-1^No note text" Q
 | 
|---|
 | 31 |         I P2="" D PCE Q
 | 
|---|
 | 32 |         K ^TMP("MDTXT",$J)
 | 
|---|
 | 33 |         S X="",Y=1
 | 
|---|
 | 34 |         F  S X=$O(P3(X)) Q:X=""  S ^TMP("MDTXT",$J,Y)=P3(X),Y=Y+1
 | 
|---|
 | 35 |         ; a "1^Note Filed" if everything is ok otherwise an error msg
 | 
|---|
 | 36 |         I P2'="" S P2=$$DECRYP^XUSRB1(P2),P2=$$ENCRYP^XUSRB1(P2)
 | 
|---|
 | 37 |         ;S @RESULTS@(0)=$$SUBMIT^MDRPCOT2(+P1,P2,$NA(^TMP("MDTXT",$J)),.P7)
 | 
|---|
 | 38 |         S @RESULTS@(0)=$$SUBMIT^MDRPCOT2(+P1,P2,$NA(^TMP("MDTXT",$J)))
 | 
|---|
 | 39 |         I +@RESULTS@(0)>0 S @RESULTS@(0)="1^Approval Message"
 | 
|---|
 | 40 |         N XX S XX="",XX=$$UPDCONS^MDRPCOT1(+$P($G(^MDD(702,+P1,0)),U,5),+$P($G(^MDD(702,+P1,0)),U,6))
 | 
|---|
 | 41 |         ;
 | 
|---|
 | 42 |         K ^TMP("MDTXT",$J) Q
 | 
|---|
 | 43 |         Q
 | 
|---|
 | 44 |         ;
 | 
|---|
 | 45 | ESIG    ; [Procedure] Verify users electronic signature
 | 
|---|
 | 46 |         I $G(P1)="" D  Q
 | 
|---|
 | 47 |         .S @RESULTS@(0)="-1^Must supply electronic signature code"
 | 
|---|
 | 48 |         S X=$$DECRYP^XUSRB1(P1)
 | 
|---|
 | 49 |         D HASH^XUSHSHP
 | 
|---|
 | 50 |         I X'=$$GET1^DIQ(200,DUZ_",",20.4,"I") S @RESULTS@(0)="-1^E-Sig Invalid^"
 | 
|---|
 | 51 |         E  S @RESULTS@(0)="1^E-Sig Verifed^"_X
 | 
|---|
 | 52 |         Q
 | 
|---|
 | 53 |         ;
 | 
|---|
 | 54 | GETBILL ; Get Billing Data
 | 
|---|
 | 55 |         Q
 | 
|---|
 | 56 |         N MDFLD
 | 
|---|
 | 57 |         ;D BLDFLD^MDXMLFM(.MDFLD,702,".001;;STUDY_ID^.01;;PATIENT_ID")
 | 
|---|
 | 58 |         ;D BLDFLD^MDXMLFM(.MDFLD,702,".14;;ICD_01^.15;;ICD_02^.16;;ICD_03^.17;;ICD_04^.18;;CPT_01")
 | 
|---|
 | 59 |         ;D BLDFLD^MDXMLFM(.MDFLD,702,".19;;SC_CONDITION^.2;;MST^.21;;AO_EXPOSURE^.22;;IR_EXPOSURE^.23;;EV_CONTAMINENTS^.24;;HEAD_NECK_CANCER^.25;;COMBAT_VETERAN")
 | 
|---|
 | 60 |         ;D BLDFLD^MDXMLFM(.MDFLD,702,".26;;PRIMARY_PROVIDER_ID")
 | 
|---|
 | 61 |         ;D BLDFLD^MDXMLFM(.MDFLD,702,".26:.01;;PRIMARY_PROVIDER_NAME")
 | 
|---|
 | 62 |         ;D BLDFLD^MDXMLFM(.MDFLD,702,".27;;ATTENDING_PROVIDER_ID")
 | 
|---|
 | 63 |         ;D BLDFLD^MDXMLFM(.MDFLD,702,".27:.01;;ATTENDING_PROVIDER_NAME")
 | 
|---|
 | 64 |         ;D LOADONE^MDXMLFM(P1,702,.MDFLD)
 | 
|---|
 | 65 |         Q
 | 
|---|
 | 66 |         ;
 | 
|---|
 | 67 | SETBILL ; Set Billing Data
 | 
|---|
 | 68 |         N MDFDA,MDERR
 | 
|---|
 | 69 |         ;F X=0:1:13 S P2(X)=$G(P2(X)) D
 | 
|---|
 | 70 |         ;.D VAL^DIE(702,+P1_",",.14+(X*.01),"F",P2(X),.MDERR,"MDFDA")
 | 
|---|
 | 71 |         ;.Q:MDERR'="^"  ; Validated
 | 
|---|
 | 72 |         ;.S Y="Bad value: "_$$GET1^DID(702,.14+(X*.01),,"LABEL")_" '"_P2(X)_"'"
 | 
|---|
 | 73 |         ;.S @RESULTS@($O(@RESULTS@(""),-1)+1)=Y
 | 
|---|
 | 74 |         ;I $D(@RESULTS) S @RESULTS@(0)="-1^Errors filing data" Q
 | 
|---|
 | 75 |         ;D FILE^DIE("","MDFDA")
 | 
|---|
 | 76 |         S @RESULTS@(0)="1^Ok"
 | 
|---|
 | 77 |         Q
 | 
|---|
 | 78 |         ;
 | 
|---|
 | 79 | PCE     ; Set PCE Data
 | 
|---|
 | 80 |         ;
 | 
|---|
 | 81 |         ; P1=702 IEN
 | 
|---|
 | 82 |         ; P2=Encoded E-Sig
 | 
|---|
 | 83 |         ; P3=Array containing the text for the note
 | 
|---|
 | 84 |         ; P7=Array of Billing information
 | 
|---|
 | 85 |         ;
 | 
|---|
 | 86 |         N CTR,DFN,MDCON,MDFDA,MDGST,MDL,MDLOC,MDNOTE,MDPDT,MDPROC,MDRESU,MDTITL,MDTSTR,MDVST,MDVSTR,MDWP S CTR=0,MDGST=+P1,MDRESU=""
 | 
|---|
 | 87 |         I '$D(^MDD(702,+P1,0)) S @RESULTS@(0)="-1^No such study" Q
 | 
|---|
 | 88 |         ;
 | 
|---|
 | 89 |         ; Get data to set PCE data
 | 
|---|
 | 90 |         S (MDTSTR,MDRESU)=$$GETDATA^MDRPCOT2(MDGST)
 | 
|---|
 | 91 |         ; File Error message
 | 
|---|
 | 92 |         I +MDRESU<0 S @RESULTS@(0)=MDRESU Q
 | 
|---|
 | 93 |         I $G(MDTSTR)="" S @RESULTS@(0)="-1^No Data in study to set PCE data." Q
 | 
|---|
 | 94 |         F MDL="DFN","MDTITL","MDLOC","MDNOTE","MDCON","MDPROC","MDVSTR","MDNVST" D
 | 
|---|
 | 95 |         .S CTR=CTR+1,@MDL=$P(MDTSTR,"^",CTR)
 | 
|---|
 | 96 |         S (MDVST,MDRESU)=""
 | 
|---|
 | 97 |         I 'MDLOC S @RESULTS@(0)="-1^No Hospital Location." Q
 | 
|---|
 | 98 |         ; Create new visit, if no vstring
 | 
|---|
 | 99 |         S MDPDT=$$PDT^MDRPCOT1(MDGST)
 | 
|---|
 | 100 |         S:'MDPDT MDPDT=$P(MDVSTR,";",2) ; If No D/T Performed grab visit D/T
 | 
|---|
 | 101 |         ; File PCE Error message
 | 
|---|
 | 102 |         I MDNVST S MDRESU=$$EN1^MDPCE2(.P7,MDGST,$P(MDVSTR,";",2),MDPROC,$P(MDVSTR,";",3),"P",MDLOC) I +MDRESU S MDVST=+MDRESU
 | 
|---|
 | 103 |         I 'MDNVST S MDVST=$P($G(^MDD(702,+MDGST,1)),U) S MDRESU=$$EN1^MDPCE2(.P7,MDGST,$P(MDVSTR,";",2),MDPROC,$P(MDVSTR,";",3),"P",MDLOC) I +MDRESU S MDVST=+MDRESU
 | 
|---|
 | 104 |         I +MDRESU<0 S @RESULTS@(0)=MDRESU Q
 | 
|---|
 | 105 |         ;
 | 
|---|
 | 106 |         S @RESULTS@(0)="Approval Message"
 | 
|---|
 | 107 |         Q
 | 
|---|
 | 108 | GETLOC  ; Get the existing hospital location
 | 
|---|
 | 109 |         N MDCL,MDPR,MDVV
 | 
|---|
 | 110 |         S MDPR=$P($G(^MDD(702,+P1,0)),U,4)
 | 
|---|
 | 111 |         S MDVV=$P($G(^MDD(702,+P1,0)),U,7)
 | 
|---|
 | 112 |         ;S MDCL=$$GET1^DIQ(702.01,+MDPR_",",.05,"I")
 | 
|---|
 | 113 |         S MDCL=$P(MDVV,";",3)
 | 
|---|
 | 114 |         I 'MDCL S MDCL=$$GET1^DIQ(702.01,+MDPR_",",.05,"I")
 | 
|---|
 | 115 |         I 'MDCL S @RESULTS@(0)="-1^No Hospital Location." Q
 | 
|---|
 | 116 |         S Y=$P(MDVV,";",2) I Y'="" X ^DD("DD")
 | 
|---|
 | 117 |         S @RESULTS@(0)=MDCL_U_$$GET1^DIQ(44,MDCL_",",.01,"I")_U_Y
 | 
|---|
 | 118 |         Q
 | 
|---|
 | 119 | SETLOC  ; Set a new clinic location from GUI if non is found.
 | 
|---|
 | 120 |         N MDVV
 | 
|---|
 | 121 |         S MDVV=$P($G(^MDD(702,+P1,0)),U,7)
 | 
|---|
 | 122 |         I P2="" S @RESULTS@(0)="-1^No Location Selected."
 | 
|---|
 | 123 |         I $L(MDVV,";")=1 S MDVV=";"_MDVV
 | 
|---|
 | 124 |         S $P(MDVV,";",3)=P2
 | 
|---|
 | 125 |         S $P(^MDD(702,P1,0),U,7)=MDVV
 | 
|---|
 | 126 |         S @RESULTS@(0)="1^Okay Location Updated."
 | 
|---|
 | 127 |         Q
 | 
|---|
 | 128 | CHECK   ; return TRUE if PCE data filled
 | 
|---|
 | 129 |         N MDIL,MDOKAY,MDCK,MDECTR
 | 
|---|
 | 130 |         S (MDECTR,MDIL)=0,MDCK="",MDOKAY("POV")="",MDOKAY("CPT")="",MDOKAY("PRV")=""
 | 
|---|
 | 131 |         F  S MDIL=$O(@P2@(MDIL)) Q:MDIL=""  S MDCK=$G(@P2@(MDIL)) D
 | 
|---|
 | 132 |         . I $P(MDCK,U,1)="POV" S:$G(MDOKAY("POV"))="" MDOKAY("POV")=1
 | 
|---|
 | 133 |         . I $P(MDCK,U,1)="CPT" S:$G(MDOKAY("CPT"))="" MDOKAY("CPT")=1
 | 
|---|
 | 134 |         . I $P(MDCK,U,1)="PRV" S:$G(MDOKAY("PRV"))="" MDOKAY("PRV")=1
 | 
|---|
 | 135 |         F MDIL="POV","PRV","CPT" S MDECTR=MDECTR+$G(MDOKAY(MDIL))
 | 
|---|
 | 136 |         I MDECTR<3 S @RESULTS@(0)="-1^Missing PCE data--Review Data Again." Q
 | 
|---|
 | 137 |         S @RESULTS@(0)=1
 | 
|---|
 | 138 |         Q
 | 
|---|
 | 139 | NAME    ; Get the person name
 | 
|---|
 | 140 |         S @RESULTS@(0)="1^"_$$GET1^DIQ(200,+P2_",",.01,"E")
 | 
|---|
 | 141 |         Q
 | 
|---|
 | 142 | STAT    ; Get the okay status of the CP study
 | 
|---|
 | 143 |         N MDST,MDGN S MDGN=""
 | 
|---|
 | 144 |         S MDST=$$GET1^DIQ(702,+P1,.09,"E") S MDGN=MDST
 | 
|---|
 | 145 |         I $$GET1^DIQ(702,+P1,.09,"I")=2 S MDGN=MDGN_"^"_$$GET1^DIQ(702,+P1,.08,"E")
 | 
|---|
 | 146 |         S @RESULTS@(0)=MDGN
 | 
|---|
 | 147 |         Q
 | 
|---|
 | 148 | STATUS  ; [Procedure] Update transaction status
 | 
|---|
 | 149 |         N MDFDA
 | 
|---|
 | 150 |         S MDFDA(702,+P1_",",.09)=P2
 | 
|---|
 | 151 |         D FILE^DIE("","MDFDA")
 | 
|---|
 | 152 |         S @RESULTS@(0)="1^Done"
 | 
|---|
 | 153 |         Q
 | 
|---|