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

WVEXPTRA.m

Go to the documentation of this file.
  1. WVEXPTRA ;HCIOFO/FT-EXPORT MAMS & ULTRASOUNDS TO WOMEN'S HEALTH ;04/15/2021
  1. ;;1.0;WOMEN'S HEALTH;**3,5,7,10,26**;Sep 30, 1998;Build 624
  1. ;; Original routine created by IHS/ANMC/MWR
  1. ;;* MICHAEL REMILLARD, DDS * ALASKA NATIVE MEDICAL CENTER *
  1. ;---> WVNEWP = TOTAL NEW WOMEN'S HEALTH PATIENTS ADDED.
  1. ;---> WVMAM = TOTAL NEW MAMMOGRAMS PROCEDURES ADDED.
  1. ;
  1. EN1 ;
  1. S WVPOP=0,WVEC=""
  1. D CHECK I WVPOP D KILL Q ;check if site parameter entry exists
  1. D DESC ;describe option
  1. D DTRNG I WVPOP D KILL Q ;get date range
  1. D STATUS I WVPOP D KILL Q ;select status of procedure
  1. D EC^WVGETAL1 I WVPOP D KILL Q ;veterans/non-vets/eligibility code
  1. D QUEUE ;queue a background job
  1. D KILL
  1. Q
  1. EN2 ;
  1. D CPTS ;get procedure pointers
  1. D GET ;get RAD/NM data & store in WH
  1. D MAIL ;send mail message to user
  1. D KILL ;kill variables
  1. Q
  1. DESC ; Describe option
  1. W @IOF
  1. W !,"This option searches the Radiology/Nuclear Medicine database for"
  1. W !,"all female patients who had a mammogram, breast ultrasound, pelvic"
  1. W !,"ultrasound or vaginal ultrasound exam during the date range you select."
  1. W !,"These procedures and patients will be added to the WH database if"
  1. W !,"not already there.",!
  1. W !,"This job will be queued as a background task so as to free up your"
  1. W !,"terminal to do other work. You will receive a mail message when"
  1. W !,"the job is done. The mail message will contain a count of the"
  1. W !,"number of procedures and patients added.",!!
  1. Q
  1. CHECK ; Check if DUZ(2) exists for user, if entry exists in site parameter
  1. ; file, if case manager, and if File 70 exists.
  1. D CHECK^WVLOGO
  1. I '$G(DUZ(2))!('$D(^WV(790.02,+DUZ(2),0))) S WVPOP=1
  1. I '$P($G(^WV(790.02,+$G(DUZ(2)),0)),U,2) D
  1. .D NODCM^WVUTL9
  1. .S WVPOP=1
  1. .Q
  1. I '$D(^RADPT) W !,"There is no Radiology/Nuclear Medicine Patient file (#70)",! S WVPOP=1
  1. Q
  1. DTRNG ; prompt for date range, go back three years maximum
  1. S WVSTDT=DT-30000,WVSTDT=$$DATECHK(WVSTDT)
  1. K DIR S DIR(0)="DA^"_WVSTDT_":"_DT
  1. S DIR("A")="Enter START DATE: "
  1. S DIR("?")="Enter the earliest date of the mammograms/ultrasounds you wish to retrieve. You can begin your search at "_$$FMTE^XLFDT(WVSTDT,"D")_"."
  1. D ^DIR K DIR
  1. I $D(DIRUT) S WVPOP=1 Q
  1. S WVSTDT=Y
  1. S DIR(0)="DA^"_WVSTDT_":"_DT
  1. S DIR("A")="Enter END DATE: ",DIR("B")=$$FMTE^XLFDT(DT,"D")
  1. S DIR("?")="Enter the most recent date of the mammograms/ultrasounds you wish to retrieve."
  1. D ^DIR K DIR
  1. I $D(DIRUT) S WVPOP=1 Q
  1. S WVENDT=Y
  1. Q
  1. DATECHK(WVDATE) ; Check if WVDATE is a valid date. Substract 1 day until a
  1. ; valid date in WVDATE and return same.
  1. N %DT,WVLOOP,X,Y
  1. S Y=0
  1. F WVLOOP=1:1 Q:Y>0 D
  1. .S X=WVDATE,%DT=""
  1. .D ^%DT
  1. .Q:Y>0 ;valid date - stop checking
  1. .S WVDATE=$$FMADD^XLFDT(WVDATE,-1)
  1. .Q
  1. Q WVDATE
  1. ;
  1. STATUS ; Select default status for procedures
  1. K DIR
  1. S DIR(0)="S^o:OPEN;c:CLOSED",DIR("A")="Select STATUS OF IMPORTED MAMMOGRAMS"
  1. S DIR("?")="Enter 'O' to give a Status of OPEN to Mammograms imported from the Radiology Software into the Women's Health database. Enter 'C' to give a Status of CLOSED to imported Mammograms."
  1. D ^DIR K DIR
  1. I $D(DIRUT) S WVPOP=1
  1. S WVSTATUS=Y
  1. Q
  1. QUEUE ; Task as background job
  1. S ZTIO="",ZTDESC="WH GRAB RAD/NM DATA",ZTRTN="EN2^WVEXPTRA"
  1. S ZTDTH=$H,WVPOP=1
  1. S ZTSAVE("WVENDT")="",ZTSAVE("WVSTDT")="",ZTSAVE("WVSTATUS")=""
  1. S ZTSAVE("WVEC(")=""
  1. D ^%ZTLOAD
  1. Q
  1. CPTS ; Loop through File 71 to get procedure pointers for the CPTs we
  1. ; are interested in.
  1. N WVPROC,WVCPTS S WVIEN=0 K WVARRAY
  1. D GETCPTS(.WVCPTS)
  1. F S WVIEN=$O(^RAMIS(71,WVIEN)) Q:'WVIEN D
  1. .S WVCPT=$$GET1^DIQ(71,WVIEN,9,"I") ;CPT code
  1. .Q:WVCPT=""
  1. .S WVPROC=0
  1. .S WVPROC=$O(^WV(790.2,"AC",WVCPT,WVPROC))
  1. .I 'WVPROC D
  1. ..S WVPROC=+$G(WVCPTS("CPT",WVCPT)) I WVPROC>0 Q
  1. ..S WVPROC=+$G(WVCPTS("RAD",WVIEN))
  1. .Q:'WVPROC
  1. .Q:$P($G(^WV(790.2,+WVPROC,0)),U,5)'="R"
  1. .S WVARRAY(WVIEN)=""
  1. Q
  1. ;
  1. GETCPTS(WVCPTS) ;
  1. N CODE,CODES,ERROR,RAD,TERMIEN,WVPROC,WVTERM
  1. S TERMIEN=0 F S TERMIEN=$O(^WV(790.2,"RT",TERMIEN)) Q:TERMIEN'>0 D
  1. .K CODES
  1. .D GETTRMCD^PXRMPRAD(TERMIEN,.CODES,.WVTERM,.ERROR)
  1. .S WVPROC=$O(^WV(790.2,"RT",TERMIEN,""))
  1. .S CODE="" F S CODE=$O(CODES(CODE)) Q:CODE="" D
  1. ..S WVCPTS("CPT",CODE)=WVPROC
  1. .S RAD="" F S RAD=$O(WVTERM("E","RAMIS(71,",RAD)) Q:RAD="" D
  1. ..S WVCPTS("RAD",RAD)=WVPROC
  1. Q
  1. ;
  1. GET ; get mammograms and ultrasounds from RAD/NM database
  1. ;---> WVMCNT = total new procedures added.
  1. ;---> WVNEWP = total new patients added.
  1. N WVRPTSTA
  1. S (WVMCNT,WVNEWP)=0
  1. Q:'$D(WVARRAY) ;no mammogram or ultrasound procedures in File 71
  1. S WVENDT=WVENDT\1,WVENDT=9999999-WVENDT ;inverse end date
  1. S WVSTDT=WVSTDT\1,WVSTDT=9999999-WVSTDT ;inverse start date
  1. S WVSTDT=WVSTDT_".9999"
  1. S WVDFN=0 ;patient dfn
  1. F S WVDFN=$O(^RADPT(WVDFN)) Q:'WVDFN D ;RAD/NM patient file
  1. .Q:$P($G(^DPT(WVDFN,0)),U,2)'="F" ;not female
  1. .Q:'$$VECCHK^WVGETAL1(WVDFN) ;failed vet/non-vet/eligibility code check
  1. .S WVDTI=WVENDT ;Because the exam date is inverse the end date will
  1. .; will be the lower value.
  1. .F S WVDTI=$O(^RADPT(WVDFN,"DT",WVDTI)) Q:'WVDTI!(WVDTI>WVSTDT) D
  1. ..S WVCNI=0 ;case number
  1. ..F S WVCNI=$O(^RADPT(WVDFN,"DT",WVDTI,"P",WVCNI)) Q:'WVCNI D
  1. ...S WVNODE=$G(^RADPT(WVDFN,"DT",WVDTI,"P",WVCNI,0))
  1. ...Q:WVNODE=""
  1. ...S WVPROC=$P(WVNODE,U,2) ;procedure pointer
  1. ...Q:'WVPROC ;no pointer to File 71 (no procedure)
  1. ...Q:'$D(WVARRAY(WVPROC)) ;not a WH-related procedure
  1. ...S WVRPT=$P(WVNODE,U,17) ;report pointer
  1. ...Q:'WVRPT ;no pointer to File 74 (no report)
  1. ...S WVRPTSTA=$$GET1^DIQ(74,WVRPT,5,"I")
  1. ...I WVRPTSTA'="V"&(WVRPTSTA'="EE") Q ;report status, must be VERIFIED or ELECTRIONALLY ENTER
  1. ...D CREATEH^WVRALINK(WVDFN,WVDTI,WVCNI,WVSTATUS)
  1. ...Q
  1. ..Q
  1. .Q
  1. Q
  1. MAIL ; send mail message to user with counts of procedures & patients added
  1. N WVMSG,XMSUB,XMTEXT,XMY
  1. S XMDUZ=.5 ;message sender
  1. S XMY(DUZ)="" ;person who ran option
  1. S XMSUB="Export of RAD/NM procedures to WH is done"
  1. S WVMSG(1)=" # of New patients added to Women's Health package: "_WVNEWP
  1. S WVMSG(2)="# of New procedures added to Women's Health package: "_WVMCNT
  1. I '$D(WVARRAY) D
  1. .S WVMSG(3)=" "
  1. .S WVMSG(4)="There are no mammogram or ultrasound procedures listed in your"
  1. .S WVMSG(5)="Radiology/Nuclear Medicine package."
  1. .Q
  1. S XMTEXT="WVMSG("
  1. D ^XMD
  1. I $D(ZTQUEUED) S ZTREQ="@"
  1. Q
  1. KILL ;
  1. K DIR,DIROUT,DIRUT,DTOUT,DUOUT
  1. K WVARRAY,WVCNI,WVCPT,WVDFN,WVDTI,WVEC,WVENDT,WVIEN,WVMCNT,WVNEWP,WVNODE,WVPOP,WVPROC,WVRPT,WVSTATUS,WVSTDT
  1. K X,Y,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTSK
  1. Q
  1. ;