- WVRPCOR ;ISP/RFR - CPRS RPCS ; Oct 26, 2023@11:43
- ;;1.0;WOMEN'S HEALTH;**24,26,30**;Sep 30, 1998;Build 5
- ;
- ; Reference to WRAP^ORUTL in ICR #6263
- Q
- COVER(WVRETURN,WVDFN,WVFCLR) ;RETURN DATA FOR COVER SHEET PANEL
- ;RPC: WVRPCOR COVER
- N WVSUB,WVRECID,WVLINE
- I $G(WVDFN)'?1.N S WVRETURN(0)=-1_U_"Invalid patient identifier: WVDFN="_$G(WVDFN) Q
- S WVSUB=$$GETSUB(WVDFN)
- I ('$D(^XTMP(WVSUB)))!($G(WVFCLR)=1) D GETCOVER(WVDFN,WVSUB)
- I $G(^XTMP(WVSUB,"ERROR"))'="" S WVRETURN(0)=-1_U_$TR(^XTMP(WVSUB,"ERROR"),".") Q
- S WVRETURN(0)=1_U
- S WVRECID=0 F S WVRECID=$O(^XTMP(WVSUB,WVRECID)) Q:WVRECID=""!(WVRECID'[";") D
- .S WVLINE=1+$G(WVLINE),WVRETURN(WVLINE)=WVRECID_U_^XTMP(WVSUB,WVRECID,"CS PANEL")
- .I $P(WVRECID,";")=0 S $P(WVRETURN(0),U)=0
- Q
- DETAIL(WVRETURN,WVRECID) ;RETURN DATA FOR COVER SHEET PANEL DETAILS
- ;RPC: WVRPCOR DETAIL
- N WVSUB,WVLINE,WVLINES,WVIEN
- S WVSUB=$$GETSUB($P(WVRECID,",",2))
- I '$D(^XTMP(WVSUB,WVRECID)) D GETCOVER($P(WVRECID,",",2),WVSUB)
- S WVLINES=0,WVIEN=$P($P(WVRECID,";",2),",")
- F WVLINE=1:1 Q:'$D(^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)) D
- .D WRAP^ORUTL($G(^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)),"WVRETURN",$S(WVIEN=0:0,1:1),1,,.WVLINES,60)
- Q
- GETCOVER(WVDFN,WVSUB) ;GET DATA NEEDED FOR COVER SHEET
- N WVTYPES,WVEXTERNAL,WVBLOCK,WVRECID,WVNODE,WVERROR,WVREASONS
- D SETUP
- K ^XTMP(WVSUB)
- S ^XTMP(WVSUB,0)=$$FMADD^XLFDT(DT,1)_U_DT_U_"DATA FOR CPRS COVER SHEET"
- S WVBLOCK=$$BLOCK(.WVREASONS,WVDFN)
- I +WVBLOCK=-1 D Q
- .S ^XTMP(WVSUB,"ERROR")="Could not determine applicability; "_$P(WVBLOCK,U,2)
- I +WVBLOCK D Q
- .S WVRECID="0;0,"_WVDFN_","
- .S ^XTMP(WVSUB,WVRECID,"CS PANEL")="Not"_U_"Applicable"
- .M ^XTMP(WVSUB,WVRECID,"CS DETAIL")=WVREASONS
- S WVNODE=0 F S WVNODE=$O(WVTYPES(WVNODE)) Q:'+WVNODE!($D(WVERROR)) D
- .N WVFOUND,WVSTATUS,WVTITLE,WVEDD,WVEND,WVMETHODS,WVIEN,WVAPPL,WVNOTES
- .N WVNOTE,WVREASON,WVWANT,WVLINE,WVPNUM
- .S WVAPPL=$$APPL(WVDFN,WVNODE),WVLINE=1
- .I +WVAPPL=-1 D Q
- ..S WVERROR="Could not determine applicability; "_$P(WVAPPL,U,2)
- .I '+WVAPPL D
- ..S WVSTATUS=$S(WVNODE=WVTYPES("B","P"):"Unable to Conceive",WVNODE=WVTYPES("B","L"):"Not Applicable",1:"")
- ..I $P(WVAPPL,U,2)["Medically unable to conceive" S WVFOUND=$$GETLREC^WVUTL11(WVDFN,WVNODE)
- ..I ($P(WVAPPL,U,2)'["Medically unable to conceive")!($P($G(WVFOUND),U)=0) D
- ...S WVRECID=WVNODE_";0,"_WVDFN_",",WVREASON=$P(WVAPPL,U,2)
- ...F WVPNUM=1:1:$L(WVREASON,"<BR>") D
- ....S ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)=$P(WVREASON,"<BR>",WVPNUM),WVLINE=WVLINE+1
- .I +WVAPPL D
- ..S WVFOUND=$$GETLREC^WVUTL11(WVDFN,WVNODE)
- ..I '+WVFOUND D
- ...S WVRECID=WVNODE_";0,"_WVDFN_","
- ...S WVSTATUS="No data available"
- ...S ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)="No data on file.",WVLINE=WVLINE+1
- .I +$G(WVFOUND) D
- ..S WVIEN=$P(WVFOUND,U)
- ..S:'$D(WVSTATUS) WVSTATUS=$P(WVFOUND,U,4)
- ..S WVRECID=WVNODE_";"_WVIEN_","_WVDFN_","
- ..I WVNODE=WVTYPES("B","P") D
- ...I WVSTATUS=1 D
- ....S ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)="Last Menstrual Period: "_$$FMTE^XLFDT($P($G(^WV(790,WVDFN,WVNODE,WVIEN,4)),U),"1M"),WVLINE=WVLINE+1
- ....S WVEDD=$P($G(^WV(790,WVDFN,WVNODE,WVIEN,4)),U,2),WVEDD("TEXT")="Expected Due Date"_$S(WVEDD="":"*",1:"")
- ....S ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)=$$RJ^XLFSTR(WVEDD("TEXT"),21)_": "_$$FMTE^XLFDT(WVEDD,"1M"),WVLINE=WVLINE+1
- ...I WVSTATUS="Unable to Conceive" D
- ....Q:$P($G(^WV(790,WVDFN,4,WVIEN,2)),U,2)'=1
- ....S WVREASON=$P($G(^WV(790,WVDFN,WVNODE,WVIEN,2)),U,3)
- ....I WVREASON'="" S ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)=" Reason: "_WVREASON,WVLINE=WVLINE+1
- ...I WVSTATUS'=1 D
- ....S WVEND=$P($G(^WV(790,WVDFN,WVNODE,WVIEN,4)),U,4)
- ....I WVEND'="" D
- .....I WVSTATUS="Unable to Conceive" S ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)="",WVLINE=WVLINE+1
- .....S ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)="Previous pregnancy:",WVLINE=WVLINE+1
- .....S ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)=" Ended: "_$$FMTE^XLFDT(WVEND,"1M"),WVLINE=WVLINE+1
- .....S ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)=" Reason: "_$P($G(^WV(790,WVDFN,WVNODE,WVIEN,4)),U,5),WVLINE=WVLINE+1
- ....S WVWANT=$P($G(^WV(790,WVDFN,WVNODE,WVIEN,2)),U,4)
- ....I WVWANT'="" D
- .....I WVEND'="" S ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)="",WVLINE=WVLINE+1
- .....S ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)="Does"_$S('WVWANT:" not",1:"")_" want to become pregnant within the next year.",WVLINE=WVLINE+1
- ....D GETS^DIQ(790.05,WVIEN_","_WVDFN_",","30*","","WVMETHODS","WVERROR")
- ....Q:$D(WVERROR)
- ....S WVMETHODS="" F S WVMETHODS=$O(WVMETHODS(790.17,WVMETHODS)) Q:WVMETHODS="" D
- .....S ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)=$S(+WVMETHODS=1:"Contraceptive Methods: ",1:" ")_WVMETHODS(790.17,WVMETHODS,.01),WVLINE=WVLINE+1
- ..I WVNODE=WVTYPES("B","L") D
- ...I WVSTATUS=0 D
- ....S WVEND=$P($G(^WV(790,WVDFN,WVNODE,WVIEN,2)),U,2) Q:WVEND=""
- ....S ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)=" Ended: "_$$FMTE^XLFDT(WVEND,"1M"),WVLINE=WVLINE+1
- ..S ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)="",WVLINE=WVLINE+1
- ..I $P(WVFOUND,U,3)'="" D
- ...S WVTITLE=$$GET1^DIQ(200,$P(WVFOUND,U,3),8)
- ...S ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)="Entered by: "_$$GET1^DIQ(200,$P(WVFOUND,U,3),.01)_$S(WVTITLE'="":" ("_WVTITLE_")",1:""),WVLINE=WVLINE+1
- ..I $P(WVFOUND,U,2)'="" S ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)="Entered on: "_$$FMTE^XLFDT($P(WVFOUND,U,2),"1M"),WVLINE=WVLINE+1
- .I $D(WVNOTES) D
- ..F WVNOTE=1:1:WVNOTES S ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)=WVNOTES(WVNOTE),WVLINE=WVLINE+1
- ..K WVNOTES
- .I WVSTATUS=1 S ^XTMP(WVSUB,"POSTINGS",$E($P(WVTYPES(WVNODE),U,3),1))=WVRECID
- .I $D(WVEXTERNAL(WVSTATUS)) D
- ..S WVSTATUS=WVEXTERNAL(WVSTATUS)_$S($P(WVAPPL,U,2)="DUE NOW":" - Reminder Due ("_$P(WVTYPES(WVNODE),U,6)_")",1:"")
- .I WVSTATUS="" S WVSTATUS="Unknown"
- .S ^XTMP(WVSUB,WVRECID,"CS PANEL")=$P(WVTYPES(WVNODE),U,3)_U_WVSTATUS
- I $D(WVERROR) S ^XTMP(WVSUB,"ERROR")=WVERROR
- Q
- APPL(WVDFN,WVNODE) ;DETERMINE IF DATA TYPE IS APPLICABLE TO PATIENT
- N WVREMST,WVSTATUS,WVREMDEF,WVLINE,WVEXIT,WVTEXT,WVEDDGRA,WVFNUM,WVDOCST
- N WVGLOBAL,WVCAPTUR,WVRETURN,WVDELIM,WVCNT,WVRTL,WVSTATDT
- S (WVCAPTUR,WVEXIT,WVRTL)=0,WVDELIM="<BR>"
- S WVREMDEF=$P(WVTYPES(WVNODE),U),WVFNUM=$P(WVTYPES(WVNODE),U,5)
- S WVREMST=$$REM^WVUTL11(WVDFN,WVREMDEF,1)
- S WVSTATUS=$S(WVREMST="N/A":0,+WVREMST=-1:WVREMST,1:1)
- I WVREMST="N/A"!(WVREMST="DUE NOW") D
- .I WVNODE=WVTYPES("B","P") D
- ..I $G(^TMP($J,"WV APPLICABLE",WVREMDEF,"FIEVAL",1))=1 D
- ...S WVGLOBAL=$NA(^TMP($J,"WV APPLICABLE",WVREMDEF,"FINDINGS","Medically Unable to Conceive ID","MAINTENANCE"))
- ...I WVREMST="DUE NOW" S WVSTATUS=0
- .I $G(WVGLOBAL)="" S WVGLOBAL=$NA(^TMP($J,"WV APPLICABLE",WVREMDEF,"MAINTENANCE"))
- .S WVLINE=0 F S WVLINE=$O(@WVGLOBAL@(WVLINE)) Q:('+WVLINE)!(WVEXIT) D
- ..S WVTEXT=$G(@WVGLOBAL@(WVLINE))
- ..I (WVTEXT["Frequency:")!(WVTEXT["Computed Finding") S WVCAPTUR=1 Q
- ..I WVTEXT["Cohort:" S WVCAPTUR=2,WVDELIM="<BR>" Q
- ..I WVTEXT["Reminder Term: " S WVRTL=WVLINE Q
- ..I WVTEXT["Prov. Narr. -" S WVDELIM="<BR>"
- ..I '+WVCAPTUR Q
- ..I +WVCAPTUR=1,WVTEXT="" S WVEXIT=1 Q
- ..I +WVCAPTUR=2 D Q:WVEXIT
- ...I WVTEXT="" S WVCNT=1+$G(WVCNT) I WVCNT>1 S WVEXIT=1 Q
- ...I WVTEXT'="" S WVCNT=0
- ..S WVRETURN=$S($G(WVRETURN)'="":WVRETURN_WVDELIM,1:"")_$$TRIM^XLFSTR(WVTEXT)
- ..I +WVCAPTUR=2,WVRTL>0,WVLINE>(WVRTL+1) S WVDELIM=" ",WVRTL=0
- .S $P(WVSTATUS,U,2)=$G(WVRETURN)
- I WVREMST="DUE NOW" D
- .S WVEXIT=0,WVDOCST=$G(^TMP($J,"WV APPLICABLE",WVREMDEF,"FIEVAL",WVFNUM,"DOCUMENTATION STATUS"))
- .S WVSTATDT=$G(^TMP($J,"WV APPLICABLE",WVREMDEF,"FIEVAL",WVFNUM,"DATE"))
- .I WVDOCST="COMPLETE",WVNODE=4 D Q:WVEXIT
- ..S WVEDDGRA=$G(^TMP($J,"WV APPLICABLE",WVREMDEF,"FIEVAL",WVFNUM,"EDD-GRACE"))
- ..I WVEDDGRA>0,WVEDDGRA>=DT S WVEXIT=1
- .I WVDOCST="INCOMPLETE",WVSTATDT>$P(($$FMADD^XLFDT(DT,-365,-8)),".",1) Q ;INCOMPLETE LESS THAN 1 YEAR OLD
- .S $P(WVSTATUS,U,2)=WVREMST
- S $P(WVTYPES(WVNODE),U,6)=$G(^TMP($J,"WV APPLICABLE",WVREMDEF,"PRINT NAME"))
- K ^TMP($J,"WV APPLICABLE")
- Q WVSTATUS
- BLOCK(WVREASONS,WVDFN) ;DETERMINE WHETHER TO BLOCK DATA ENTRY FOR SPECIFICED TYPE
- N WVSTATUS,WVCAPTUR,WVLINE,WVTEXT,WVRETURN,WVREMDEF
- S WVREMDEF="VA-WH PREGNANCY AND LACTATION DATA ENTRY ALLOWED",WVSTATUS=$$REM^WVUTL11(WVDFN,WVREMDEF,1)
- S WVCAPTUR=0,WVRETURN=0_U,WVREASONS=0
- I WVSTATUS="N/A" D
- .S WVLINE=0 F S WVLINE=$O(^TMP($J,"WV APPLICABLE",WVREMDEF,"MAINTENANCE",WVLINE)) Q:'+WVLINE D
- ..S WVTEXT=$G(^TMP($J,"WV APPLICABLE",WVREMDEF,"MAINTENANCE",WVLINE))
- ..I WVTEXT["Cohort:" S WVCAPTUR=1,WVRETURN=1_U Q
- ..I ('WVCAPTUR)!(WVTEXT["Computed Finding")!(WVTEXT[" value - ")!(WVTEXT="") Q
- ..S WVREASONS=WVREASONS+1,WVREASONS(WVREASONS)=$$TRIM^XLFSTR(WVTEXT)
- I +WVSTATUS=-1 S WVRETURN=WVSTATUS
- K ^TMP($J,"WV APPLICABLE")
- Q WVRETURN
- POSTSHRT(WVDFN) ;RETURN POSTING LETTERS
- N WVSUB,WVLETTER,WVRET,WVPOSTINGS
- S WVSUB=$$GETSUB(WVDFN)
- I $D(^XTMP(WVSUB)) M WVPOSTINGS=^XTMP(WVSUB,"POSTINGS")
- E D
- .N WVTYPES,WVEXTERNAL,WVNODE,WVFOUND,WVIEN,WVRECID
- .D SETUP
- .S WVNODE=0 F S WVNODE=$O(WVTYPES(WVNODE)) Q:'+WVNODE D
- ..S WVFOUND=$$GETLREC^WVUTL11(WVDFN,WVNODE)
- ..I $P(WVFOUND,U,4)=1 D
- ...S WVIEN=$P(WVFOUND,U),WVRECID=WVNODE_";"_WVIEN_","_WVDFN_","
- ...S WVPOSTINGS($E($P(WVTYPES(WVNODE),U,3),1))=WVRECID
- S WVLETTER="" F S WVLETTER=$O(WVPOSTINGS(WVLETTER)) Q:WVLETTER="" D
- .S WVRET=$G(WVRET)_WVLETTER
- Q $G(WVRET)
- POSTLIST(WVRETURN,WVDFN,WVITEM) ;RETURN LIST OF POSTINGS
- N WVSUB,WVLETTER,WVRECID
- I +$G(WVITEM)=0 S WVITEM=1+$O(WVRETURN("?"),-1)
- S WVSUB=$$GETSUB(WVDFN)
- I '$D(^XTMP(WVSUB)) D GETCOVER(WVDFN,WVSUB)
- S WVLETTER="" F S WVLETTER=$O(^XTMP(WVSUB,"POSTINGS",WVLETTER)) Q:WVLETTER="" D
- .S WVRECID=^XTMP(WVSUB,"POSTINGS",WVLETTER)
- .S WVRETURN(WVITEM)="WH"_U_$P($P(^XTMP(WVSUB,WVRECID,"CS PANEL"),U),":")_U_WVLETTER,WVITEM=WVITEM+1
- Q
- POSTREP(WVRETURN,WVDFN,WVTYPE) ;RETURN POSTINGS REPORT
- ;RPC: WVRPCOR POSTREP
- N WVSUB,WVRECID,WVSUBST,WVTEXT,WVLINE,WVLINES
- S WVDFN=$G(WVDFN),WVTYPE=$G(WVTYPE)
- I WVDFN'?1.N S WVRETURN=1,WVRETURN(1)="Invalid patient identifier: WVDFN="_$G(WVDFN) Q
- I WVTYPE'?1U S WVRETURN=1,WVRETURN(1)="Invalid report type specified: '"_WVTYPE_"'." Q
- S WVSUBST(U)=" ",WVSUB=$$GETSUB(WVDFN)
- I '$D(^XTMP(WVSUB)) D GETCOVER(WVDFN,WVSUB)
- S WVRECID=$G(^XTMP(WVSUB,"POSTINGS",WVTYPE))
- I WVRECID="" S WVRETURN=1,WVRETURN(1)="No Women's Health postings available." Q
- S WVLINES=0,WVTEXT=$$REPLACE^XLFSTR($G(^XTMP(WVSUB,WVRECID,"CS PANEL")),.WVSUBST)
- S WVTEXT=$$RJ^XLFSTR($P(WVTEXT,":"),21)_":"_$P(WVTEXT,":",2)
- D WRAP^ORUTL(WVTEXT,"WVRETURN",,,,.WVLINES,60)
- F WVLINE=1:1 Q:'$D(^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)) D WRAP^ORUTL($G(^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)),"WVRETURN",,,,.WVLINES,60)
- Q
- SETUP ;INITIALIZE ARRAY THAT MAPS DATA AND REMINDERS
- ;WVTYPES(790_GLOBAL_NODE_#)=DATA_REMINDER_NAME^FILE_#^DISPLAY_LABEL^STATUS DISPLAY^FIEVAL_#^DATA_REMINDER_PRINT_NAME
- S WVTYPES(4)="VA-WH UPDATE PREGNANCY STATUS^790.05^Pregnant:^Pregnancy^3^"
- S WVTYPES(5)="VA-WH UPDATE LACTATION STATUS^790.16^Lactating:^Lactation^2^"
- S WVTYPES("B","P")=4,WVTYPES("B","L")=5
- S WVEXTERNAL(1)="Yes",WVEXTERNAL(0)="No",WVEXTERNAL(-1)="Not Applicable",WVEXTERNAL(2)="Do not know"
- Q
- GETSUB(WVDFN) ;RETURN ^XTMP CACHE SUBSCRIPT
- Q "WV_CCS;"_WVDFN
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HWVRPCOR 11313 printed Mar 13, 2025@21:52:40 Page 2
- WVRPCOR ;ISP/RFR - CPRS RPCS ; Oct 26, 2023@11:43
- +1 ;;1.0;WOMEN'S HEALTH;**24,26,30**;Sep 30, 1998;Build 5
- +2 ;
- +3 ; Reference to WRAP^ORUTL in ICR #6263
- +4 QUIT
- COVER(WVRETURN,WVDFN,WVFCLR) ;RETURN DATA FOR COVER SHEET PANEL
- +1 ;RPC: WVRPCOR COVER
- +2 NEW WVSUB,WVRECID,WVLINE
- +3 IF $GET(WVDFN)'?1.N
- SET WVRETURN(0)=-1_U_"Invalid patient identifier: WVDFN="_$GET(WVDFN)
- QUIT
- +4 SET WVSUB=$$GETSUB(WVDFN)
- +5 IF ('$DATA(^XTMP(WVSUB)))!($GET(WVFCLR)=1)
- DO GETCOVER(WVDFN,WVSUB)
- +6 IF $GET(^XTMP(WVSUB,"ERROR"))'=""
- SET WVRETURN(0)=-1_U_$TRANSLATE(^XTMP(WVSUB,"ERROR"),".")
- QUIT
- +7 SET WVRETURN(0)=1_U
- +8 SET WVRECID=0
- FOR
- SET WVRECID=$ORDER(^XTMP(WVSUB,WVRECID))
- if WVRECID=""!(WVRECID'[";")
- QUIT
- Begin DoDot:1
- +9 SET WVLINE=1+$GET(WVLINE)
- SET WVRETURN(WVLINE)=WVRECID_U_^XTMP(WVSUB,WVRECID,"CS PANEL")
- +10 IF $PIECE(WVRECID,";")=0
- SET $PIECE(WVRETURN(0),U)=0
- End DoDot:1
- +11 QUIT
- DETAIL(WVRETURN,WVRECID) ;RETURN DATA FOR COVER SHEET PANEL DETAILS
- +1 ;RPC: WVRPCOR DETAIL
- +2 NEW WVSUB,WVLINE,WVLINES,WVIEN
- +3 SET WVSUB=$$GETSUB($PIECE(WVRECID,",",2))
- +4 IF '$DATA(^XTMP(WVSUB,WVRECID))
- DO GETCOVER($PIECE(WVRECID,",",2),WVSUB)
- +5 SET WVLINES=0
- SET WVIEN=$PIECE($PIECE(WVRECID,";",2),",")
- +6 FOR WVLINE=1:1
- if '$DATA(^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE))
- QUIT
- Begin DoDot:1
- +7 DO WRAP^ORUTL($GET(^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)),"WVRETURN",$SELECT(WVIEN=0:0,1:1),1,,.WVLINES,60)
- End DoDot:1
- +8 QUIT
- GETCOVER(WVDFN,WVSUB) ;GET DATA NEEDED FOR COVER SHEET
- +1 NEW WVTYPES,WVEXTERNAL,WVBLOCK,WVRECID,WVNODE,WVERROR,WVREASONS
- +2 DO SETUP
- +3 KILL ^XTMP(WVSUB)
- +4 SET ^XTMP(WVSUB,0)=$$FMADD^XLFDT(DT,1)_U_DT_U_"DATA FOR CPRS COVER SHEET"
- +5 SET WVBLOCK=$$BLOCK(.WVREASONS,WVDFN)
- +6 IF +WVBLOCK=-1
- Begin DoDot:1
- +7 SET ^XTMP(WVSUB,"ERROR")="Could not determine applicability; "_$PIECE(WVBLOCK,U,2)
- End DoDot:1
- QUIT
- +8 IF +WVBLOCK
- Begin DoDot:1
- +9 SET WVRECID="0;0,"_WVDFN_","
- +10 SET ^XTMP(WVSUB,WVRECID,"CS PANEL")="Not"_U_"Applicable"
- +11 MERGE ^XTMP(WVSUB,WVRECID,"CS DETAIL")=WVREASONS
- End DoDot:1
- QUIT
- +12 SET WVNODE=0
- FOR
- SET WVNODE=$ORDER(WVTYPES(WVNODE))
- if '+WVNODE!($DATA(WVERROR))
- QUIT
- Begin DoDot:1
- +13 NEW WVFOUND,WVSTATUS,WVTITLE,WVEDD,WVEND,WVMETHODS,WVIEN,WVAPPL,WVNOTES
- +14 NEW WVNOTE,WVREASON,WVWANT,WVLINE,WVPNUM
- +15 SET WVAPPL=$$APPL(WVDFN,WVNODE)
- SET WVLINE=1
- +16 IF +WVAPPL=-1
- Begin DoDot:2
- +17 SET WVERROR="Could not determine applicability; "_$PIECE(WVAPPL,U,2)
- End DoDot:2
- QUIT
- +18 IF '+WVAPPL
- Begin DoDot:2
- +19 SET WVSTATUS=$SELECT(WVNODE=WVTYPES("B","P"):"Unable to Conceive",WVNODE=WVTYPES("B","L"):"Not Applicable",1:"")
- +20 IF $PIECE(WVAPPL,U,2)["Medically unable to conceive"
- SET WVFOUND=$$GETLREC^WVUTL11(WVDFN,WVNODE)
- +21 IF ($PIECE(WVAPPL,U,2)'["Medically unable to conceive")!($PIECE($GET(WVFOUND),U)=0)
- Begin DoDot:3
- +22 SET WVRECID=WVNODE_";0,"_WVDFN_","
- SET WVREASON=$PIECE(WVAPPL,U,2)
- +23 FOR WVPNUM=1:1:$LENGTH(WVREASON,"<BR>")
- Begin DoDot:4
- +24 SET ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)=$PIECE(WVREASON,"<BR>",WVPNUM)
- SET WVLINE=WVLINE+1
- End DoDot:4
- End DoDot:3
- End DoDot:2
- +25 IF +WVAPPL
- Begin DoDot:2
- +26 SET WVFOUND=$$GETLREC^WVUTL11(WVDFN,WVNODE)
- +27 IF '+WVFOUND
- Begin DoDot:3
- +28 SET WVRECID=WVNODE_";0,"_WVDFN_","
- +29 SET WVSTATUS="No data available"
- +30 SET ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)="No data on file."
- SET WVLINE=WVLINE+1
- End DoDot:3
- End DoDot:2
- +31 IF +$GET(WVFOUND)
- Begin DoDot:2
- +32 SET WVIEN=$PIECE(WVFOUND,U)
- +33 if '$DATA(WVSTATUS)
- SET WVSTATUS=$PIECE(WVFOUND,U,4)
- +34 SET WVRECID=WVNODE_";"_WVIEN_","_WVDFN_","
- +35 IF WVNODE=WVTYPES("B","P")
- Begin DoDot:3
- +36 IF WVSTATUS=1
- Begin DoDot:4
- +37 SET ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)="Last Menstrual Period: "_$$FMTE^XLFDT($PIECE($GET(^WV(790,WVDFN,WVNODE,WVIEN,4)),U),"1M")
- SET WVLINE=WVLINE+1
- +38 SET WVEDD=$PIECE($GET(^WV(790,WVDFN,WVNODE,WVIEN,4)),U,2)
- SET WVEDD("TEXT")="Expected Due Date"_$SELECT(WVEDD="":"*",1:"")
- +39 SET ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)=$$RJ^XLFSTR(WVEDD("TEXT"),21)_": "_$$FMTE^XLFDT(WVEDD,"1M")
- SET WVLINE=WVLINE+1
- End DoDot:4
- +40 IF WVSTATUS="Unable to Conceive"
- Begin DoDot:4
- +41 if $PIECE($GET(^WV(790,WVDFN,4,WVIEN,2)),U,2)'=1
- QUIT
- +42 SET WVREASON=$PIECE($GET(^WV(790,WVDFN,WVNODE,WVIEN,2)),U,3)
- +43 IF WVREASON'=""
- SET ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)=" Reason: "_WVREASON
- SET WVLINE=WVLINE+1
- End DoDot:4
- +44 IF WVSTATUS'=1
- Begin DoDot:4
- +45 SET WVEND=$PIECE($GET(^WV(790,WVDFN,WVNODE,WVIEN,4)),U,4)
- +46 IF WVEND'=""
- Begin DoDot:5
- +47 IF WVSTATUS="Unable to Conceive"
- SET ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)=""
- SET WVLINE=WVLINE+1
- +48 SET ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)="Previous pregnancy:"
- SET WVLINE=WVLINE+1
- +49 SET ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)=" Ended: "_$$FMTE^XLFDT(WVEND,"1M")
- SET WVLINE=WVLINE+1
- +50 SET ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)=" Reason: "_$PIECE($GET(^WV(790,WVDFN,WVNODE,WVIEN,4)),U,5)
- SET WVLINE=WVLINE+1
- End DoDot:5
- +51 SET WVWANT=$PIECE($GET(^WV(790,WVDFN,WVNODE,WVIEN,2)),U,4)
- +52 IF WVWANT'=""
- Begin DoDot:5
- +53 IF WVEND'=""
- SET ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)=""
- SET WVLINE=WVLINE+1
- +54 SET ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)="Does"_$SELECT('WVWANT:" not",1:"")_" want to become pregnant within the next year."
- SET WVLINE=WVLINE+1
- End DoDot:5
- +55 DO GETS^DIQ(790.05,WVIEN_","_WVDFN_",","30*","","WVMETHODS","WVERROR")
- +56 if $DATA(WVERROR)
- QUIT
- +57 SET WVMETHODS=""
- FOR
- SET WVMETHODS=$ORDER(WVMETHODS(790.17,WVMETHODS))
- if WVMETHODS=""
- QUIT
- Begin DoDot:5
- +58 SET ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)=$SELECT(+WVMETHODS=1:"Contraceptive Methods: ",1:" ")_WVMETHODS(790.17,WVMETHODS,.01)
- SET WVLINE=WVLINE+1
- End DoDot:5
- End DoDot:4
- End DoDot:3
- +59 IF WVNODE=WVTYPES("B","L")
- Begin DoDot:3
- +60 IF WVSTATUS=0
- Begin DoDot:4
- +61 SET WVEND=$PIECE($GET(^WV(790,WVDFN,WVNODE,WVIEN,2)),U,2)
- if WVEND=""
- QUIT
- +62 SET ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)=" Ended: "_$$FMTE^XLFDT(WVEND,"1M")
- SET WVLINE=WVLINE+1
- End DoDot:4
- End DoDot:3
- +63 SET ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)=""
- SET WVLINE=WVLINE+1
- +64 IF $PIECE(WVFOUND,U,3)'=""
- Begin DoDot:3
- +65 SET WVTITLE=$$GET1^DIQ(200,$PIECE(WVFOUND,U,3),8)
- +66 SET ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)="Entered by: "_$$GET1^DIQ(200,$PIECE(WVFOUND,U,3),.01)_$SELECT(WVTITLE'="":" ("_WVTITLE_")",1:"")
- SET WVLINE=WVLINE+1
- End DoDot:3
- +67 IF $PIECE(WVFOUND,U,2)'=""
- SET ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)="Entered on: "_$$FMTE^XLFDT($PIECE(WVFOUND,U,2),"1M")
- SET WVLINE=WVLINE+1
- End DoDot:2
- +68 IF $DATA(WVNOTES)
- Begin DoDot:2
- +69 FOR WVNOTE=1:1:WVNOTES
- SET ^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)=WVNOTES(WVNOTE)
- SET WVLINE=WVLINE+1
- +70 KILL WVNOTES
- End DoDot:2
- +71 IF WVSTATUS=1
- SET ^XTMP(WVSUB,"POSTINGS",$EXTRACT($PIECE(WVTYPES(WVNODE),U,3),1))=WVRECID
- +72 IF $DATA(WVEXTERNAL(WVSTATUS))
- Begin DoDot:2
- +73 SET WVSTATUS=WVEXTERNAL(WVSTATUS)_$SELECT($PIECE(WVAPPL,U,2)="DUE NOW":" - Reminder Due ("_$PIECE(WVTYPES(WVNODE),U,6)_")",1:"")
- End DoDot:2
- +74 IF WVSTATUS=""
- SET WVSTATUS="Unknown"
- +75 SET ^XTMP(WVSUB,WVRECID,"CS PANEL")=$PIECE(WVTYPES(WVNODE),U,3)_U_WVSTATUS
- End DoDot:1
- +76 IF $DATA(WVERROR)
- SET ^XTMP(WVSUB,"ERROR")=WVERROR
- +77 QUIT
- APPL(WVDFN,WVNODE) ;DETERMINE IF DATA TYPE IS APPLICABLE TO PATIENT
- +1 NEW WVREMST,WVSTATUS,WVREMDEF,WVLINE,WVEXIT,WVTEXT,WVEDDGRA,WVFNUM,WVDOCST
- +2 NEW WVGLOBAL,WVCAPTUR,WVRETURN,WVDELIM,WVCNT,WVRTL,WVSTATDT
- +3 SET (WVCAPTUR,WVEXIT,WVRTL)=0
- SET WVDELIM="<BR>"
- +4 SET WVREMDEF=$PIECE(WVTYPES(WVNODE),U)
- SET WVFNUM=$PIECE(WVTYPES(WVNODE),U,5)
- +5 SET WVREMST=$$REM^WVUTL11(WVDFN,WVREMDEF,1)
- +6 SET WVSTATUS=$SELECT(WVREMST="N/A":0,+WVREMST=-1:WVREMST,1:1)
- +7 IF WVREMST="N/A"!(WVREMST="DUE NOW")
- Begin DoDot:1
- +8 IF WVNODE=WVTYPES("B","P")
- Begin DoDot:2
- +9 IF $GET(^TMP($JOB,"WV APPLICABLE",WVREMDEF,"FIEVAL",1))=1
- Begin DoDot:3
- +10 SET WVGLOBAL=$NAME(^TMP($JOB,"WV APPLICABLE",WVREMDEF,"FINDINGS","Medically Unable to Conceive ID","MAINTENANCE"))
- +11 IF WVREMST="DUE NOW"
- SET WVSTATUS=0
- End DoDot:3
- End DoDot:2
- +12 IF $GET(WVGLOBAL)=""
- SET WVGLOBAL=$NAME(^TMP($JOB,"WV APPLICABLE",WVREMDEF,"MAINTENANCE"))
- +13 SET WVLINE=0
- FOR
- SET WVLINE=$ORDER(@WVGLOBAL@(WVLINE))
- if ('+WVLINE)!(WVEXIT)
- QUIT
- Begin DoDot:2
- +14 SET WVTEXT=$GET(@WVGLOBAL@(WVLINE))
- +15 IF (WVTEXT["Frequency:")!(WVTEXT["Computed Finding")
- SET WVCAPTUR=1
- QUIT
- +16 IF WVTEXT["Cohort:"
- SET WVCAPTUR=2
- SET WVDELIM="<BR>"
- QUIT
- +17 IF WVTEXT["Reminder Term: "
- SET WVRTL=WVLINE
- QUIT
- +18 IF WVTEXT["Prov. Narr. -"
- SET WVDELIM="<BR>"
- +19 IF '+WVCAPTUR
- QUIT
- +20 IF +WVCAPTUR=1
- IF WVTEXT=""
- SET WVEXIT=1
- QUIT
- +21 IF +WVCAPTUR=2
- Begin DoDot:3
- +22 IF WVTEXT=""
- SET WVCNT=1+$GET(WVCNT)
- IF WVCNT>1
- SET WVEXIT=1
- QUIT
- +23 IF WVTEXT'=""
- SET WVCNT=0
- End DoDot:3
- if WVEXIT
- QUIT
- +24 SET WVRETURN=$SELECT($GET(WVRETURN)'="":WVRETURN_WVDELIM,1:"")_$$TRIM^XLFSTR(WVTEXT)
- +25 IF +WVCAPTUR=2
- IF WVRTL>0
- IF WVLINE>(WVRTL+1)
- SET WVDELIM=" "
- SET WVRTL=0
- End DoDot:2
- +26 SET $PIECE(WVSTATUS,U,2)=$GET(WVRETURN)
- End DoDot:1
- +27 IF WVREMST="DUE NOW"
- Begin DoDot:1
- +28 SET WVEXIT=0
- SET WVDOCST=$GET(^TMP($JOB,"WV APPLICABLE",WVREMDEF,"FIEVAL",WVFNUM,"DOCUMENTATION STATUS"))
- +29 SET WVSTATDT=$GET(^TMP($JOB,"WV APPLICABLE",WVREMDEF,"FIEVAL",WVFNUM,"DATE"))
- +30 IF WVDOCST="COMPLETE"
- IF WVNODE=4
- Begin DoDot:2
- +31 SET WVEDDGRA=$GET(^TMP($JOB,"WV APPLICABLE",WVREMDEF,"FIEVAL",WVFNUM,"EDD-GRACE"))
- +32 IF WVEDDGRA>0
- IF WVEDDGRA>=DT
- SET WVEXIT=1
- End DoDot:2
- if WVEXIT
- QUIT
- +33 ;INCOMPLETE LESS THAN 1 YEAR OLD
- IF WVDOCST="INCOMPLETE"
- IF WVSTATDT>$PIECE(($$FMADD^XLFDT(DT,-365,-8)),".",1)
- QUIT
- +34 SET $PIECE(WVSTATUS,U,2)=WVREMST
- End DoDot:1
- +35 SET $PIECE(WVTYPES(WVNODE),U,6)=$GET(^TMP($JOB,"WV APPLICABLE",WVREMDEF,"PRINT NAME"))
- +36 KILL ^TMP($JOB,"WV APPLICABLE")
- +37 QUIT WVSTATUS
- BLOCK(WVREASONS,WVDFN) ;DETERMINE WHETHER TO BLOCK DATA ENTRY FOR SPECIFICED TYPE
- +1 NEW WVSTATUS,WVCAPTUR,WVLINE,WVTEXT,WVRETURN,WVREMDEF
- +2 SET WVREMDEF="VA-WH PREGNANCY AND LACTATION DATA ENTRY ALLOWED"
- SET WVSTATUS=$$REM^WVUTL11(WVDFN,WVREMDEF,1)
- +3 SET WVCAPTUR=0
- SET WVRETURN=0_U
- SET WVREASONS=0
- +4 IF WVSTATUS="N/A"
- Begin DoDot:1
- +5 SET WVLINE=0
- FOR
- SET WVLINE=$ORDER(^TMP($JOB,"WV APPLICABLE",WVREMDEF,"MAINTENANCE",WVLINE))
- if '+WVLINE
- QUIT
- Begin DoDot:2
- +6 SET WVTEXT=$GET(^TMP($JOB,"WV APPLICABLE",WVREMDEF,"MAINTENANCE",WVLINE))
- +7 IF WVTEXT["Cohort:"
- SET WVCAPTUR=1
- SET WVRETURN=1_U
- QUIT
- +8 IF ('WVCAPTUR)!(WVTEXT["Computed Finding")!(WVTEXT[" value - ")!(WVTEXT="")
- QUIT
- +9 SET WVREASONS=WVREASONS+1
- SET WVREASONS(WVREASONS)=$$TRIM^XLFSTR(WVTEXT)
- End DoDot:2
- End DoDot:1
- +10 IF +WVSTATUS=-1
- SET WVRETURN=WVSTATUS
- +11 KILL ^TMP($JOB,"WV APPLICABLE")
- +12 QUIT WVRETURN
- POSTSHRT(WVDFN) ;RETURN POSTING LETTERS
- +1 NEW WVSUB,WVLETTER,WVRET,WVPOSTINGS
- +2 SET WVSUB=$$GETSUB(WVDFN)
- +3 IF $DATA(^XTMP(WVSUB))
- MERGE WVPOSTINGS=^XTMP(WVSUB,"POSTINGS")
- +4 IF '$TEST
- Begin DoDot:1
- +5 NEW WVTYPES,WVEXTERNAL,WVNODE,WVFOUND,WVIEN,WVRECID
- +6 DO SETUP
- +7 SET WVNODE=0
- FOR
- SET WVNODE=$ORDER(WVTYPES(WVNODE))
- if '+WVNODE
- QUIT
- Begin DoDot:2
- +8 SET WVFOUND=$$GETLREC^WVUTL11(WVDFN,WVNODE)
- +9 IF $PIECE(WVFOUND,U,4)=1
- Begin DoDot:3
- +10 SET WVIEN=$PIECE(WVFOUND,U)
- SET WVRECID=WVNODE_";"_WVIEN_","_WVDFN_","
- +11 SET WVPOSTINGS($EXTRACT($PIECE(WVTYPES(WVNODE),U,3),1))=WVRECID
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +12 SET WVLETTER=""
- FOR
- SET WVLETTER=$ORDER(WVPOSTINGS(WVLETTER))
- if WVLETTER=""
- QUIT
- Begin DoDot:1
- +13 SET WVRET=$GET(WVRET)_WVLETTER
- End DoDot:1
- +14 QUIT $GET(WVRET)
- POSTLIST(WVRETURN,WVDFN,WVITEM) ;RETURN LIST OF POSTINGS
- +1 NEW WVSUB,WVLETTER,WVRECID
- +2 IF +$GET(WVITEM)=0
- SET WVITEM=1+$ORDER(WVRETURN("?"),-1)
- +3 SET WVSUB=$$GETSUB(WVDFN)
- +4 IF '$DATA(^XTMP(WVSUB))
- DO GETCOVER(WVDFN,WVSUB)
- +5 SET WVLETTER=""
- FOR
- SET WVLETTER=$ORDER(^XTMP(WVSUB,"POSTINGS",WVLETTER))
- if WVLETTER=""
- QUIT
- Begin DoDot:1
- +6 SET WVRECID=^XTMP(WVSUB,"POSTINGS",WVLETTER)
- +7 SET WVRETURN(WVITEM)="WH"_U_$PIECE($PIECE(^XTMP(WVSUB,WVRECID,"CS PANEL"),U),":")_U_WVLETTER
- SET WVITEM=WVITEM+1
- End DoDot:1
- +8 QUIT
- POSTREP(WVRETURN,WVDFN,WVTYPE) ;RETURN POSTINGS REPORT
- +1 ;RPC: WVRPCOR POSTREP
- +2 NEW WVSUB,WVRECID,WVSUBST,WVTEXT,WVLINE,WVLINES
- +3 SET WVDFN=$GET(WVDFN)
- SET WVTYPE=$GET(WVTYPE)
- +4 IF WVDFN'?1.N
- SET WVRETURN=1
- SET WVRETURN(1)="Invalid patient identifier: WVDFN="_$GET(WVDFN)
- QUIT
- +5 IF WVTYPE'?1U
- SET WVRETURN=1
- SET WVRETURN(1)="Invalid report type specified: '"_WVTYPE_"'."
- QUIT
- +6 SET WVSUBST(U)=" "
- SET WVSUB=$$GETSUB(WVDFN)
- +7 IF '$DATA(^XTMP(WVSUB))
- DO GETCOVER(WVDFN,WVSUB)
- +8 SET WVRECID=$GET(^XTMP(WVSUB,"POSTINGS",WVTYPE))
- +9 IF WVRECID=""
- SET WVRETURN=1
- SET WVRETURN(1)="No Women's Health postings available."
- QUIT
- +10 SET WVLINES=0
- SET WVTEXT=$$REPLACE^XLFSTR($GET(^XTMP(WVSUB,WVRECID,"CS PANEL")),.WVSUBST)
- +11 SET WVTEXT=$$RJ^XLFSTR($PIECE(WVTEXT,":"),21)_":"_$PIECE(WVTEXT,":",2)
- +12 DO WRAP^ORUTL(WVTEXT,"WVRETURN",,,,.WVLINES,60)
- +13 FOR WVLINE=1:1
- if '$DATA(^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE))
- QUIT
- DO WRAP^ORUTL($GET(^XTMP(WVSUB,WVRECID,"CS DETAIL",WVLINE)),"WVRETURN",,,,.WVLINES,60)
- +14 QUIT
- SETUP ;INITIALIZE ARRAY THAT MAPS DATA AND REMINDERS
- +1 ;WVTYPES(790_GLOBAL_NODE_#)=DATA_REMINDER_NAME^FILE_#^DISPLAY_LABEL^STATUS DISPLAY^FIEVAL_#^DATA_REMINDER_PRINT_NAME
- +2 SET WVTYPES(4)="VA-WH UPDATE PREGNANCY STATUS^790.05^Pregnant:^Pregnancy^3^"
- +3 SET WVTYPES(5)="VA-WH UPDATE LACTATION STATUS^790.16^Lactating:^Lactation^2^"
- +4 SET WVTYPES("B","P")=4
- SET WVTYPES("B","L")=5
- +5 SET WVEXTERNAL(1)="Yes"
- SET WVEXTERNAL(0)="No"
- SET WVEXTERNAL(-1)="Not Applicable"
- SET WVEXTERNAL(2)="Do not know"
- +6 QUIT
- GETSUB(WVDFN) ;RETURN ^XTMP CACHE SUBSCRIPT
- +1 QUIT "WV_CCS;"_WVDFN