[613] | 1 | WVLABCHK ;HIOFO/FT-IS LAB TEST A PAP SMEAR? ;10/25/04 10:23
|
---|
| 2 | ;;1.0;WOMEN'S HEALTH;**16,23**;Sep 30, 1998;Build 5
|
---|
| 3 | ;
|
---|
| 4 | ; This routine uses the following IAs:
|
---|
| 5 | ; #525 - ^LR references (controlled)
|
---|
| 6 | ; #4298 - ^LR references (private)
|
---|
| 7 | ; #10103 - ^XLFDT calls (supported)
|
---|
| 8 | ; #10063 - ^%ZTLOAD (supported)
|
---|
| 9 | ; #10141 - ^XPDUTL (supported)
|
---|
| 10 | ; #10035 - ^DPT (supported)
|
---|
| 11 | ;
|
---|
| 12 | ; This routine supports the following IAs:
|
---|
| 13 | ; CREATE - 4525
|
---|
| 14 | ;
|
---|
| 15 | CREATE(DFN,LRDFN,LRI,LRA,LRSS) ;
|
---|
| 16 | ; Add lab test to WH file (#790.08).
|
---|
| 17 | ; Called by REPORT RELEASE DATE/TIME field in:
|
---|
| 18 | ; a) File 63, Field 63.08,.11
|
---|
| 19 | ; b) File 63, Field 63.09,.11
|
---|
| 20 | ; Input: DFN = PATIENT DFN
|
---|
| 21 | ; LRDFN = FILE 63 IEN (+^DPT(DFN,"LR"))
|
---|
| 22 | ; LRI = INVERSE DATE/TIME OF TEST
|
---|
| 23 | ; LRA = ZERO NODE OF THE CY or SP ENTRY
|
---|
| 24 | ; LRSS = File 63 subscript (e.g., CY or SP)
|
---|
| 25 | ;
|
---|
| 26 | Q:($G(DFN)']"")!($G(LRDFN)']"")!($G(LRI)']"")!($G(LRA)']"")!($G(LRSS)']"")
|
---|
| 27 | Q:'$D(^WV(790.02,DUZ(2))) ;no site parameter entry
|
---|
| 28 | Q:'$P($G(^WV(790.02,+$G(DUZ(2)),0)),U,24) ;lab link is NO or null
|
---|
| 29 | N ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE
|
---|
| 30 | S ZTRTN="CREATEQ^WVLABCHK",ZTDESC="WV CHECK SNOMED CODE CHANGES"
|
---|
| 31 | S ZTSAVE("DFN")="",ZTSAVE("LRDFN")="",ZTSAVE("LRI")="",ZTSAVE("LRA")=""
|
---|
| 32 | S ZTSAVE("LRSS")="",ZTIO=""
|
---|
| 33 | S ZTDTH=$$HADD^XLFDT($H,"","","",150) ;don't want the SNOMED trigger to
|
---|
| 34 | ; conflict with the report verification trigger
|
---|
| 35 | D ^%ZTLOAD
|
---|
| 36 | Q
|
---|
| 37 | CREATEQ ; Called from CREATE above
|
---|
| 38 | I $D(ZTQUEUED) S ZTREQ="@"
|
---|
| 39 | N WVDATE,WVDFN,WVDUZ2,WVIEN,WVLABAN,WVLOC,WVLRDFN,WVLRI,WVLRSS,WVNODE,WVPAP,WVPIEN,WVPROV,WVTOP,X,Y
|
---|
| 40 | Q:$P($G(^DPT(DFN,0)),U,2)'="F" ;not female
|
---|
| 41 | S WVLABAN=$P(LRA,U,6) ;lab accession#
|
---|
| 42 | Q:$D(^WV(790.1,"F",WVLABAN)) ;already tracked
|
---|
| 43 | ; check WH site parameters
|
---|
| 44 | Q:'$D(^WV(790.02,DUZ(2))) ;no site parameter entry
|
---|
| 45 | Q:'$P($G(^WV(790.02,+$G(DUZ(2)),0)),U,24) ;lab link is NO or null
|
---|
| 46 | Q:'$$VNVEC^WVLRLINK() ;vet/non-vet/eligibility code check
|
---|
| 47 | D CODES ;what SNOMED codes are we looking for?
|
---|
| 48 | I WVTOP(0)=0 Q ;no SNOMED codes identified
|
---|
| 49 | S WVPIEN=$$PAPIEN^WVRPCPR()
|
---|
| 50 | Q:'WVPIEN
|
---|
| 51 | S WVIEN=$O(^WV(790.08,"B",WVLABAN,0))
|
---|
| 52 | Q:'WVIEN
|
---|
| 53 | S WVNODE=$G(^WV(790.08,WVIEN,0))
|
---|
| 54 | Q:WVNODE=""
|
---|
| 55 | S WVLRDFN=$P(WVNODE,U,36)
|
---|
| 56 | Q:'WVLRDFN
|
---|
| 57 | S WVLRI=$P(WVNODE,U,37)
|
---|
| 58 | Q:'WVLRI
|
---|
| 59 | S WVLRSS=$P(WVNODE,U,38)
|
---|
| 60 | S WVDFN=$P(WVNODE,U,2)
|
---|
| 61 | S WVPROV=$P(WVNODE,U,7)
|
---|
| 62 | S WVLOC=$P(WVNODE,U,11)
|
---|
| 63 | S WVDATE=$P(WVNODE,U,12)
|
---|
| 64 | S WVLABAN=$P(WVNODE,U,1)
|
---|
| 65 | S WVDUZ2=$P(WVNODE,U,10)
|
---|
| 66 | I WVLRSS="CY" D Q
|
---|
| 67 | .S WVPAP=$$CY()
|
---|
| 68 | .D:WVPAP ADD
|
---|
| 69 | .Q
|
---|
| 70 | I WVLRSS="SP" D Q
|
---|
| 71 | .S WVPAP=$$SP()
|
---|
| 72 | .D:WVPAP ADD
|
---|
| 73 | .Q
|
---|
| 74 | Q
|
---|
| 75 | ;
|
---|
| 76 | CODES ; WVTOP array identifies SNOMED codes (IENS) used for pap smears
|
---|
| 77 | N WVPIEN,WVPIEN1,WVSNOMED
|
---|
| 78 | S WVTOP(0)=0
|
---|
| 79 | S WVPIEN=$$PAPIEN^WVRPCPR()
|
---|
| 80 | I 'WVPIEN Q ;pap smear procedure not identified
|
---|
| 81 | S WVPIEN1=0
|
---|
| 82 | F S WVPIEN1=$O(^WV(790.2,WVPIEN,2,WVPIEN1)) Q:'WVPIEN1 D
|
---|
| 83 | .S WVSNOMED=$P($G(^WV(790.2,WVPIEN,2,WVPIEN1,0)),U,1)
|
---|
| 84 | .Q:'WVSNOMED
|
---|
| 85 | .S WVTOP(0)=WVTOP(0)+1
|
---|
| 86 | .S WVTOP(WVSNOMED)=""
|
---|
| 87 | .Q
|
---|
| 88 | Q
|
---|
| 89 | CY() ; Check SNOMED codes used by cytology entry
|
---|
| 90 | N WVFLAG,WVLOOP,WVSNOMED
|
---|
| 91 | S (WVFLAG,WVLOOP)=0
|
---|
| 92 | ; check topography multiple
|
---|
| 93 | F S WVLOOP=$O(^LR(WVLRDFN,"CY",WVLRI,2,WVLOOP)) Q:'WVLOOP!(WVFLAG=1) D
|
---|
| 94 | .S WVSNOMED=+$P($G(^LR(WVLRDFN,"CY",WVLRI,2,WVLOOP,0)),U,1)
|
---|
| 95 | .Q:'WVSNOMED
|
---|
| 96 | .I $D(WVTOP(WVSNOMED)) S WVFLAG=1
|
---|
| 97 | .Q
|
---|
| 98 | Q WVFLAG
|
---|
| 99 | ;
|
---|
| 100 | SP() ; Check SNOMED codes used by surgical pathology entry
|
---|
| 101 | N WVFLAG,WVLOOP,WVSNOMED
|
---|
| 102 | ; check topography multiple
|
---|
| 103 | S (WVFLAG,WVLOOP)=0
|
---|
| 104 | F S WVLOOP=$O(^LR(WVLRDFN,"SP",WVLRI,2,WVLOOP)) Q:'WVLOOP!(WVFLAG=1) D
|
---|
| 105 | .S WVSNOMED=+$P($G(^LR(WVLRDFN,"SP",WVLRI,2,WVLOOP,0)),U,1)
|
---|
| 106 | .Q:'WVSNOMED
|
---|
| 107 | .I $D(WVTOP(WVSNOMED)) S WVFLAG=1
|
---|
| 108 | .Q
|
---|
| 109 | Q WVFLAG
|
---|
| 110 | ;
|
---|
| 111 | ADD ; Add pap smear to FILE 790.1
|
---|
| 112 | N WVDR,WVERR
|
---|
| 113 | S WVERR=0
|
---|
| 114 | I '$D(^WV(790,WVDFN,0)) D ;add patient to File 790, if not there
|
---|
| 115 | .D AUTOADD^WVPATE(WVDFN,WVDUZ2,.WVERR)
|
---|
| 116 | .Q
|
---|
| 117 | Q:WVERR<0 ;quit if new patient could not be added to File 790
|
---|
| 118 | S WVDR=".02////"_WVDFN
|
---|
| 119 | S WVDR=WVDR_";.04////"_WVPIEN ;File 790.2 pointer
|
---|
| 120 | S:WVPROV]"" WVDR=WVDR_";.07////"_WVPROV ;provider
|
---|
| 121 | S WVDR=WVDR_";.1////"_WVDUZ2 ;health care facility
|
---|
| 122 | S:WVLOC]"" WVDR=WVDR_";.11////"_WVLOC ;patient location
|
---|
| 123 | S WVDR=WVDR_";.12////"_WVDATE ;procedure date/time
|
---|
| 124 | S WVDR=WVDR_";.14////"_"o" ;status
|
---|
| 125 | S WVDR=WVDR_";.18////.5;.19////"_DT ;entering user and date
|
---|
| 126 | S WVDR=WVDR_";.34////"_WVDUZ2 ;accessioning facility
|
---|
| 127 | S WVDR=WVDR_";2.17////"_WVLABAN ;lab accession#
|
---|
| 128 | S WVDR=WVDR_";2.18////"_WVLRDFN ;Lab Data file (#63) pointer
|
---|
| 129 | S WVDR=WVDR_";2.19////"_WVLRI ;Lab Data file inverse d/t
|
---|
| 130 | S WVDR=WVDR_";2.2////"_WVLRSS ;Lab Data file subscript (CY/SP)
|
---|
| 131 | ; add procedure to File 790.1
|
---|
| 132 | D NEW2^WVPROC(WVDFN,WVPIEN,WVDATE,WVDR,"","",.WVERR)
|
---|
| 133 | Q:'Y
|
---|
| 134 | I $$PATCH^XPDUTL("OR*3.0*210") D
|
---|
| 135 | .D CPRS^WVSNOMED(70,WVDFN,"",WVPROV,"Pap Smear results available.",WVLRSS_U_WVLABAN_U_WVLRI)
|
---|
| 136 | .D DELETE^WVLABADD(WVIEN)
|
---|
| 137 | .Q
|
---|
| 138 | Q
|
---|