Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: WVRPCPT

WVRPCPT.m

Go to the documentation of this file.
  1. WVRPCPT ;HIOFO/FT - WV PATIENT FILE (790) APIS AND RPCS ;Apr 05, 2021@14:28
  1. ;;1.0;WOMEN'S HEALTH;**16,24,26**;Sep 30, 1998;Build 624
  1. ;
  1. BRTX(DFN,BRTX,BRDD,CRTX,CRDD,WVPDATE) ; Update the patient's treatment needs and
  1. ; due dates in WV PATIENT file (790)
  1. ; Input: DFN - patient DFN [required]
  1. ; BRTX - breast treatment need IEN (790.51) [optional]
  1. ; BRDD - breast treatment need offset (e.g., 1Y) [optional]
  1. ; CRTX - cervical treament need IEN (790.5) [optional]
  1. ; CRDD - cervical treatment need offset (e.g., 90D) [optional]
  1. ; WVPDATE - date procedure was performed [optional]
  1. ; default is today
  1. ; Output: <none>
  1. Q:'DFN
  1. Q:'$D(^WV(790,DFN,0))
  1. S:'$D(BRTX) BRTX=""
  1. S:'$D(BRDD) BRDD=""
  1. S:'$D(CRTX) CRTX=""
  1. S:'$D(CRDD) CRDD=""
  1. S:'$G(WVPDATE) WVPDATE=DT
  1. N WVDATE,WVFDA
  1. S:BRTX]"" WVFDA(790,DFN_",",.18)=BRTX
  1. I BRDD]"" D
  1. .S WVDATE=$$FMADD^WVUTL3(BRDD,WVPDATE)
  1. .S:WVDATE>0 WVFDA(790,DFN_",",.19)=WVDATE
  1. .Q
  1. S:CRTX]"" WVFDA(790,DFN_",",.11)=CRTX
  1. I CRDD]"" D
  1. .S WVDATE=$$FMADD^WVUTL3(CRDD,WVPDATE)
  1. .S:WVDATE>0 WVFDA(790,DFN_",",.12)=WVDATE
  1. .Q
  1. I $D(WVFDA) D FILE^DIE("","WVFDA","WVERR")
  1. Q
  1. ;
  1. GETDATA(RESULT,WVDFN,WVTYPE,WVSDATE,WVEDATE,WVMAX,WVDIR,WVDT) ;RETURN REQUESTED DATA
  1. ; INPUT: RESULT - SUBSCRIPT UNDER WHICH TO RETURN DATA OR ERROR MESSAGES
  1. ; [REQUIRED]
  1. ; WVDFN - IEN OF PATIENT IN WV PATIENT FILE [REQUIRED]
  1. ; WVTYPE - TYPE OF DATA TO RETURN [REQUIRED]:
  1. ; "P": PREGNANCY DATA
  1. ; "L": LACTATION DATA
  1. ; WVSDATE - START DATE IN INTERNAL FILEMAN FORMAT [OPTIONAL]
  1. ; DEFAULT: NO DATE RANGE RESTRICTION
  1. ; WVEDATE - END DATE IN INTERNAL FILEMAN FORMAT [OPTIONAL]
  1. ; DEFAULT: NO DATE RANGE RESTRICTION
  1. ; WVMAX - MAXIMUM NUMBER OF ENTRIES TO RETURN [OPTIONAL]
  1. ; DEFAULT: RETURN ALL DATA
  1. ; WVDIR - SEARCH DIRECTION [OPTIONAL]:
  1. ; 1:CHRONOLOGICAL ORDER
  1. ; -1: REVERSE CHRONOLOGICAL ORDER [DEFAULT]
  1. ; WVDT - THE DATE (IN FILEMAN INTERNAL FORMAT) TO USE AS TODAY'S DATE [OPTIONAL]
  1. ; DEFAULT: VALUE STORED IN DT VARIABLE
  1. ; OUTPUT: ^TMP(RESULT,$J)=NUMBER OF ENTRIES RETURNED
  1. ; -1^Error message
  1. ; ^TMP(RESULT,$J,N,"FIELD NAME")=INTERNAL_FORMAT^EXTERNAL FORMAT
  1. I $G(RESULT)="" S RESULT="WVDATA"
  1. K ^TMP(RESULT,$J)
  1. I $G(WVDFN)'?1.N D Q
  1. .S ^TMP(RESULT,$J)="-1"_U_"Invalid parameter: WVDFN="_$G(WVDFN)
  1. N WVFILE,WVCOUNT
  1. S WVFILE=$S(WVTYPE="P":790.05,WVTYPE="L":790.16,1:""),WVCOUNT=0
  1. I $G(WVFKST) D Q
  1. .S WVCOUNT=1+WVCOUNT,^TMP(RESULT,$J)=WVCOUNT
  1. .D SETARRAY(WVFILE,.01,$$NOW^XLFDT),SETARRAY(WVFILE,21,1)
  1. .I WVTYPE="P" D SETARRAY(WVFILE,42,DT),SETARRAY(,"P2",0)
  1. .I WVTYPE="L" D SETARRAY(,"P2",1)
  1. I '$D(^WV(790,WVDFN)) D Q
  1. .S ^TMP(RESULT,$J)="-1"_U_"The specified patient is not in the WV PATIENT file"
  1. I "^P^L^"'[U_$G(WVTYPE)_U!($G(WVTYPE)="") D Q
  1. .S ^TMP(RESULT,$J)="-1"_U_"Invalid parameter: WVTYPE="_$G(WVTYPE)
  1. S WVDIR=$G(WVDIR,-1)
  1. I '(WVDIR=1!(WVDIR=-1)) D Q
  1. .S ^TMP(RESULT,$J)="-1"_U_"Invalid parameter: WVDIR="_WVDIR
  1. N WVIDX,WVDATE,WVTEMP
  1. S WVDATE(1)=+$G(WVSDATE),WVDATE(2)=+$G(WVEDATE)
  1. M WVTEMP=WVDATE
  1. I (WVDIR=1&(WVDATE(1)>WVDATE(2)))!((WVDIR=-1&(WVDATE(2)>WVDATE(1)))) D
  1. .S WVDATE(1)=WVTEMP(2),WVDATE(2)=WVTEMP(1)
  1. I WVDATE(1)=0,WVDIR=-1 S WVDATE(1)="?"
  1. S WVMAX=$G(WVMAX)
  1. I WVMAX<0 D Q
  1. .S ^TMP(RESULT,$J)="-1"_U_"Invalid parameter: WVMAX="_WVMAX
  1. N WVPATDT,WVDATES
  1. I $$INSTALDT^XPDUTL("WV*1.0*24",.WVDATES)>0 S WVPATDT=$O(WVDATES(0))
  1. E S WVPATDT=$$DT^XLFDT
  1. N WVSUB,WVIEN,WVEXIT,WVPNUM,WVNODE,WVDTE,WVINDEX
  1. S WVSUB=$S(WVTYPE="P":4,WVTYPE="L":5,1:""),WVDTE=0
  1. F S WVDTE=$O(^WV(790,WVDFN,WVSUB,"B",WVDTE)) Q:'+WVDTE S WVINDEX=0 F S WVINDEX=$O(^WV(790,WVDFN,WVSUB,"B",WVDTE,WVINDEX)) Q:'+WVINDEX D
  1. .Q:$P($G(^WV(790,WVDFN,WVSUB,WVINDEX,0)),U,6)=1!('$D(^WV(790,WVDFN,WVSUB,WVINDEX)))
  1. .S WVINDEX(WVDTE,WVINDEX)=""
  1. S WVDATE=WVDATE(1)
  1. F S WVDATE=$O(WVINDEX(WVDATE),WVDIR) Q:WVDATE=""!($G(WVEXIT))!(WVCOUNT=WVMAX) D
  1. .I WVDATE(2)>0 D Q:$G(WVEXIT)
  1. ..I WVDIR=-1,WVDATE<WVDATE(2) S WVEXIT=1 Q
  1. ..I WVDIR=1,WVDATE>WVDATE(2) S WVEXIT=1 Q
  1. .S WVIEN=$S(WVDIR=-1:"?",1:0) F S WVIEN=$O(WVINDEX(WVDATE,WVIEN),WVDIR) Q:WVIEN=""!($G(WVEXIT))!(WVCOUNT=WVMAX) D
  1. ..S WVCOUNT=WVCOUNT+1,WVNODE=$G(^WV(790,WVDFN,WVSUB,WVIEN,0))
  1. ..S ^TMP(RESULT,$J,WVCOUNT,"RECORD ID")=WVIEN_","_WVDFN_","
  1. ..S ^TMP(RESULT,$J,WVCOUNT,"VISIT STRING")=$$VSTRING^WVUTL11($P(WVNODE,U,4))
  1. ..D SETARRAY(WVFILE,.01,$P(WVNODE,U))
  1. ..D SETARRAY(WVFILE,3,$P(WVNODE,U,3))
  1. ..D SETARRAY(WVFILE,5,$P(WVNODE,U,5))
  1. ..S WVNODE=$G(^WV(790,WVDFN,WVSUB,WVIEN,2))
  1. ..F WVPNUM=1:1:$L(WVNODE,U) D
  1. ...Q:$P(WVNODE,U,WVPNUM)=""
  1. ...D SETARRAY(WVFILE,"2"_WVPNUM,$P(WVNODE,U,WVPNUM))
  1. ..I WVTYPE="P" D
  1. ...I $O(^WV(790,WVDFN,WVSUB,WVIEN,3,0))'="" D
  1. ....N WVSIEN,WVRLEVEL
  1. ....S WVSIEN=0 F S WVSIEN=$O(^WV(790,WVDFN,WVSUB,WVIEN,3,WVSIEN)) Q:'WVSIEN!($G(WVRLEVEL)<0) D
  1. .....S WVNODE=$G(^WV(790,WVDFN,WVSUB,WVIEN,3,WVSIEN,0))
  1. .....D SETARRAY(790.17,.01,$P(WVNODE,U),WVSIEN)
  1. .....N WVLEVEL
  1. .....S WVLEVEL=$$MOA^WVUTL11($P(WVNODE,U),WVDFN,$G(WVDT,DT))
  1. .....I WVLEVEL=-1!($G(WVRLEVEL)>-1&(WVLEVEL>$G(WVRLEVEL))) S WVRLEVEL=WVLEVEL
  1. ....D SETARRAY(,"P1",$G(WVRLEVEL))
  1. ...S WVNODE=$G(^WV(790,WVDFN,WVSUB,WVIEN,4))
  1. ...F WVPNUM=1:1:$L(WVNODE,U) D
  1. ....Q:$P(WVNODE,U,WVPNUM)=""
  1. ....D SETARRAY(WVFILE,"4"_WVPNUM,$P(WVNODE,U,WVPNUM))
  1. ...N WVSTATUS,WVDSS
  1. ...S WVSTATUS=$P($G(^TMP(RESULT,$J,WVCOUNT,"PREGNANCY STATE")),U,2)
  1. ...I $P(^TMP(RESULT,$J,WVCOUNT,"DATA SOURCE"),U,2)="WOMEN'S HEALTH",$P(^TMP(RESULT,$J,WVCOUNT,"PREGNANCY STATUS D/T ENTERED"),U)<WVPATDT D Q
  1. ....I WVSTATUS="PREGNANT" D
  1. .....D SETARRAY(,"P2",$S($D(^TMP(RESULT,$J,WVCOUNT,"EDD"))=1:1,1:0))
  1. ....I WVSTATUS'="PREGNANT" D SETARRAY(,"P2",1)
  1. ...I $D(^TMP(RESULT,$J,WVCOUNT,"MEDICALLY UNABLE TO CONCEIVE"))=0 D SETARRAY(,"P2",0) Q
  1. ...I $P(^TMP(RESULT,$J,WVCOUNT,"MEDICALLY UNABLE TO CONCEIVE"),U)=1 D
  1. ....I '$D(^TMP(RESULT,$J,WVCOUNT,"MEDICAL REASON")) D SETARRAY(,"P2",0)
  1. ...I WVSTATUS="PREGNANT" D
  1. ....D SETARRAY(,"P2",$S($D(^TMP(RESULT,$J,WVCOUNT,"EDD"))=1:1,1:0))
  1. ...I WVSTATUS'="PREGNANT" D
  1. ....I $P(^TMP(RESULT,$J,WVCOUNT,"MEDICALLY UNABLE TO CONCEIVE"),U)=0 D Q:$G(WVDSS)
  1. .....I $D(^TMP(RESULT,$J,WVCOUNT,"TRYING TO BECOME PREGNANT"))=0 D SETARRAY(,"P2",0) S WVDSS=1 Q
  1. .....I '$P(^TMP(RESULT,$J,WVCOUNT,"TRYING TO BECOME PREGNANT"),U),$D(^TMP(RESULT,$J,WVCOUNT,"CONTRACEPTIVE METHOD USED"))'=10 D Q
  1. ......D SETARRAY(,"P2",0)
  1. ......S WVDSS=1
  1. ....I $$ISPREG^WVUTL11(WVDFN,,,1),$D(^TMP(RESULT,$J,WVCOUNT,"PREGNANCY END DATE"))=0 D SETARRAY(,"P2",0) Q
  1. ....I $D(^TMP(RESULT,$J,WVCOUNT,"PREGNANCY END DATE"))=1,$D(^TMP(RESULT,$J,WVCOUNT,"REASON PREGNANCY ENDED"))'=1 D SETARRAY(,"P2",0) Q
  1. ....D SETARRAY(,"P2",1)
  1. ...Q:$P(^TMP(RESULT,$J,WVCOUNT,"MEDICALLY UNABLE TO CONCEIVE"),U)=1
  1. ...I WVSTATUS="" D SETARRAY(,"P2",0)
  1. ...I '$D(^TMP(RESULT,$J,WVCOUNT,"DOCUMENTATION STATUS")) D SETARRAY(,"P2",1)
  1. ..I WVTYPE="L" D
  1. ...I $P($G(^TMP(RESULT,$J,WVCOUNT,"LACTATION STATE")),U)=0&('$D(^TMP(RESULT,$J,WVCOUNT,"END DATE")))&($P($G(^WV(790,WVDFN,WVSUB,0)),U,4)>1) D Q
  1. ....N WVPIEN
  1. ....S WVPIEN=+$O(WVINDEX(WVDATE),-1) I WVPIEN>0 S WVPIEN=+$O(WVINDEX(WVPIEN,0))
  1. ....I WVPIEN>0,$P($G(^WV(790,WVDFN,WVSUB,WVPIEN,2)),U)=1 D SETARRAY(,"P2",0) Q
  1. ....D SETARRAY(,"P2",1)
  1. ...D SETARRAY(,"P2",1)
  1. S ^TMP(RESULT,$J)=WVCOUNT
  1. Q
  1. ;
  1. PFIELDS ;PSEUDO-FIELD DEFINITIONS
  1. ;;PREGNANCY LIKELIHOOD^S $P(WVDATA,U,2)=$S(WVDATA=1:"HIGH",WVDATA=2:"LOW",WVDATA=-1:"CALCULATION ERROR",1:"UNKNOWN")
  1. ;;DOCUMENTATION STATUS^S $P(WVDATA,U,2)=$S(WVDATA=0:"INCOMPLETE",WVDATA=1:"COMPLETE",1:"UNKNOWN")
  1. SAVEDATA(WVRETURN,WVDATA) ;SAVE DATA FROM CLINICAL REMINDERS
  1. ; INPUT: WVRETURN - REFERENCE TO ARRAY IN WHICH TO RETURN STATUS
  1. ; [REQUIRED]
  1. ; WVDATA - REFERENCE TO ARRAY OF DATA TO SAVE
  1. ; [REQUIRED]
  1. N WVFILE
  1. S WVFILE=0 F S WVFILE=$O(WVDATA("DATA",WVFILE)) Q:WVFILE=""!(+$G(WVRETURN(1))<0) D
  1. .I "^790^790.05^790.17^790.16^790.9^790.1^790.4^790.23^"'[(U_WVFILE_U) S WVRETURN(1)=-1_U_"Invalid file number: "_WVFILE
  1. Q:$D(WVRETURN)
  1. I $G(WVDATA("DFN"))'?1.N D Q
  1. .S WVRETURN(1)=-1_U_"Invalid patient identifier: "_$G(WVDATA("DFN"),"No identifer specified.")
  1. N WVNPFLAG
  1. S WVNPFLAG=$$ISREG^WVUTL11(WVDATA("DFN"))
  1. I '+WVNPFLAG S WVRETURN(1)=-1_U_$P(WVNPFLAG,U,2) Q
  1. I $D(WVDATA("DATA",790)) D
  1. .N WVID
  1. .S WVID=$O(WVDATA("DATA",790,"")) Q:WVID=""
  1. .I WVID["+" M WVDATA("DATA",790,WVDATA("DFN")_",")=WVDATA("DATA",790,WVID) K WVDATA("DATA",790,WVID)
  1. I $D(WVDATA("DATA",790))!($D(WVDATA("DATA",790.1)))!($D(WVDATA("DATA",790.4)))!($D(WVDATA("DATA",790.23))) D NEW^WVRPCGF(.WVRETURN,.WVDATA)
  1. I $D(WVDATA("DATA",790.9)) S WVRETURN(1)=$$CLRSRND^WVRPCPT2(WVDATA("DFN"),$E(WVDATA("DATA",790.9,$O(WVDATA("DATA",790.9,"")),.01),*))
  1. Q:+$G(WVRETURN(1))=-1
  1. N WVERROR,WVCMNEW,WVIEN,WVNEWREC,WVREC,WVFIELD,WVVPR
  1. N WVFDA,WVARRAY,WVCMIEN,WV79005NR,WVENTRY,WVVIEN,WVSEQ
  1. I $G(WVDATA("VISIT"))="" S WVVIEN=0
  1. E D Q:+$G(WVRETURN(1))=-1
  1. .S WVVIEN=$$VISITIEN^WVUTL11(WVDATA("DFN"),$G(WVDATA("VISIT")))
  1. .I WVVIEN<1 D
  1. ..F WVFILE=790.05,790.16 D Q:+$G(WVRETURN(1))<0
  1. ...Q:'$D(WVDATA("DATA",WVFILE))
  1. ...I $G(WVDATA("DATA",WVFILE,"MASTER ID"))="" D Q
  1. ....S WVRETURN(1)=-1_U_"Invalid VISIT file entry specified: "_$G(WVDATA("VISIT"))
  1. D CHKIENS(.WVDATA)
  1. D EXTRTDAT^WVRPCVPR(+$$GETLREC^WVUTL11(WVDATA("DFN"),4)_","_WVDATA("DFN")_",","BEFORE")
  1. ;Ensure records are complete and then save data (contraceptive methods handled separately)
  1. S WVFILE=0 F S WVFILE=$O(WVDATA("DATA",WVFILE)) Q:'WVFILE!(+$G(WVRETURN(1))<0) D
  1. .I "^790^790.1^790.4^790.9^790.23^"[(U_WVFILE_U) Q
  1. .S WVARRAY=$S(WVFILE=790.17:"WVCMNEW",1:"WVFDA")
  1. .S WVREC="" F S WVREC=$O(WVDATA("DATA",WVFILE,WVREC)) Q:'WVREC!($P($G(WVRETURN(1)),U)=-1) D
  1. ..S WVNEWREC=$S($E(WVREC,1)="+":1,1:0),WVENTRY=""
  1. ..I WVFILE=790.17,WVREC["?" S WVENTRY=$P(WVREC,"?")_WVCMIEN_","_$P($P(WVREC,"?",2),",",2,$L($P(WVREC,"?",2),","))
  1. ..M @WVARRAY@(WVFILE,$S(WVENTRY'="":WVENTRY,1:WVREC))=WVDATA("DATA",WVFILE,WVREC)
  1. ..Q:'$D(WVFDA)
  1. ..I WVNEWREC,$D(WVFDA(WVFILE,WVREC)),'$D(WVFDA(WVFILE,WVREC,.01)) S WVFDA(WVFILE,WVREC,.01)=$$NOW^XLFDT
  1. ..I WVVIEN>0,'$D(WVFDA(WVFILE,WVREC,4)) S WVFDA(WVFILE,WVREC,4)="`"_WVVIEN
  1. ..I $G(WVDATA("DOCUMENT"))>0 S WVFDA(WVFILE,WVREC,5)="`"_WVDATA("DOCUMENT")
  1. ..D VALENTRY(WVFILE,WVREC,.WVFDA,WVNEWREC)
  1. ..D:$G(WVNEWREC) UPDATE^DIE("E","WVFDA","WVIEN","WVERROR")
  1. ..D:'$G(WVNEWREC) FILE^DIE("EK","WVFDA","WVERROR")
  1. ..I WVFILE=790.05 D
  1. ...I WVNEWREC S WVSEQ=$P($P(WVREC,",",1),"+",2),WVCMIEN=$G(WVIEN(WVSEQ))
  1. ...E S WVCMIEN=$P(WVREC,",")
  1. ...S WVCMIEN(1)=$P(WVREC,",",2),WV79005NR=WVNEWREC
  1. ...S WVVPR("AFTER")=$S(WVNEWREC:$G(WVIEN(WVSEQ))_","_WVDATA("DFN")_",",1:WVREC)
  1. ..I $D(WVERROR) S WVRETURN(1)=-1_U_"Unable to save/update the status data: "_$$FMERROR^WVUTL11(.WVERROR)
  1. Q:+$G(WVRETURN(1))=-1
  1. I $D(WVDATA("DATA",790.05))!($D(WVDATA("DATA",790.17))) D
  1. .S WVRETURN(1)=$$METHOD^WVTDALRT(WVDATA("DFN"),.WVCMIEN,+$G(WV79005NR),.WVCMNEW)
  1. .D NOTIFY^WVRPCVPR(.WVVPR)
  1. I '$D(WVRETURN(1)) S WVRETURN(1)=1
  1. Q
  1. ;
  1. VALENTRY(WVFILE,WVENTRY,WVFDA,WVNEWREC) ;VALIDATE THE DATA TO FILE
  1. ;INPUT: WVFILE - FILE NUMBER IN WHICH DATA WILL BE SAVED [REQUIRED]
  1. ; WVENTRY - FILEMAN IENS VALUE OF THE ENTRY IN THE FILE [REQUIRED]
  1. ; WVFDA - REFERENCE TO ARRAY CONTAINING THE NEW ENTRY
  1. I $D(WVFDA(WVFILE,WVENTRY,23)) K WVFDA(WVFILE,WVENTRY,24) ;WIPE OUT LATER FIELDS IF MUC REASON IS SET
  1. N WVFIELD,WVVALUE
  1. ;HANDLE BLANK FIELD VALUES
  1. S WVFIELD="" F S WVFIELD=$O(WVFDA(WVFILE,WVENTRY,WVFIELD)) Q:WVFIELD="" D
  1. .S WVVALUE=$G(WVFDA(WVFILE,WVENTRY,WVFIELD)) Q:WVVALUE'=""
  1. .I WVNEWREC K WVFDA(WVFILE,WVENTRY,WVFIELD)
  1. .I 'WVNEWREC S WVFDA(WVFILE,WVENTRY,WVFIELD)="@"
  1. Q
  1. ;
  1. CHKIENS(WVDATA) ;ENSURE IENS ARE COMPLETE AND ACCURATE
  1. ;INPUT: WVDATA - REFERENCE TO ARRAY CONTAINING DATA TO CHECK
  1. N WVLEVELS,WVLEVEL,WVIEN,WVFILE,WVMIENS,WVIENS,WVENTRY,WVUPLVL,WVPFILE,WVPLCHDR,WVID,WVSTRIP,WVNEWPH,WVPDIENS
  1. ;WVLEVELS(LEVEL_#,FILE_#)=PARENT_FILE_#
  1. S WVLEVELS(1,790)="",WVLEVELS(2,790.05)=790,WVLEVELS(2,790.16)=790,WVLEVELS(3,790.17)=790.05
  1. S WVLEVELS(1,790.1)="",WVLEVELS(2,790.23)=790.1,WVLEVELS(1,790.4)=""
  1. S WVSTRIP("+")="?"
  1. S WVIEN(790)=$G(WVDATA("DFN"))
  1. S WVLEVEL=0 F S WVLEVEL=$O(WVLEVELS(WVLEVEL)) Q:'+WVLEVEL D
  1. .S WVFILE=0 F S WVFILE=$O(WVLEVELS(WVLEVEL,WVFILE)) Q:'+WVFILE D
  1. ..Q:'$D(WVDATA("DATA",WVFILE))
  1. ..K WVPDIENS
  1. ..S WVMIENS=$P($G(WVDATA("DATA",WVFILE,"MASTER ID")),":"),WVNEWPH=0
  1. ..S WVIENS="" F S WVIENS=$O(WVDATA("DATA",WVFILE,WVIENS)) Q:WVIENS="" D
  1. ...I (WVIENS="MASTER ID")!($D(WVPDIENS(WVIENS))) Q
  1. ...I $E(WVIENS,1)="+" D
  1. ....S WVID=$E(WVIENS,2,$L($P(WVIENS,",")))
  1. ....I $D(WVPLCHDR(WVID)) S WVPLCHDR=WVPLCHDR+1,WVPLCHDR(WVPLCHDR)="",WVNEWPH=1
  1. ....E S WVPLCHDR(WVID)="",WVPLCHDR=WVID
  1. ...S WVIEN(WVFILE)=$S(WVNEWPH:"+"_WVPLCHDR,1:$P(WVIENS,","))
  1. ...I $L(WVIENS,",")<(WVLEVEL+1) D
  1. ....S WVENTRY=WVIEN(WVFILE)_","
  1. ....S WVUPLVL=WVLEVEL+1,WVPFILE=WVFILE F S WVUPLVL=$O(WVLEVELS(WVUPLVL),-1) Q:'+WVUPLVL S WVPFILE=WVLEVELS(WVUPLVL,WVPFILE) I WVPFILE'="" S WVENTRY=WVENTRY_WVIEN(WVPFILE)_","
  1. ....S $P(WVENTRY,",",2,$L(WVENTRY,","))=$$REPLACE^XLFSTR($P(WVENTRY,",",2,$L(WVENTRY,",")),.WVSTRIP)
  1. ....M WVDATA("DATA",WVFILE,WVENTRY)=WVDATA("DATA",WVFILE,WVIENS)
  1. ....K WVDATA("DATA",WVFILE,WVIENS)
  1. ....S WVIENS="",WVPDIENS(WVENTRY)=""
  1. ...I WVIENS'="" S WVPDIENS(WVIENS)=""
  1. ..I WVMIENS'="" K WVDATA("DATA",WVFILE,"MASTER ID")
  1. Q
  1. SETARRAY(WVFILE,WVFIELD,WVDATA,WVMSUB) ;SET DATA INTO THE RETURN ARRAY
  1. ; INPUT: WVFILE - FILE NUMBER CONTAINING THE FIELD [REQUIRED]
  1. ; WVFIELD - FIELD NUMBER [REQUIRED]
  1. ; WVDATA - INTERNAL VALUE OF THE FIELD [REQUIRED]
  1. ; WVMSUB - SUBSCRIPT WITHIN THE TMP GLOBAL TO RETURN DATA IN
  1. N WVSUB
  1. I $E(WVFIELD,1)="P" D
  1. .N WVCODE,WVLINE
  1. .S WVLINE=$E(WVFIELD,2,*)
  1. .S WVSUB=$P($P($T(PFIELDS+WVLINE),";;",2),U)
  1. .S WVCODE=$P($P($T(PFIELDS+WVLINE),";;",2),U,2)
  1. .X:WVCODE'="" WVCODE
  1. I $E(WVFIELD,1)'="P" D
  1. .S WVSUB=$$GET1^DID(WVFILE,WVFIELD,,"LABEL")
  1. .S $P(WVDATA,U,2)=$$EXTERNAL^DILFD(WVFILE,WVFIELD,"",WVDATA)
  1. I $G(WVMSUB)>0 S ^TMP(RESULT,$J,WVCOUNT,WVSUB,WVMSUB)=WVDATA
  1. E S ^TMP(RESULT,$J,WVCOUNT,WVSUB)=WVDATA
  1. Q
  1. ;
  1. GETSTATUS(WVDFN) ;RETURN SINGLE LINE PREGNANT/LACTATING
  1. N WVPOST,WVINDEX,WVRET,WVTEXT,WVSUB
  1. D POSTLIST^WVRPCOR(.WVPOST,WVDFN,.WVINDEX)
  1. S WVINDEX=0 F S WVINDEX=$O(WVPOST(WVINDEX)) Q:WVINDEX="" D
  1. .S WVTEXT=$P(WVPOST(WVINDEX),U,2)
  1. .S WVRET=$S($G(WVRET)'="":WVRET_" and ",1:"")_WVTEXT
  1. .I WVTEXT'="Pregnant" Q
  1. .S WVSUB(1)=$$GETSUB^WVRPCOR(WVDFN)
  1. .S WVSUB(2)=$P($P($G(^XTMP(WVSUB(1),"POSTINGS","P")),";",2),",",1)
  1. .I WVSUB(2)="" Q
  1. .S WVRET=WVRET_" (Expected Due Date: "_$$FMTE^XLFDT($P($G(^WV(790,WVDFN,4,WVSUB(2),4)),U,2))_")"
  1. Q $G(WVRET)
  1. GETEDD(WVDFN) ;RETURN EDD AND WEEKS GESTATION
  1. N WVREC,WVEDD,WVGA,WVRESULT,WVSTATUS
  1. S WVRESULT=$NA(^TMP("WVEDD",$J))
  1. S WVREC=$$GETLREC^WVUTL11(WVDFN,4)
  1. S WVSTATUS=$P($G(^WV(790,WVDFN,4,+WVREC,2)),U,1)
  1. I WVSTATUS'=1 S @WVRESULT@(1,0)="" Q "~@"_WVRESULT
  1. S WVEDD=$P($G(^WV(790,WVDFN,4,+WVREC,4)),U,2)
  1. S @WVRESULT@(1,0)="Expected Due Date: "_$$FMTE^XLFDT(WVEDD)
  1. S WVGA=$P(((280-$$FMDIFF^XLFDT(WVEDD,DT,1))/7),".",1)
  1. I $P(WVREC,U,4)=1 S @WVRESULT@(2,0)="Gestational Age: "_WVGA_" weeks"
  1. Q "~@"_WVRESULT