- DGMHVUTL ;ALB/JCH - Patient MHV Enrollment/Registration - Utilities ;09/12/14 11:30am
- ;;5.3;Registration;**903**;August 13, 1993;Build 82
- ;
- ; Submitted to OSEHRA 04/02/2015 by HP
- ; All entry points authored by James Harris 2014-2015
- ;
- Q
- QUESUC(DFN,DGMHVOUT) ; If last action entered by clerk was one of the Socialization actions
- ; from MHV SOCIALIZATION ACTIONS (#390.02) file entries for which "SELECTABLE LOCATIONS"
- ; includes SOCIALIZATION, display/prompt the "were you successful" message/question
- ;
- N DGSUPTXT
- S DGSUPTXT=$$ENQACHK(DFN)
- I DGSUPTXT]"" D Q
- .Q:$P($G(^DPT(DFN,2)),"^")
- .N NXT,MARX,DIR,DGTXTCNT S DIR(0)="YA",DIR("A",1)=" Please read the following to the patient:"
- .S DIR("?")=" Enter the patient's response to the question"
- .D TXT^DGMHV(DGSUPTXT,55) S DGTXTCNT=0,NXT=3 F S DGTXTCNT=$O(MARX(DGTXTCNT)) Q:'DGTXTCNT D
- ..I '$O(MARX(DGTXTCNT)) S DIR("A")=" "_MARX(DGTXTCNT)_""""_" (Y/N): " Q
- ..S DIR("A",NXT)=" """_MARX(DGTXTCNT),NXT=$G(NXT)+1
- .W ! D ^DIR S DGMHVOUT=$S(Y=1:"R",Y=0:"A",1:"")
- .I $G(DGMHVOUT)="R" N DIE,DA S DIE="^DPT(",DA=DFN,DR="537027////1;537030////"_$$NOW^XLFDT D ^DIE
- .H .5
- K DIR
- Q
- ;
- DSPENR(DFN,DGMHVFIN) ; Display patient's MHV Enrollment/Registration information
- ; This is the MHV Registration pseudo-screen display; allow entry of 1 to edit the fields as a group, in sequence.
- N ACTION,ACTIONE,REASON,REASONE,MHVOK,MHVOKND,MHVEN,MHVEN,MHVAU,MHVMSG,DGRSNTXT
- N X,Y,IORVON,IORVOFF,DIR,DIRUT,DGRSNCNT,DGRSPNS,DGSCHTR,DGDIR
- ;
- D HEADER(DFN)
- K MHVOK N DIC,DA,DR S DIQ(0)="I",DIC=2,DA=DFN,DR="537027:537040" D GETS^DIQ(DIC,DFN,DR,"I","MHVOK")
- S MHVEN=$G(MHVOK(2,DFN_",",537027,"I")),MHVAU=$G(MHVOK(2,DFN_",",537028,"I")),MHVMSG=$G(MHVOK(2,DFN_",",537029,"I"))
- S X="IORVON;IORVOFF" D ENDR^%ZISS
- W !!!,"[1] Registered: ",$S(MHVEN=0:"NO",MHVEN=1:"YES",1:"UNANSWERED") I MHVEN=1!(MHVEN=0) D
- .N ENRDT S ENRDT=$$ENDATE(DFN) I ENRDT&(MHVEN=1) W ?44,"Confirmed: "_ENRDT
- I MHVEN=0 S REASON=$G(MHVOK(2,DFN_",",537036,"I")) I REASON W !?12,"Reason: " S REASONE=$$LKUPRSN^DGMHVAC(REASON) D
- .N DGRSNTXT S DGRSNTXT=$$LKUPRTXT^DGMHVAC(DFN,2.1) I (REASONE="Other")&($L(DGRSNTXT)>1) S REASONE=REASONE_" - "_DGRSNTXT
- .N MARX,I,LINE D TXT^DGMHV(REASONE,58) F I=1:1:$O(MARX(""),-1) S LINE=$G(MARX(I)) D
- ..I I=1 W LINE S DGRSNCNT=1 Q
- ..W !?20,LINE
- ;
- W !!
- I ",1,"[(","_$G(MHVEN)_",") S DGDIR(2)=";2:Authentication" W "[2]"
- W ?7,"Authenticated: ",$S(MHVAU=0:"NO",MHVAU=1:"YES",MHVAU=2:"ACTION/IN PROGRESS",1:"UNANSWERED") D
- .I MHVAU!(MHVAU=0) N AUTHDT S AUTHDT=$$AUTHDATE(DFN) I AUTHDT&(MHVAU=1) W ?44,"Confirmed: "_AUTHDT
- I MHVAU=0,'$G(DGRSNCNT) S REASON=$G(MHVOK(2,DFN_",",537037,"I")) I REASON W !?12,"Reason: " S REASONE=$$LKUPRSN^DGMHVAC(REASON) D
- .N DGRSNTXT S DGRSNTXT=$$LKUPRTXT^DGMHVAC(DFN,2.2) I (REASONE="Other")&($L(DGRSNTXT)>1) S REASONE=REASONE_" - "_DGRSNTXT
- .N MARX,I,LINE D TXT^DGMHV(REASONE,58) F I=1:1:$O(MARX(""),-1) S LINE=$G(MARX(I)) D
- ..I I=1 W LINE S DGRSNCNT=1 Q
- ..W !?21,LINE
- I MHVAU=2 N ACTIEN S ACTIEN="" F S ACTIEN=$O(^DPT(DFN,4,"B",ACTIEN)) Q:ACTIEN="" D
- .N ACTTXT,LI S ACTTXT=$P($G(^DGMHV(390.02,+ACTIEN,3,1,0)),"^") I ACTTXT]"" D
- ..N TXTND S TXTND=1 F S TXTND=$O(^DGMHV(390.02,ACTIEN,3,TXTND)) Q:'TXTND S ACTTXT=ACTTXT_" "_^DGMHV(390.02,ACTIEN,3,TXTND,0)
- ..Q:$L(ACTTXT)<2 N MARX,INOD,LINE D TXT^DGMHV(ACTTXT,48) F INOD=1:1:$O(MARX(""),-1) S LINE=$G(MARX(INOD)) D
- ...I INOD=1 W !?14,"Action: ",LINE S DGRSNCNT=1 Q
- ...W !?22,LINE
- ;
- W !!
- I ",1,"[(","_$G(MHVAU)_",") S DGDIR(3)=";3:Secure Messaging" W "[3]"
- W ?4,"Secure Messaging: ",$S(MHVMSG=0:"NO",MHVMSG=1:"YES",MHVMSG=2:"ACTION/IN PROGRESS",1:"UNANSWERED") D
- .I MHVMSG!(MHVMSG=0) N MSGDT S MSGDT=$$MSGDATE(DFN) I MSGDT&(MHVMSG=1) W ?44,"Confirmed: "_MSGDT
- I MHVMSG=0,'$G(DGRSNCNT) S REASON=$G(MHVOK(2,DFN_",",537038,"I")) I REASON W !?12,"Reason: " S REASONE=$$LKUPRSN^DGMHVAC(REASON) D
- .N DGRSNTXT S DGRSNTXT=$$LKUPRTXT^DGMHVAC(DFN,2.3) I REASONE="Other"&($L(DGRSNTXT)>1) S REASONE=REASONE_" - "_DGRSNTXT
- .N MARX,I,LINE D TXT^DGMHV(REASONE,60) F I=1:1:$O(MARX(""),-1) S LINE=$G(MARX(I)) D
- ..I I=1 W LINE S DGRSNCNT=1 Q
- ..W !?20,LINE
- I MHVMSG=2 N ACTIEN S ACTIEN="" F S ACTIEN=$O(^DPT(DFN,3,"B",ACTIEN)) Q:ACTIEN="" D
- .N ACTTXT,LI S ACTTXT=$P($G(^DGMHV(390.02,+ACTIEN,3,1,0)),"^") I ACTTXT]"" D
- ..N TXTND S TXTND=1 F S TXTND=$O(^DGMHV(390.02,ACTIEN,3,TXTND)) Q:'TXTND S ACTTXT=ACTTXT_" "_^DGMHV(390.02,ACTIEN,3,TXTND,0)
- ..Q:$L(ACTTXT)<2 N MARX,INOD,LINE D TXT^DGMHV(ACTTXT,48) F INOD=1:1:$O(MARX(""),-1) S LINE=$G(MARX(INOD)) D
- ...I INOD=1 W !?14,"Action: ",LINE S DGRSNCNT=1 Q
- ...W !?22,LINE
- W !!!!!!!
- K DIRUT S DGMHVFIN=0
- K DGABB
- S DGSCHTR=$$SELFLDS(DFN)
- N DGDONE F Q:$G(DGDONE) D
- .N DIR S DIR("A")="Select a Registration step, or RETURN to continue: "
- .S DIR(0)="SAO^1:Registration"_$G(DGDIR(2))_$G(DGDIR(3))
- .D ^DIR S DGRSPNS=Y I DGSCHTR[(","_DGRSPNS_",") S DGDONE=1 Q
- .I DGRSPNS=""!(DGRSPNS="^") S DGRSPNS="" S DGDONE=1 Q
- .W !," Not a valid response",!
- S DGMHVFIN=$S(DGSCHTR[(","_DGRSPNS_",")=1:0,1:1)
- Q DGRSPNS
- ;
- ENQACHK(DFN) ; Return followup question in DGSUPTXT if last action taken for patient DFN was one of the socialization actions
- N DGSUP1,DGSUP2,DGSUP3,DGACT,DIR
- S DGMHVOUT=$G(DGMHVOUT)
- ; Get MHV SOCIALIZATION ACTIONS (#390.02) file entries for which "SELECTABLE LOCATIONS"
- ; includes SOCIALIZATION
- ; NOTE: If there are adjustments to the values in files 390.02 this API may need to be updated
- D GETACTS^DGMHV(.DGACT,"S")
- S DGSUP1="Were you successful in creating your My HealtheVet account?"
- S DGSUP2=$P(DGSUP1,"?")_" during your last visit?"
- S DGSUP3="Were you able to create a My HealtheVet account from the Registration instructions we gave you last time?"
- S DGSUPTXT=$S($$LASTACHK^DGMHVAC(DFN,$G(DGACT(1)))!$$LASTACHK^DGMHVAC(DFN,$G(DGACT(2))):DGSUP2,$$LASTACHK^DGMHVAC(DFN,$G(DGACT(3)))!$$LASTACHK^DGMHVAC(DFN,$G(DGACT(5))):DGSUP1,$$LASTACHK^DGMHVAC(DFN,$G(DGACT(4))):DGSUP3,1:"")
- Q DGSUPTXT
- ;
- GETLACT(DFN,DGLACTS) ; Get most recent MHV actions entered by clerk for patient DFN
- ; Input: DFN - Patient IEN
- ; Output: DGLACTS - Array of MHV actions
- ;
- N DGOT,LASTCNT,ACTCNT,X,X1,Y,LASTDT,LASTACT,LASTIEN,ACTCNT,FNDACT,LIENOK S (LASTACT,LASTIEN,DGLACTS,LASTCNT)=""
- S LASTDT="" F LASTCNT=1:1 S LASTDT=$O(^DPT(DFN,1,"B",LASTDT),-1) Q:'LASTDT!($G(DGOT)>4) D
- .F S LASTIEN=$O(^DPT(DFN,1,"B",LASTDT,LASTIEN)) Q:'LASTIEN D
- ..Q:'$O(^DPT(DFN,1,LASTIEN,1,0)) S ACTCNT("DT",LASTIEN)=LASTDT,FNDACT=1,LIENOK=LASTIEN,DGOT=$G(DGOT)+1
- Q:'$G(LIENOK)
- S LIENOK="" F S LIENOK=$O(ACTCNT("DT",LIENOK)) Q:'LIENOK N LASTDT S LASTDT=$G(ACTCNT("DT",LIENOK)) D
- .S ACTCNT=0 F S ACTCNT=$O(^DPT(DFN,1,LIENOK,1,ACTCNT)) Q:'ACTCNT S ACTCNT(LASTDT,ACTCNT)=^DPT(DFN,1,LIENOK,1,ACTCNT,0) D
- ..N ACTTXT,ACTIEN S ACTIEN=+$G(ACTCNT(LASTDT,ACTCNT)) S ACTTXT=$G(^DGMHV(390.02,ACTIEN,3,1,0)) I ACTTXT]"" D
- ...N TXTND S TXTND=1 F S TXTND=$O(^DGMHV(390.02,ACTIEN,3,TXTND)) Q:'TXTND S ACTTXT=ACTTXT_" "_^DGMHV(390.02,ACTIEN,3,TXTND,0)
- ...S ACTCNT(LASTDT,ACTCNT,"IEN")=ACTCNT(LASTDT,ACTCNT)
- ...N MARX D TXT^DGMHV(ACTTXT,60) M ACTCNT(LASTDT,ACTCNT,"TXT")=MARX
- S LASTDT=$O(ACTCNT(0)) I $O(ACTCNT(0)) M DGLACTS=ACTCNT
- Q
- ;
- ACTSCRN(ACTIEN,LOCLIST) ; Check on code/functional locations at which MHV actions are selectable
- ; Accepts an ACTION (#390.02) file IEN, returns array LOCLIST(LOC) where LOC is a location at which the action is selectable
- ;
- Q:'$G(ACTIEN) K LOCLIST S LOCLIST=""
- N ACTLOCN Q:'$D(^DGMHV(390.02,+ACTIEN,1))
- S ACTLOCN=0 F S ACTLOCN=$O(^DGMHV(390.02,ACTIEN,1,ACTLOCN)) Q:'ACTLOCN D
- .S LOCLIST=$G(^DGMHV(390.02,ACTIEN,1,ACTLOCN,0)) I LOCLIST S LOCLIST=$P($G(^DGMHV(390.04,LOCLIST,0)),"^") I LOCLIST]"" S LOCLIST(LOCLIST)=""
- Q
- ;
- N DGPTINFO,DGSCST,DGNMSSN K ^UTILITY("DIQ1",$J)
- N DIC,DA,DR S DIQ(0)="E",DIC=2,DA=DFN,DR=".01;391" D EN^DIQ1 M DGPTINFO(DFN)=^UTILITY("DIQ1",$J,2,DFN)
- D CLEAR^DGMHV
- W !!?20,"MY HEALTHEVET REGISTRATION STATUS"
- S DGNMSSN=$$SSNNM^DGRPU(DFN)
- W !!,DGNMSSN,?60,$G(DGPTINFO(DFN,391,"E"))
- W !,"================================================================================"
- K ^UTILITY("DIQ1",$J)
- Q
- ;
- SELFLDS(DFN) ; Get selectable Enrollment/Registration fields based on values of other fields
- ;
- N MHVEN,MHVAU,MHVMSG,MHVFLDS,DGFLDSEL
- N DIC,DA,DR
- S DIQ(0)="I",DIC=2,DA=DFN,DR="537027:537040" D GETS^DIQ(DIC,DFN,DR,"I","MHVFLDS")
- S MHVEN=$G(MHVFLDS(2,DFN_",",537027,"I")),MHVAU=$G(MHVFLDS(2,DFN_",",537028,"I")),MHVMSG=$G(MHVFLDS(2,DFN_",",537029,"I"))
- N DGFLDSEL S DGFLDSEL=1
- I $S(",0,1,"[(","_$G(MHVEN)_","):1,1:0) S DGFLDSEL=DGFLDSEL_",2"
- I $S(",0,1,"[(","_$G(MHVAU)_","):1,1:0) S DGFLDSEL=DGFLDSEL_",3"
- S DGFLDSEL=","_DGFLDSEL_","
- Q DGFLDSEL
- ;
- ENTRYFLD(DFN,DGUNONLY) ; Get first non-firmly answered field either unanswered or action in progress
- ;
- N MHVEN,MHVAU,MHVMSG,MHVFLDS,DGFLDSEL
- N DIC,DA,DR
- S DIQ(0)="I",DIC=2,DA=DFN,DR="537027:537040" D GETS^DIQ(DIC,DFN,DR,"I","MHVFLDS")
- S MHVEN=$G(MHVFLDS(2,DFN_",",537027,"I")),MHVAU=$G(MHVFLDS(2,DFN_",",537028,"I")),MHVMSG=$G(MHVFLDS(2,DFN_",",537029,"I"))
- N DGFLDSEL S DGFLDSEL=""
- I '$G(DGUNONLY) D
- .I MHVMSG=""!(MHVMSG=2) S DGFLDSEL=3
- .I MHVAU=""!(MHVAU=2) S DGFLDSEL=2
- .I MHVEN="" S DGFLDSEL=1
- I $G(DGUNONLY) D
- .I MHVAU=2!(MHVMSG=2) Q
- .I MHVMSG="" S DGFLDSEL=3
- .I MHVAU="" S DGFLDSEL=2
- .I MHVEN="" S DGFLDSEL=1
- Q DGFLDSEL
- ;
- GETEN(DFN) ; Get value of MHV Registered
- ;
- N MHVEN,MHVAU,MHVMSG,MHVFLDS,DGFLDSEL
- N DIC,DA,DR
- S DIQ(0)="I",DIC=2,DA=DFN,DR="537027" D GETS^DIQ(DIC,DFN,DR,"I","MHVFLDS")
- S MHVEN=$G(MHVFLDS(2,DFN_",",537027,"I"))
- Q MHVEN
- ;
- GETAUTH(DFN) ; Get value of MHV Authenticated
- ;
- N MHVEN,MHVAU,MHVMSG,MHVFLDS,DGFLDSEL
- N DIC,DA,DR
- S DIQ(0)="I",DIC=2,DA=DFN,DR="537028" D GETS^DIQ(DIC,DFN,DR,"I","MHVFLDS")
- S MHVAU=$G(MHVFLDS(2,DFN_",",537028,"I"))
- Q MHVAU
- ;
- GETMSG(DFN) ; Get value of MHV Secure Messaging
- ;
- N MHVEN,MHVAU,MHVMSG,MHVFLDS,DGFLDSEL
- N DIC,DA,DR
- S DIQ(0)="I",DIC=2,DA=DFN,DR="537029" D GETS^DIQ(DIC,DFN,DR,"I","MHVFLDS")
- S MHVMSG=$G(MHVFLDS(2,DFN_",",537029,"I"))
- Q MHVMSG
- ;
- CANTXT(DGMSG,CLEAR,CONT,DGTXTW) ; Display canned text to read to patient
- Q:$G(DGMSG)']""
- N DGINDEN,TMPCAN,NEXT,CANTXT,MARX,I S CANTXT=""
- F I=0:1 S TMPCAN=$T(@(DGMSG_"+"_I)) Q:TMPCAN'[";" S CANTXT=CANTXT_$P(TMPCAN,";",2)
- Q:CANTXT=""
- I $G(CLEAR) D CLEAR^DGMHV
- W !,"Please read the following to the patient",!
- S DGTXTW=$S($G(DGTXTW):DGTXTW,1:60)
- D TXT^DGMHV(.CANTXT,DGTXTW)
- S DGINDEN=(80-DGTXTW)/2
- S NEXT=0 F S NEXT=$O(MARX(NEXT)) Q:'NEXT D
- .W !?DGINDEN,MARX(NEXT)
- I $G(CONT) W !! D CONT^DGMHV
- Q
- ;
- UP ;"Upgrade to a Premium My HealtheVet account to view parts of your VA health record and
- ; use Secure Messaging. This requires one-time in-person identity verification (show
- ; government issued photo ID). Read and sign VA Release of Information form (10-5345a-MHV).
- ; Present a government issued photo ID required. (Instructions for optional online
- ; Authentication process are also available)"
- Q
- SMSG ;"With Secure Messaging, Veterans can communicate online with VA health care teams about health, medication questions, request prescription renewals, and/or appointments."
- Q
- AUTH ;"With a Premium My HealtheVet account, patients can view VA appointments, lab results, access portions of their VA medical record and use Secure Messaging"
- Q
- MHVPCHK(DFN) ; Consistency checker MHV update
- ; Don't trigger update if MHV REGISTERED has not been answered, and Registration socialization action is pending
- N DGMHVOUT,DGMHVQ,DGMHVACT,DP,DG,DK,DH,DM,DQ,DR,DL,X,Y,DC,DE,DIC,DIE,DIIENS,DIFLD,DIETMP,DW,D,D0,DG,DI,DIEL,DU,DV,DIR
- S DGMHVOUT=0,DGMHVQ=0
- S DGMHVACT=$$ENQACHK^DGMHVUTL(DFN) Q:(DGMHVACT]"")&'$G(^DPT(DFN,2))
- S DGMHVACT=$$ENTRYFLD^DGMHVUTL(DFN)
- D MAIN^DGMHVAC(DFN,DGMHVACT)
- S:'$$MHVOK^DGMHVAC(DFN) FILERR(315)=""
- Q
- ;
- GETFLDS(DFN,FLDARRAY) ; Get MHV Registration status field and date values, place in array formatted for merging with historical action display
- N DGEN,DGAUTH,DGMSG,DGENDT,DGAUDT,DGMSGDT
- S DGEN=$$GETEN(DFN),DGAUTH=$$GETAUTH(DFN),DGMSG=$$GETMSG(DFN)
- S DGENDT=$$ENDATE(DFN,1),DGAUDT=$$AUTHDATE(DFN,1),DGMSGDT=$$MSGDATE(DFN,1)
- I DGENDT&($G(DGEN)=1) S FLDARRAY(DGENDT,1)="",FLDARRAY(DGENDT,1,"TXT")=1 D
- .S FLDARRAY(DGENDT,1,"TXT",1)="My HealtheVet Registration "_$S(DGEN=1:"confirmed.",1:"")
- I DGAUDT&($G(DGAUTH)=1) S FLDARRAY(DGAUDT,1)="",FLDARRAY(DGAUDT,1,"TXT")=1 D
- .S FLDARRAY(DGAUDT,1,"TXT",1)="My HealtheVet Authenticated/Premium Upgrade "_$S(DGAUTH=1:"confirmed.",1:"")
- I DGMSGDT&($G(DGMSG)=1) S FLDARRAY(DGMSGDT,1)="",FLDARRAY(DGMSGDT,1,"TXT")=1 D
- .S FLDARRAY(DGMSGDT,1,"TXT",1)="My HealtheVet Secure Messaging "_$S(DGMSG=1:"confirmed.",1:"")
- Q
- CONSTAT(DFN,DGFLDNO) ; Write condensed patient MHV status
- N DGEN,DGAUTH,DGMSG,DGMHVFLD
- N DGENDT,DGAUTHDT,DGMSGDT
- N DIQ,DIC,DA,DR,DGDTPC,DGTIMPC
- S DGEN=$$GETEN(DFN)
- S DGAUTH=$$GETAUTH(DFN)
- S DGMSG=$$GETMSG(DFN)
- N DGDASH S $P(DGDASH,"-",78)="-"
- I $G(DGFLDNO(1))!$G(DGFLDNO(2))!$G(DGFLDNO(3)) W !?10,"MHV Registration Progress" ;,?40,"Status" D
- W !,DGDASH
- I $G(DGFLDNO(1)) W !,$$ENDATE(DFN),?10,"[Step 1 of 3] My HealtheVet Registration: ",?56,$S(DGEN=1:"COMPLETED",DGEN=2:"ACTION PENDING",DGEN=0:"REFUSED",1:"UNANSWERED")
- I $G(DGFLDNO(2)) W !,$$AUTHDATE(DFN),?10,"[Step 2 of 3] Authentication Upgrade:",?56,$S(DGAUTH=1:"COMPLETED: ",DGAUTH=2:"ACTION PENDING",DGAUTH=0:"REFUSED",1:"UNANSWERED")
- I $G(DGFLDNO(3)) W !,$$MSGDATE(DFN),?10,"[Step 3 of 3] Secure Messaging Verification:",?56,$S(DGMSG=1:" COMPLETED: "_$$MSGDATE(DFN),DGMSG=2:"ACTION PENDING",DGMSG=0:"REFUSED:",1:"UNANSWERED")
- Q
- ENDATE(DFN,INTERNAL) ; Most recent date mhv Registration was updated
- N DGENDT,DGDTPC,DGTIMPC,DIQ,DIC,DA,DR,DGDTPC,DGTIMPC,MHVFLD
- S DIQ(0)="I",DIC=2,DA=DFN,DR="537030" D GETS^DIQ(DIC,DFN,DR,"I","MHVFLD")
- S DGENDT=$G(MHVFLD(2,DFN_",",537030,"I")) I $G(INTERNAL) Q DGENDT
- I DGENDT S DGENDT=$$FMTE^XLFDT(DGENDT,2)
- S $P(DGENDT,"@",2)=$P($P(DGENDT,"@",2),":",1,2)
- S DGENDT=$P(DGENDT,"@")
- Q DGENDT
- AUTHDATE(DFN,INTERNAL) ; Most recent date mhv authentication was updated
- N DGAUTHDT,DGDTPC,DGTIMPC,DIQ,DIC,DA,DR,DGDTPC,DGTIMPC,MHVFLD
- S DIQ(0)="I",DIC=2,DA=DFN,DR="537031" D GETS^DIQ(DIC,DFN,DR,"I","MHVFLD")
- S DGAUTHDT=$G(MHVFLD(2,DFN_",",537031,"I")) I $G(INTERNAL) Q DGAUTHDT
- I DGAUTHDT S DGAUTHDT=$$FMTE^XLFDT(DGAUTHDT,2)
- S $P(DGAUTHDT,"@",2)=$P($P(DGAUTHDT,"@",2),":",1,2)
- S DGAUTHDT=$P(DGAUTHDT,"@")
- Q DGAUTHDT
- MSGDATE(DFN,INTERNAL) ; Most recent date mhv secure messaging was updated
- N DGMSGDT,DGDTPC,DGTIMPC,DIQ,DIC,DA,DR,DGDTPC,DGTIMPC,MHVFLD
- S DIQ(0)="I",DIC=2,DA=DFN,DR="537032" D GETS^DIQ(DIC,DFN,DR,"I","MHVFLD")
- S DGMSGDT=$G(MHVFLD(2,DFN_",",537032,"I")) I $G(INTERNAL) Q DGMSGDT
- I DGMSGDT S DGMSGDT=$$FMTE^XLFDT(DGMSGDT,2)
- S $P(DGMSGDT,"@",2)=$P($P(DGMSGDT,"@",2),":",1,2)
- S DGMSGDT=$P(DGMSGDT,"@")
- Q DGMSGDT
- MHVENABL() ; Get value of "Enable MyHealtheVet Prompts?" from MAS Parameter (#43) file
- ; This API is checked to determine if the MyHealtheVet functionality is enable or not.
- N DIQ,DIC,DA,DR,MHVFLDS
- S DIQ(0)="I",DIC=43,DA=1,DR="1100.07" D GETS^DIQ(DIC,DA,DR,"I","MHVFLDS")
- Q +$G(MHVFLDS(43,DA_",",1100.07,"I"))
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDGMHVUTL 15350 printed Feb 19, 2025@00:10:19 Page 2
- DGMHVUTL ;ALB/JCH - Patient MHV Enrollment/Registration - Utilities ;09/12/14 11:30am
- +1 ;;5.3;Registration;**903**;August 13, 1993;Build 82
- +2 ;
- +3 ; Submitted to OSEHRA 04/02/2015 by HP
- +4 ; All entry points authored by James Harris 2014-2015
- +5 ;
- +6 QUIT
- QUESUC(DFN,DGMHVOUT) ; If last action entered by clerk was one of the Socialization actions
- +1 ; from MHV SOCIALIZATION ACTIONS (#390.02) file entries for which "SELECTABLE LOCATIONS"
- +2 ; includes SOCIALIZATION, display/prompt the "were you successful" message/question
- +3 ;
- +4 NEW DGSUPTXT
- +5 SET DGSUPTXT=$$ENQACHK(DFN)
- +6 IF DGSUPTXT]""
- Begin DoDot:1
- +7 if $PIECE($GET(^DPT(DFN,2)),"^")
- QUIT
- +8 NEW NXT,MARX,DIR,DGTXTCNT
- SET DIR(0)="YA"
- SET DIR("A",1)=" Please read the following to the patient:"
- +9 SET DIR("?")=" Enter the patient's response to the question"
- +10 DO TXT^DGMHV(DGSUPTXT,55)
- SET DGTXTCNT=0
- SET NXT=3
- FOR
- SET DGTXTCNT=$ORDER(MARX(DGTXTCNT))
- if 'DGTXTCNT
- QUIT
- Begin DoDot:2
- +11 IF '$ORDER(MARX(DGTXTCNT))
- SET DIR("A")=" "_MARX(DGTXTCNT)_""""_" (Y/N): "
- QUIT
- +12 SET DIR("A",NXT)=" """_MARX(DGTXTCNT)
- SET NXT=$GET(NXT)+1
- End DoDot:2
- +13 WRITE !
- DO ^DIR
- SET DGMHVOUT=$SELECT(Y=1:"R",Y=0:"A",1:"")
- +14 IF $GET(DGMHVOUT)="R"
- NEW DIE,DA
- SET DIE="^DPT("
- SET DA=DFN
- SET DR="537027////1;537030////"_$$NOW^XLFDT
- DO ^DIE
- +15 HANG .5
- End DoDot:1
- QUIT
- +16 KILL DIR
- +17 QUIT
- +18 ;
- DSPENR(DFN,DGMHVFIN) ; Display patient's MHV Enrollment/Registration information
- +1 ; This is the MHV Registration pseudo-screen display; allow entry of 1 to edit the fields as a group, in sequence.
- +2 NEW ACTION,ACTIONE,REASON,REASONE,MHVOK,MHVOKND,MHVEN,MHVEN,MHVAU,MHVMSG,DGRSNTXT
- +3 NEW X,Y,IORVON,IORVOFF,DIR,DIRUT,DGRSNCNT,DGRSPNS,DGSCHTR,DGDIR
- +4 ;
- +5 DO HEADER(DFN)
- +6 KILL MHVOK
- NEW DIC,DA,DR
- SET DIQ(0)="I"
- SET DIC=2
- SET DA=DFN
- SET DR="537027:537040"
- DO GETS^DIQ(DIC,DFN,DR,"I","MHVOK")
- +7 SET MHVEN=$GET(MHVOK(2,DFN_",",537027,"I"))
- SET MHVAU=$GET(MHVOK(2,DFN_",",537028,"I"))
- SET MHVMSG=$GET(MHVOK(2,DFN_",",537029,"I"))
- +8 SET X="IORVON;IORVOFF"
- DO ENDR^%ZISS
- +9 WRITE !!!,"[1] Registered: ",$SELECT(MHVEN=0:"NO",MHVEN=1:"YES",1:"UNANSWERED")
- IF MHVEN=1!(MHVEN=0)
- Begin DoDot:1
- +10 NEW ENRDT
- SET ENRDT=$$ENDATE(DFN)
- IF ENRDT&(MHVEN=1)
- WRITE ?44,"Confirmed: "_ENRDT
- End DoDot:1
- +11 IF MHVEN=0
- SET REASON=$GET(MHVOK(2,DFN_",",537036,"I"))
- IF REASON
- WRITE !?12,"Reason: "
- SET REASONE=$$LKUPRSN^DGMHVAC(REASON)
- Begin DoDot:1
- +12 NEW DGRSNTXT
- SET DGRSNTXT=$$LKUPRTXT^DGMHVAC(DFN,2.1)
- IF (REASONE="Other")&($LENGTH(DGRSNTXT)>1)
- SET REASONE=REASONE_" - "_DGRSNTXT
- +13 NEW MARX,I,LINE
- DO TXT^DGMHV(REASONE,58)
- FOR I=1:1:$ORDER(MARX(""),-1)
- SET LINE=$GET(MARX(I))
- Begin DoDot:2
- +14 IF I=1
- WRITE LINE
- SET DGRSNCNT=1
- QUIT
- +15 WRITE !?20,LINE
- End DoDot:2
- End DoDot:1
- +16 ;
- +17 WRITE !!
- +18 IF ",1,"[(","_$GET(MHVEN)_",")
- SET DGDIR(2)=";2:Authentication"
- WRITE "[2]"
- +19 WRITE ?7,"Authenticated: ",$SELECT(MHVAU=0:"NO",MHVAU=1:"YES",MHVAU=2:"ACTION/IN PROGRESS",1:"UNANSWERED")
- Begin DoDot:1
- +20 IF MHVAU!(MHVAU=0)
- NEW AUTHDT
- SET AUTHDT=$$AUTHDATE(DFN)
- IF AUTHDT&(MHVAU=1)
- WRITE ?44,"Confirmed: "_AUTHDT
- End DoDot:1
- +21 IF MHVAU=0
- IF '$GET(DGRSNCNT)
- SET REASON=$GET(MHVOK(2,DFN_",",537037,"I"))
- IF REASON
- WRITE !?12,"Reason: "
- SET REASONE=$$LKUPRSN^DGMHVAC(REASON)
- Begin DoDot:1
- +22 NEW DGRSNTXT
- SET DGRSNTXT=$$LKUPRTXT^DGMHVAC(DFN,2.2)
- IF (REASONE="Other")&($LENGTH(DGRSNTXT)>1)
- SET REASONE=REASONE_" - "_DGRSNTXT
- +23 NEW MARX,I,LINE
- DO TXT^DGMHV(REASONE,58)
- FOR I=1:1:$ORDER(MARX(""),-1)
- SET LINE=$GET(MARX(I))
- Begin DoDot:2
- +24 IF I=1
- WRITE LINE
- SET DGRSNCNT=1
- QUIT
- +25 WRITE !?21,LINE
- End DoDot:2
- End DoDot:1
- +26 IF MHVAU=2
- NEW ACTIEN
- SET ACTIEN=""
- FOR
- SET ACTIEN=$ORDER(^DPT(DFN,4,"B",ACTIEN))
- if ACTIEN=""
- QUIT
- Begin DoDot:1
- +27 NEW ACTTXT,LI
- SET ACTTXT=$PIECE($GET(^DGMHV(390.02,+ACTIEN,3,1,0)),"^")
- IF ACTTXT]""
- Begin DoDot:2
- +28 NEW TXTND
- SET TXTND=1
- FOR
- SET TXTND=$ORDER(^DGMHV(390.02,ACTIEN,3,TXTND))
- if 'TXTND
- QUIT
- SET ACTTXT=ACTTXT_" "_^DGMHV(390.02,ACTIEN,3,TXTND,0)
- +29 if $LENGTH(ACTTXT)<2
- QUIT
- NEW MARX,INOD,LINE
- DO TXT^DGMHV(ACTTXT,48)
- FOR INOD=1:1:$ORDER(MARX(""),-1)
- SET LINE=$GET(MARX(INOD))
- Begin DoDot:3
- +30 IF INOD=1
- WRITE !?14,"Action: ",LINE
- SET DGRSNCNT=1
- QUIT
- +31 WRITE !?22,LINE
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +32 ;
- +33 WRITE !!
- +34 IF ",1,"[(","_$GET(MHVAU)_",")
- SET DGDIR(3)=";3:Secure Messaging"
- WRITE "[3]"
- +35 WRITE ?4,"Secure Messaging: ",$SELECT(MHVMSG=0:"NO",MHVMSG=1:"YES",MHVMSG=2:"ACTION/IN PROGRESS",1:"UNANSWERED")
- Begin DoDot:1
- +36 IF MHVMSG!(MHVMSG=0)
- NEW MSGDT
- SET MSGDT=$$MSGDATE(DFN)
- IF MSGDT&(MHVMSG=1)
- WRITE ?44,"Confirmed: "_MSGDT
- End DoDot:1
- +37 IF MHVMSG=0
- IF '$GET(DGRSNCNT)
- SET REASON=$GET(MHVOK(2,DFN_",",537038,"I"))
- IF REASON
- WRITE !?12,"Reason: "
- SET REASONE=$$LKUPRSN^DGMHVAC(REASON)
- Begin DoDot:1
- +38 NEW DGRSNTXT
- SET DGRSNTXT=$$LKUPRTXT^DGMHVAC(DFN,2.3)
- IF REASONE="Other"&($LENGTH(DGRSNTXT)>1)
- SET REASONE=REASONE_" - "_DGRSNTXT
- +39 NEW MARX,I,LINE
- DO TXT^DGMHV(REASONE,60)
- FOR I=1:1:$ORDER(MARX(""),-1)
- SET LINE=$GET(MARX(I))
- Begin DoDot:2
- +40 IF I=1
- WRITE LINE
- SET DGRSNCNT=1
- QUIT
- +41 WRITE !?20,LINE
- End DoDot:2
- End DoDot:1
- +42 IF MHVMSG=2
- NEW ACTIEN
- SET ACTIEN=""
- FOR
- SET ACTIEN=$ORDER(^DPT(DFN,3,"B",ACTIEN))
- if ACTIEN=""
- QUIT
- Begin DoDot:1
- +43 NEW ACTTXT,LI
- SET ACTTXT=$PIECE($GET(^DGMHV(390.02,+ACTIEN,3,1,0)),"^")
- IF ACTTXT]""
- Begin DoDot:2
- +44 NEW TXTND
- SET TXTND=1
- FOR
- SET TXTND=$ORDER(^DGMHV(390.02,ACTIEN,3,TXTND))
- if 'TXTND
- QUIT
- SET ACTTXT=ACTTXT_" "_^DGMHV(390.02,ACTIEN,3,TXTND,0)
- +45 if $LENGTH(ACTTXT)<2
- QUIT
- NEW MARX,INOD,LINE
- DO TXT^DGMHV(ACTTXT,48)
- FOR INOD=1:1:$ORDER(MARX(""),-1)
- SET LINE=$GET(MARX(INOD))
- Begin DoDot:3
- +46 IF INOD=1
- WRITE !?14,"Action: ",LINE
- SET DGRSNCNT=1
- QUIT
- +47 WRITE !?22,LINE
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +48 WRITE !!!!!!!
- +49 KILL DIRUT
- SET DGMHVFIN=0
- +50 KILL DGABB
- +51 SET DGSCHTR=$$SELFLDS(DFN)
- +52 NEW DGDONE
- FOR
- if $GET(DGDONE)
- QUIT
- Begin DoDot:1
- +53 NEW DIR
- SET DIR("A")="Select a Registration step, or RETURN to continue: "
- +54 SET DIR(0)="SAO^1:Registration"_$GET(DGDIR(2))_$GET(DGDIR(3))
- +55 DO ^DIR
- SET DGRSPNS=Y
- IF DGSCHTR[(","_DGRSPNS_",")
- SET DGDONE=1
- QUIT
- +56 IF DGRSPNS=""!(DGRSPNS="^")
- SET DGRSPNS=""
- SET DGDONE=1
- QUIT
- +57 WRITE !," Not a valid response",!
- End DoDot:1
- +58 SET DGMHVFIN=$SELECT(DGSCHTR[(","_DGRSPNS_",")=1:0,1:1)
- +59 QUIT DGRSPNS
- +60 ;
- ENQACHK(DFN) ; Return followup question in DGSUPTXT if last action taken for patient DFN was one of the socialization actions
- +1 NEW DGSUP1,DGSUP2,DGSUP3,DGACT,DIR
- +2 SET DGMHVOUT=$GET(DGMHVOUT)
- +3 ; Get MHV SOCIALIZATION ACTIONS (#390.02) file entries for which "SELECTABLE LOCATIONS"
- +4 ; includes SOCIALIZATION
- +5 ; NOTE: If there are adjustments to the values in files 390.02 this API may need to be updated
- +6 DO GETACTS^DGMHV(.DGACT,"S")
- +7 SET DGSUP1="Were you successful in creating your My HealtheVet account?"
- +8 SET DGSUP2=$PIECE(DGSUP1,"?")_" during your last visit?"
- +9 SET DGSUP3="Were you able to create a My HealtheVet account from the Registration instructions we gave you last time?"
- +10 SET DGSUPTXT=$SELECT($$LASTACHK^DGMHVAC(DFN,$GET(DGACT(1)))!$$LASTACHK^DGMHVAC(DFN,$GET(DGACT(2))):DGSUP2,$$LASTACHK^DGMHVAC(DFN,$GET(DGACT(3)))!$$LASTACHK^DGMHVAC(DFN,$GET(DGACT(5))):DGSUP1,$$LASTACHK^DGMHVAC(DFN,$GET(DGACT(4))):DGSUP3,1:"")
- +11 QUIT DGSUPTXT
- +12 ;
- GETLACT(DFN,DGLACTS) ; Get most recent MHV actions entered by clerk for patient DFN
- +1 ; Input: DFN - Patient IEN
- +2 ; Output: DGLACTS - Array of MHV actions
- +3 ;
- +4 NEW DGOT,LASTCNT,ACTCNT,X,X1,Y,LASTDT,LASTACT,LASTIEN,ACTCNT,FNDACT,LIENOK
- SET (LASTACT,LASTIEN,DGLACTS,LASTCNT)=""
- +5 SET LASTDT=""
- FOR LASTCNT=1:1
- SET LASTDT=$ORDER(^DPT(DFN,1,"B",LASTDT),-1)
- if 'LASTDT!($GET(DGOT)>4)
- QUIT
- Begin DoDot:1
- +6 FOR
- SET LASTIEN=$ORDER(^DPT(DFN,1,"B",LASTDT,LASTIEN))
- if 'LASTIEN
- QUIT
- Begin DoDot:2
- +7 if '$ORDER(^DPT(DFN,1,LASTIEN,1,0))
- QUIT
- SET ACTCNT("DT",LASTIEN)=LASTDT
- SET FNDACT=1
- SET LIENOK=LASTIEN
- SET DGOT=$GET(DGOT)+1
- End DoDot:2
- End DoDot:1
- +8 if '$GET(LIENOK)
- QUIT
- +9 SET LIENOK=""
- FOR
- SET LIENOK=$ORDER(ACTCNT("DT",LIENOK))
- if 'LIENOK
- QUIT
- NEW LASTDT
- SET LASTDT=$GET(ACTCNT("DT",LIENOK))
- Begin DoDot:1
- +10 SET ACTCNT=0
- FOR
- SET ACTCNT=$ORDER(^DPT(DFN,1,LIENOK,1,ACTCNT))
- if 'ACTCNT
- QUIT
- SET ACTCNT(LASTDT,ACTCNT)=^DPT(DFN,1,LIENOK,1,ACTCNT,0)
- Begin DoDot:2
- +11 NEW ACTTXT,ACTIEN
- SET ACTIEN=+$GET(ACTCNT(LASTDT,ACTCNT))
- SET ACTTXT=$GET(^DGMHV(390.02,ACTIEN,3,1,0))
- IF ACTTXT]""
- Begin DoDot:3
- +12 NEW TXTND
- SET TXTND=1
- FOR
- SET TXTND=$ORDER(^DGMHV(390.02,ACTIEN,3,TXTND))
- if 'TXTND
- QUIT
- SET ACTTXT=ACTTXT_" "_^DGMHV(390.02,ACTIEN,3,TXTND,0)
- +13 SET ACTCNT(LASTDT,ACTCNT,"IEN")=ACTCNT(LASTDT,ACTCNT)
- +14 NEW MARX
- DO TXT^DGMHV(ACTTXT,60)
- MERGE ACTCNT(LASTDT,ACTCNT,"TXT")=MARX
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +15 SET LASTDT=$ORDER(ACTCNT(0))
- IF $ORDER(ACTCNT(0))
- MERGE DGLACTS=ACTCNT
- +16 QUIT
- +17 ;
- ACTSCRN(ACTIEN,LOCLIST) ; Check on code/functional locations at which MHV actions are selectable
- +1 ; Accepts an ACTION (#390.02) file IEN, returns array LOCLIST(LOC) where LOC is a location at which the action is selectable
- +2 ;
- +3 if '$GET(ACTIEN)
- QUIT
- KILL LOCLIST
- SET LOCLIST=""
- +4 NEW ACTLOCN
- if '$DATA(^DGMHV(390.02,+ACTIEN,1))
- QUIT
- +5 SET ACTLOCN=0
- FOR
- SET ACTLOCN=$ORDER(^DGMHV(390.02,ACTIEN,1,ACTLOCN))
- if 'ACTLOCN
- QUIT
- Begin DoDot:1
- +6 SET LOCLIST=$GET(^DGMHV(390.02,ACTIEN,1,ACTLOCN,0))
- IF LOCLIST
- SET LOCLIST=$PIECE($GET(^DGMHV(390.04,LOCLIST,0)),"^")
- IF LOCLIST]""
- SET LOCLIST(LOCLIST)=""
- End DoDot:1
- +7 QUIT
- +8 ;
- +1 NEW DGPTINFO,DGSCST,DGNMSSN
- KILL ^UTILITY("DIQ1",$JOB)
- +2 NEW DIC,DA,DR
- SET DIQ(0)="E"
- SET DIC=2
- SET DA=DFN
- SET DR=".01;391"
- DO EN^DIQ1
- MERGE DGPTINFO(DFN)=^UTILITY("DIQ1",$JOB,2,DFN)
- +3 DO CLEAR^DGMHV
- +4 WRITE !!?20,"MY HEALTHEVET REGISTRATION STATUS"
- +5 SET DGNMSSN=$$SSNNM^DGRPU(DFN)
- +6 WRITE !!,DGNMSSN,?60,$GET(DGPTINFO(DFN,391,"E"))
- +7 WRITE !,"================================================================================"
- +8 KILL ^UTILITY("DIQ1",$JOB)
- +9 QUIT
- +10 ;
- SELFLDS(DFN) ; Get selectable Enrollment/Registration fields based on values of other fields
- +1 ;
- +2 NEW MHVEN,MHVAU,MHVMSG,MHVFLDS,DGFLDSEL
- +3 NEW DIC,DA,DR
- +4 SET DIQ(0)="I"
- SET DIC=2
- SET DA=DFN
- SET DR="537027:537040"
- DO GETS^DIQ(DIC,DFN,DR,"I","MHVFLDS")
- +5 SET MHVEN=$GET(MHVFLDS(2,DFN_",",537027,"I"))
- SET MHVAU=$GET(MHVFLDS(2,DFN_",",537028,"I"))
- SET MHVMSG=$GET(MHVFLDS(2,DFN_",",537029,"I"))
- +6 NEW DGFLDSEL
- SET DGFLDSEL=1
- +7 IF $SELECT(",0,1,"[(","_$GET(MHVEN)_","):1,1:0)
- SET DGFLDSEL=DGFLDSEL_",2"
- +8 IF $SELECT(",0,1,"[(","_$GET(MHVAU)_","):1,1:0)
- SET DGFLDSEL=DGFLDSEL_",3"
- +9 SET DGFLDSEL=","_DGFLDSEL_","
- +10 QUIT DGFLDSEL
- +11 ;
- ENTRYFLD(DFN,DGUNONLY) ; Get first non-firmly answered field either unanswered or action in progress
- +1 ;
- +2 NEW MHVEN,MHVAU,MHVMSG,MHVFLDS,DGFLDSEL
- +3 NEW DIC,DA,DR
- +4 SET DIQ(0)="I"
- SET DIC=2
- SET DA=DFN
- SET DR="537027:537040"
- DO GETS^DIQ(DIC,DFN,DR,"I","MHVFLDS")
- +5 SET MHVEN=$GET(MHVFLDS(2,DFN_",",537027,"I"))
- SET MHVAU=$GET(MHVFLDS(2,DFN_",",537028,"I"))
- SET MHVMSG=$GET(MHVFLDS(2,DFN_",",537029,"I"))
- +6 NEW DGFLDSEL
- SET DGFLDSEL=""
- +7 IF '$GET(DGUNONLY)
- Begin DoDot:1
- +8 IF MHVMSG=""!(MHVMSG=2)
- SET DGFLDSEL=3
- +9 IF MHVAU=""!(MHVAU=2)
- SET DGFLDSEL=2
- +10 IF MHVEN=""
- SET DGFLDSEL=1
- End DoDot:1
- +11 IF $GET(DGUNONLY)
- Begin DoDot:1
- +12 IF MHVAU=2!(MHVMSG=2)
- QUIT
- +13 IF MHVMSG=""
- SET DGFLDSEL=3
- +14 IF MHVAU=""
- SET DGFLDSEL=2
- +15 IF MHVEN=""
- SET DGFLDSEL=1
- End DoDot:1
- +16 QUIT DGFLDSEL
- +17 ;
- GETEN(DFN) ; Get value of MHV Registered
- +1 ;
- +2 NEW MHVEN,MHVAU,MHVMSG,MHVFLDS,DGFLDSEL
- +3 NEW DIC,DA,DR
- +4 SET DIQ(0)="I"
- SET DIC=2
- SET DA=DFN
- SET DR="537027"
- DO GETS^DIQ(DIC,DFN,DR,"I","MHVFLDS")
- +5 SET MHVEN=$GET(MHVFLDS(2,DFN_",",537027,"I"))
- +6 QUIT MHVEN
- +7 ;
- GETAUTH(DFN) ; Get value of MHV Authenticated
- +1 ;
- +2 NEW MHVEN,MHVAU,MHVMSG,MHVFLDS,DGFLDSEL
- +3 NEW DIC,DA,DR
- +4 SET DIQ(0)="I"
- SET DIC=2
- SET DA=DFN
- SET DR="537028"
- DO GETS^DIQ(DIC,DFN,DR,"I","MHVFLDS")
- +5 SET MHVAU=$GET(MHVFLDS(2,DFN_",",537028,"I"))
- +6 QUIT MHVAU
- +7 ;
- GETMSG(DFN) ; Get value of MHV Secure Messaging
- +1 ;
- +2 NEW MHVEN,MHVAU,MHVMSG,MHVFLDS,DGFLDSEL
- +3 NEW DIC,DA,DR
- +4 SET DIQ(0)="I"
- SET DIC=2
- SET DA=DFN
- SET DR="537029"
- DO GETS^DIQ(DIC,DFN,DR,"I","MHVFLDS")
- +5 SET MHVMSG=$GET(MHVFLDS(2,DFN_",",537029,"I"))
- +6 QUIT MHVMSG
- +7 ;
- CANTXT(DGMSG,CLEAR,CONT,DGTXTW) ; Display canned text to read to patient
- +1 if $GET(DGMSG)']""
- QUIT
- +2 NEW DGINDEN,TMPCAN,NEXT,CANTXT,MARX,I
- SET CANTXT=""
- +3 FOR I=0:1
- SET TMPCAN=$TEXT(@(DGMSG_"+"_I))
- if TMPCAN'[";"
- QUIT
- SET CANTXT=CANTXT_$PIECE(TMPCAN,";",2)
- +4 if CANTXT=""
- QUIT
- +5 IF $GET(CLEAR)
- DO CLEAR^DGMHV
- +6 WRITE !,"Please read the following to the patient",!
- +7 SET DGTXTW=$SELECT($GET(DGTXTW):DGTXTW,1:60)
- +8 DO TXT^DGMHV(.CANTXT,DGTXTW)
- +9 SET DGINDEN=(80-DGTXTW)/2
- +10 SET NEXT=0
- FOR
- SET NEXT=$ORDER(MARX(NEXT))
- if 'NEXT
- QUIT
- Begin DoDot:1
- +11 WRITE !?DGINDEN,MARX(NEXT)
- End DoDot:1
- +12 IF $GET(CONT)
- WRITE !!
- DO CONT^DGMHV
- +13 QUIT
- +14 ;
- UP ;"Upgrade to a Premium My HealtheVet account to view parts of your VA health record and
- +1 ; use Secure Messaging. This requires one-time in-person identity verification (show
- +2 ; government issued photo ID). Read and sign VA Release of Information form (10-5345a-MHV).
- +3 ; Present a government issued photo ID required. (Instructions for optional online
- +4 ; Authentication process are also available)"
- +5 QUIT
- SMSG ;"With Secure Messaging, Veterans can communicate online with VA health care teams about health, medication questions, request prescription renewals, and/or appointments."
- +1 QUIT
- AUTH ;"With a Premium My HealtheVet account, patients can view VA appointments, lab results, access portions of their VA medical record and use Secure Messaging"
- +1 QUIT
- MHVPCHK(DFN) ; Consistency checker MHV update
- +1 ; Don't trigger update if MHV REGISTERED has not been answered, and Registration socialization action is pending
- +2 NEW DGMHVOUT,DGMHVQ,DGMHVACT,DP,DG,DK,DH,DM,DQ,DR,DL,X,Y,DC,DE,DIC,DIE,DIIENS,DIFLD,DIETMP,DW,D,D0,DG,DI,DIEL,DU,DV,DIR
- +3 SET DGMHVOUT=0
- SET DGMHVQ=0
- +4 SET DGMHVACT=$$ENQACHK^DGMHVUTL(DFN)
- if (DGMHVACT]"")&'$GET(^DPT(DFN,2))
- QUIT
- +5 SET DGMHVACT=$$ENTRYFLD^DGMHVUTL(DFN)
- +6 DO MAIN^DGMHVAC(DFN,DGMHVACT)
- +7 if '$$MHVOK^DGMHVAC(DFN)
- SET FILERR(315)=""
- +8 QUIT
- +9 ;
- GETFLDS(DFN,FLDARRAY) ; Get MHV Registration status field and date values, place in array formatted for merging with historical action display
- +1 NEW DGEN,DGAUTH,DGMSG,DGENDT,DGAUDT,DGMSGDT
- +2 SET DGEN=$$GETEN(DFN)
- SET DGAUTH=$$GETAUTH(DFN)
- SET DGMSG=$$GETMSG(DFN)
- +3 SET DGENDT=$$ENDATE(DFN,1)
- SET DGAUDT=$$AUTHDATE(DFN,1)
- SET DGMSGDT=$$MSGDATE(DFN,1)
- +4 IF DGENDT&($GET(DGEN)=1)
- SET FLDARRAY(DGENDT,1)=""
- SET FLDARRAY(DGENDT,1,"TXT")=1
- Begin DoDot:1
- +5 SET FLDARRAY(DGENDT,1,"TXT",1)="My HealtheVet Registration "_$SELECT(DGEN=1:"confirmed.",1:"")
- End DoDot:1
- +6 IF DGAUDT&($GET(DGAUTH)=1)
- SET FLDARRAY(DGAUDT,1)=""
- SET FLDARRAY(DGAUDT,1,"TXT")=1
- Begin DoDot:1
- +7 SET FLDARRAY(DGAUDT,1,"TXT",1)="My HealtheVet Authenticated/Premium Upgrade "_$SELECT(DGAUTH=1:"confirmed.",1:"")
- End DoDot:1
- +8 IF DGMSGDT&($GET(DGMSG)=1)
- SET FLDARRAY(DGMSGDT,1)=""
- SET FLDARRAY(DGMSGDT,1,"TXT")=1
- Begin DoDot:1
- +9 SET FLDARRAY(DGMSGDT,1,"TXT",1)="My HealtheVet Secure Messaging "_$SELECT(DGMSG=1:"confirmed.",1:"")
- End DoDot:1
- +10 QUIT
- CONSTAT(DFN,DGFLDNO) ; Write condensed patient MHV status
- +1 NEW DGEN,DGAUTH,DGMSG,DGMHVFLD
- +2 NEW DGENDT,DGAUTHDT,DGMSGDT
- +3 NEW DIQ,DIC,DA,DR,DGDTPC,DGTIMPC
- +4 SET DGEN=$$GETEN(DFN)
- +5 SET DGAUTH=$$GETAUTH(DFN)
- +6 SET DGMSG=$$GETMSG(DFN)
- +7 NEW DGDASH
- SET $PIECE(DGDASH,"-",78)="-"
- +8 ;,?40,"Status" D
- IF $GET(DGFLDNO(1))!$GET(DGFLDNO(2))!$GET(DGFLDNO(3))
- WRITE !?10,"MHV Registration Progress"
- +9 WRITE !,DGDASH
- +10 IF $GET(DGFLDNO(1))
- WRITE !,$$ENDATE(DFN),?10,"[Step 1 of 3] My HealtheVet Registration: ",?56,$SELECT(DGEN=1:"COMPLETED",DGEN=2:"ACTION PENDING",DGEN=0:"REFUSED",1:"UNANSWERED")
- +11 IF $GET(DGFLDNO(2))
- WRITE !,$$AUTHDATE(DFN),?10,"[Step 2 of 3] Authentication Upgrade:",?56,$SELECT(DGAUTH=1:"COMPLETED: ",DGAUTH=2:"ACTION PENDING",DGAUTH=0:"REFUSED",1:"UNANSWERED")
- +12 IF $GET(DGFLDNO(3))
- WRITE !,$$MSGDATE(DFN),?10,"[Step 3 of 3] Secure Messaging Verification:",?56,$SELECT(DGMSG=1:" COMPLETED: "_$$MSGDATE(DFN),DGMSG=2:"ACTION PENDING",DGMSG=0:"REFUSED:",1:"UNANSWERED")
- +13 QUIT
- ENDATE(DFN,INTERNAL) ; Most recent date mhv Registration was updated
- +1 NEW DGENDT,DGDTPC,DGTIMPC,DIQ,DIC,DA,DR,DGDTPC,DGTIMPC,MHVFLD
- +2 SET DIQ(0)="I"
- SET DIC=2
- SET DA=DFN
- SET DR="537030"
- DO GETS^DIQ(DIC,DFN,DR,"I","MHVFLD")
- +3 SET DGENDT=$GET(MHVFLD(2,DFN_",",537030,"I"))
- IF $GET(INTERNAL)
- QUIT DGENDT
- +4 IF DGENDT
- SET DGENDT=$$FMTE^XLFDT(DGENDT,2)
- +5 SET $PIECE(DGENDT,"@",2)=$PIECE($PIECE(DGENDT,"@",2),":",1,2)
- +6 SET DGENDT=$PIECE(DGENDT,"@")
- +7 QUIT DGENDT
- AUTHDATE(DFN,INTERNAL) ; Most recent date mhv authentication was updated
- +1 NEW DGAUTHDT,DGDTPC,DGTIMPC,DIQ,DIC,DA,DR,DGDTPC,DGTIMPC,MHVFLD
- +2 SET DIQ(0)="I"
- SET DIC=2
- SET DA=DFN
- SET DR="537031"
- DO GETS^DIQ(DIC,DFN,DR,"I","MHVFLD")
- +3 SET DGAUTHDT=$GET(MHVFLD(2,DFN_",",537031,"I"))
- IF $GET(INTERNAL)
- QUIT DGAUTHDT
- +4 IF DGAUTHDT
- SET DGAUTHDT=$$FMTE^XLFDT(DGAUTHDT,2)
- +5 SET $PIECE(DGAUTHDT,"@",2)=$PIECE($PIECE(DGAUTHDT,"@",2),":",1,2)
- +6 SET DGAUTHDT=$PIECE(DGAUTHDT,"@")
- +7 QUIT DGAUTHDT
- MSGDATE(DFN,INTERNAL) ; Most recent date mhv secure messaging was updated
- +1 NEW DGMSGDT,DGDTPC,DGTIMPC,DIQ,DIC,DA,DR,DGDTPC,DGTIMPC,MHVFLD
- +2 SET DIQ(0)="I"
- SET DIC=2
- SET DA=DFN
- SET DR="537032"
- DO GETS^DIQ(DIC,DFN,DR,"I","MHVFLD")
- +3 SET DGMSGDT=$GET(MHVFLD(2,DFN_",",537032,"I"))
- IF $GET(INTERNAL)
- QUIT DGMSGDT
- +4 IF DGMSGDT
- SET DGMSGDT=$$FMTE^XLFDT(DGMSGDT,2)
- +5 SET $PIECE(DGMSGDT,"@",2)=$PIECE($PIECE(DGMSGDT,"@",2),":",1,2)
- +6 SET DGMSGDT=$PIECE(DGMSGDT,"@")
- +7 QUIT DGMSGDT
- MHVENABL() ; Get value of "Enable MyHealtheVet Prompts?" from MAS Parameter (#43) file
- +1 ; This API is checked to determine if the MyHealtheVet functionality is enable or not.
- +2 NEW DIQ,DIC,DA,DR,MHVFLDS
- +3 SET DIQ(0)="I"
- SET DIC=43
- SET DA=1
- SET DR="1100.07"
- DO GETS^DIQ(DIC,DA,DR,"I","MHVFLDS")
- +4 QUIT +$GET(MHVFLDS(43,DA_",",1100.07,"I"))