| 1 | WVRPCPR ;HIOFO/FT-WV PROCEDURE file (790.1) RPCs (cont.) ;9/29/03  15:15
 | 
|---|
| 2 |  ;;1.0;WOMEN'S HEALTH;**16**;Sep 30, 1998
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; This routine uses the following IAs:
 | 
|---|
| 5 |  ; #10103 - ^XLFDT calls           (supported)
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  ; This routine supports the following IAs:
 | 
|---|
| 8 |  ; LATEST - 4105
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 | TYPEIEN(WVNAME) ; This function returns the IEN of an entry in the
 | 
|---|
| 11 |  ; WV PROCEDURE TYPE file (#790.2)
 | 
|---|
| 12 |  ;  Input: WVNAME is the procedure name (i.e., .01 value)
 | 
|---|
| 13 |  ; Output: IEN of the procedure type. Returns -1 if not found.
 | 
|---|
| 14 |  N WVIEN
 | 
|---|
| 15 |  I WVNAME="" Q -1  ;can't be null
 | 
|---|
| 16 |  S WVIEN=$O(^WV(790.2,"B",WVNAME,0))
 | 
|---|
| 17 |  S:WVIEN'>0 WVIEN=-1
 | 
|---|
| 18 |  Q WVIEN
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 | TYPENAME(WVIEN) ; This function returns the NAME of an entry in the
 | 
|---|
| 21 |  ; WV PROCEDURE TYPE file (#790.2)
 | 
|---|
| 22 |  ;  Input: IEN (FILE 790.2)
 | 
|---|
| 23 |  ; Output: Name of the procedure type. Returns -1 if not found.
 | 
|---|
| 24 |  N WVNAME
 | 
|---|
| 25 |  I WVIEN="" Q -1  ;can't be null
 | 
|---|
| 26 |  S WVNAME=$P($G(^WV(790.2,+WVIEN,0)),U,1)
 | 
|---|
| 27 |  Q WVNAME
 | 
|---|
| 28 |  ;
 | 
|---|
| 29 | BUIEN() ; This function returns the IEN for a BREAST ULTRASOUND procedure
 | 
|---|
| 30 |  ; type from FILE 790.2
 | 
|---|
| 31 |  Q $$TYPEIEN("BREAST ULTRASOUND")
 | 
|---|
| 32 |  ;
 | 
|---|
| 33 | PAPIEN() ; This function returns the IEN for a screening PAP SMEAR
 | 
|---|
| 34 |  ; procedure type from FILE 790.2
 | 
|---|
| 35 |  Q $$TYPEIEN("PAP SMEAR")
 | 
|---|
| 36 |  ;
 | 
|---|
| 37 | MAMIENS() ; This function returns the IENs for diagnostic MAMMOGRAM
 | 
|---|
| 38 |  ; procedure types from FILE 790.2
 | 
|---|
| 39 |  ; returns a string delimited by caret with the IENS (e.g., "25^26"
 | 
|---|
| 40 |  N WVARRAY,WVCNT,WVDIAG,WVIEN,WVNAME
 | 
|---|
| 41 |  S (WVDIAG,WVNAME)="",WVCNT=0
 | 
|---|
| 42 |  S WVARRAY("MAMMOGRAM DX UNILAT")=""
 | 
|---|
| 43 |  S WVARRAY("MAMMOGRAM DX BILAT")=""
 | 
|---|
| 44 |  S WVARRAY("MAMMOGRAM SCREENING")=""
 | 
|---|
| 45 |  F  S WVNAME=$O(WVARRAY(WVNAME)) Q:WVNAME=""  D
 | 
|---|
| 46 |  .S WVIEN=$$TYPEIEN(WVNAME)
 | 
|---|
| 47 |  .I WVIEN>0 S WVCNT=WVCNT+1,$P(WVDIAG,U,WVCNT)=WVIEN
 | 
|---|
| 48 |  .Q
 | 
|---|
| 49 |  Q WVDIAG
 | 
|---|
| 50 |  ;
 | 
|---|
| 51 | LATEST(RESULT,WVDFN,WVPTYPE,WVDATES,WVMAX,WVDX) ; Returns the Pap Smear or
 | 
|---|
| 52 |  ; Mammogram entries in reverse chronological order.
 | 
|---|
| 53 |  ; Input:   RESULT - Array name for return values [required]
 | 
|---|
| 54 |  ;           WVDFN - patient DFN [required]
 | 
|---|
| 55 |  ;         WVPTYPE - "P" for Pap Smear or "M" for Mammogram or
 | 
|---|
| 56 |  ;                   "U" for Breast Ultrasound [required]
 | 
|---|
| 57 |  ;         WVDATES - date range in FileMan internal format
 | 
|---|
| 58 |  ;                   (e.g., 3020101^3021231) [optional]
 | 
|---|
| 59 |  ;           WVMAX - max number of entries to return (e.g., 20)
 | 
|---|
| 60 |  ;                   (optional - default is 10) [optional]
 | 
|---|
| 61 |  ;            WVDX - "N", "A", "P" or "*" to return records with a
 | 
|---|
| 62 |  ;                   dx/result of normal, abnormal, pending or any
 | 
|---|
| 63 |  ;                   [optional]
 | 
|---|
| 64 |  ;
 | 
|---|
| 65 |  ; Output: RESULT(0)=# of matches^
 | 
|---|
| 66 |  ;                   or=-1^error message
 | 
|---|
| 67 |  ;         RESULT(n)=IEN^DFN^DATE^TYPE^DX CATEGORY^DX Result^Rad/Lab
 | 
|---|
| 68 |  ;                   Link^FILE 790.1 STATUS
 | 
|---|
| 69 |  ;   where IEN = FILE 790.1 internal entry number
 | 
|---|
| 70 |  ;         DFN = FILE 2 internal entry number
 | 
|---|
| 71 |  ;        DATE = Procedure date in FileMan format
 | 
|---|
| 72 |  ;        TYPE = Procedure name (from FILE 790.2)
 | 
|---|
| 73 |  ; DX Category = Normal, Abnormal or Pending
 | 
|---|
| 74 |  ;   DX Result = FILE 790.31, Field .01
 | 
|---|
| 75 |  ;RAD/LAB LINK = 0=no link to rad/lab entry, 1=link to rad/lab entry
 | 
|---|
| 76 |  ;      Status = File 790.1 procedure status ('OPEN' or 'CLOSED')
 | 
|---|
| 77 |  ;
 | 
|---|
| 78 |  I '$G(WVDFN) D  Q
 | 
|---|
| 79 |  .S RESULT(0)="-1^Patient DFN is not numeric or undefined."
 | 
|---|
| 80 |  .Q 
 | 
|---|
| 81 |  I $G(WVPTYPE)="" D  Q
 | 
|---|
| 82 |  .S RESULT(0)="-1^Procedure type not identified."
 | 
|---|
| 83 |  .Q
 | 
|---|
| 84 |  I '$D(^WV(790.1,"C",WVDFN)) D  Q
 | 
|---|
| 85 |  .S RESULT(0)="-1^No procedures found for this patient"
 | 
|---|
| 86 |  .Q
 | 
|---|
| 87 |  N WVCOUNT,WVEND,WVIEN,WVLOOP,WVMANUAL,WVNODE,WVNODE1,WVNORM,WVOUT,WVRD
 | 
|---|
| 88 |  N WVRESULT,WVSTART,WVSTATUS,WVTYPE,WVYES
 | 
|---|
| 89 |  S (WVCOUNT,WVLOOP,WVOUT)=0
 | 
|---|
| 90 |  S:'$D(WVDATES) WVDATES="^"
 | 
|---|
| 91 |  S WVSTART=$P(WVDATES,U,1) ;search start date
 | 
|---|
| 92 |  S:WVSTART="" WVSTART=$$FMADD^XLFDT(DT,-1095)
 | 
|---|
| 93 |  S WVEND=$P(WVDATES,U,2) ;search end date
 | 
|---|
| 94 |  S:WVEND="" WVEND=DT
 | 
|---|
| 95 |  S:+$G(WVMAX)'>0 WVMAX=10
 | 
|---|
| 96 |  S:$G(WVDX)="" WVDX="*"
 | 
|---|
| 97 |  S WVLOOP=WVEND+.000001
 | 
|---|
| 98 |  F  S WVLOOP=$O(^WV(790.1,"AC",WVDFN,WVLOOP),-1) Q:'WVLOOP!(WVSTART>WVLOOP)!(WVOUT=1)  D
 | 
|---|
| 99 |  .S WVIEN=0
 | 
|---|
| 100 |  .F  S WVIEN=$O(^WV(790.1,"AC",WVDFN,WVLOOP,WVIEN)) Q:'WVIEN!(WVOUT=1)  D
 | 
|---|
| 101 |  ..S WVNODE=$G(^WV(790.1,+WVIEN,0))
 | 
|---|
| 102 |  ..Q:WVNODE=""
 | 
|---|
| 103 |  ..I $P(WVNODE,U,5)=$$ERROR^WVRPCPR1() Q  ;error/disregard diagnosis 
 | 
|---|
| 104 |  ..;check procedure types
 | 
|---|
| 105 |  ..S WVYES=0
 | 
|---|
| 106 |  ..I WVPTYPE="P",$E($P(WVNODE,U,1),1,2)="PS" S WVYES=1
 | 
|---|
| 107 |  ..I WVPTYPE="M",$E($P(WVNODE,U,1),1,2)="MB" S WVYES=1
 | 
|---|
| 108 |  ..I WVPTYPE="M",$E($P(WVNODE,U,1),1,2)="MU" S WVYES=1
 | 
|---|
| 109 |  ..I WVPTYPE="M",$E($P(WVNODE,U,1),1,2)="MS" S WVYES=1
 | 
|---|
| 110 |  ..I WVPTYPE="U",$E($P(WVNODE,U,1),1,2)="BU" S WVYES=1
 | 
|---|
| 111 |  ..Q:'WVYES
 | 
|---|
| 112 |  ..;check result/dx value
 | 
|---|
| 113 |  ..S WVYES=0
 | 
|---|
| 114 |  ..S WVNORM=$$NORMAL^WVRPCPR1($P(WVNODE,U,5)) ;is dx normal/abnormal?
 | 
|---|
| 115 |  ..I WVDX="N",WVNORM=0 S WVYES=1
 | 
|---|
| 116 |  ..I WVDX="A",WVNORM=1 S WVYES=1
 | 
|---|
| 117 |  ..I WVDX="P",WVNORM=2 S WVYES=1
 | 
|---|
| 118 |  ..I WVDX="P",$P(WVNODE,U,5)="" S WVYES=1 ;treat 'NO RESULT' & null alike
 | 
|---|
| 119 |  ..I WVDX="*" S WVYES=1
 | 
|---|
| 120 |  ..Q:'WVYES
 | 
|---|
| 121 |  ..I WVCOUNT=WVMAX S WVOUT=1 Q  ;max # reached, stop looking
 | 
|---|
| 122 |  ..S WVCOUNT=WVCOUNT+1
 | 
|---|
| 123 |  ..S WVSTATUS=$P(WVNODE,U,14)
 | 
|---|
| 124 |  ..S WVSTATUS=$S(WVSTATUS="o":"OPEN",WVSTATUS="c":"CLOSED",1:"OPEN")
 | 
|---|
| 125 |  ..S WVTYPE=$$TYPENAME(+$P(WVNODE,U,4))
 | 
|---|
| 126 |  ..S WVRESULT=$$DXNAME^WVRPCPR1($P(WVNODE,U,5))
 | 
|---|
| 127 |  ..S WVNORM=$S(WVNORM=0:"Normal",WVNORM=1:"Abnormal",WVNORM=2:"Unsatisfactory",1:"Pending")
 | 
|---|
| 128 |  ..S WVMANUAL=0 ;0=no link to rad/lab entry, 1=link to rad/lab entry
 | 
|---|
| 129 |  ..I $P($G(^WV(790.1,WVIEN,2)),U,17)]""!($P(WVNODE,U,15)]"") S WVMANUAL=1
 | 
|---|
| 130 |  ..;WVNODE1=IEN^DFN^DATE^TYPE^Dx Category^DX Result^Manual
 | 
|---|
| 131 |  ..S WVNODE1=WVIEN_U_$P(WVNODE,U,2)_U_$P(WVNODE,U,12)_U_WVTYPE_U_WVNORM_U_WVRESULT_U_WVMANUAL_U_WVSTATUS
 | 
|---|
| 132 |  ..S RESULT(WVCOUNT)=WVNODE1
 | 
|---|
| 133 |  ..Q
 | 
|---|
| 134 |  .Q
 | 
|---|
| 135 |  I WVCOUNT=0 S RESULT(0)="-1^No records matched."
 | 
|---|
| 136 |  I WVCOUNT>0 S RESULT(0)=WVCOUNT_U
 | 
|---|
| 137 |  Q
 | 
|---|
| 138 | SETRESLT(WVIEN,WVRESULT) ; Update the RESULTS/DIAGNOSIS field (.05)
 | 
|---|
| 139 |  ; for the WV PROCEDURE file (#790.1) record identified by WVIEN. 
 | 
|---|
| 140 |  ; Input:    WVIEN - FILE 790.1 IEN
 | 
|---|
| 141 |  ;        WVRESULT - FILE 790.31 IEN
 | 
|---|
| 142 |  ;
 | 
|---|
| 143 |  ; Output: <none>
 | 
|---|
| 144 |  ;
 | 
|---|
| 145 |  N WVERR,WVDXFLAG,WVFAC,WVFDA
 | 
|---|
| 146 |  I $G(WVIEN)'>0 Q
 | 
|---|
| 147 |  D UPDATE^WVALERTS(WVIEN) ;mark procedure as processed by CR
 | 
|---|
| 148 |  I $G(WVRESULT)'>0 Q
 | 
|---|
| 149 |  ; Check 'update results/dx?' parameter
 | 
|---|
| 150 |  S WVFAC=+$P($G(^WV(790.1,+WVIEN,0)),U,10)
 | 
|---|
| 151 |  S WVDXFLAG=$P($G(^WV(790.02,+WVFAC,0)),U,11)
 | 
|---|
| 152 |  Q:'WVDXFLAG
 | 
|---|
| 153 |  S WVFDA(790.1,WVIEN_",",.05)=WVRESULT
 | 
|---|
| 154 |  S WVFDA(790.1,WVIEN_",",.14)="c"
 | 
|---|
| 155 |  D FILE^DIE("","WVFDA","WVERR")
 | 
|---|
| 156 |  Q
 | 
|---|