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

BWMPEXP.m

Go to the documentation of this file.
  1. BWMPEXP ;IHS/CIA/PLS - Mammography Project Export ;01-Oct-2003 16:55;PLS
  1. ;;2.0;WOMEN'S HEALTH;**9**;16-Apr-2003 13:01
  1. ;=================================================================
  1. EN ;
  1. N Y,BWBEGDT,BWENDDT,BWPOP,BWSTYLE,BWPATH,BWFILE,BWSPN
  1. N PCNT
  1. S BWSTYLE=""
  1. D TITLE^BWUTL5("Export Mammography Project Data")
  1. D ASK
  1. Q:BWPOP
  1. S BWPATH=$P($G(^BWSITE($G(DUZ(2)),0)),U,14)
  1. S BWFILE=$P($G(^BWSITE($G(DUZ(2)),0)),U,13)_"mp"_$$DATE_"."_$S(BWSTYLE="X":"xml",1:"txt")
  1. S BWPOP=$$OPEN^%ZISH(BWPATH,BWFILE,"W")
  1. I 'BWPOP D
  1. .D CLOSE^%ZISH()
  1. E D
  1. .D HFSERR S BWPOP=1
  1. I 'BWPOP D
  1. .W !!,"Working... "
  1. .D LOOP(44,BWBEGDT,BWENDDT,BWSTYLE="X") ; 44=Mammography Project Procedure Type
  1. .S Y=$$GTF^%ZISH($NA(^TMP($J,"BWMP",1)),3,BWPATH,BWFILE)
  1. .I Y D
  1. ..W !!,"Number of Procedures exported: "_+$G(PCNT)
  1. ..W !!,"The export data has been successfully saved."
  1. ..W !,"The '"_BWFILE_"' file was saved in the '"_BWPATH_"' folder."
  1. E D
  1. .D HFSERR S BWPOP=1
  1. Q
  1. ; Collect report qualifiers
  1. ASK ;
  1. N DIRUT,DIR
  1. D DATEINFO
  1. D ASKDATES^BWUTL3(.BWBEGDT,.BWENDDT,.BWPOP)
  1. I 'BWPOP D
  1. .K DIR
  1. .S DIR(0)="S^F:Fixed Length Fields;X:XML"
  1. .S DIR("A")="Which Style"
  1. .D ^DIR
  1. .I $D(DIRUT) S BWPOP=1
  1. .E S BWSTYLE=Y
  1. Q
  1. LOOP(BWPTYP,BWBEGDT,BWENDDT,XML) ;
  1. N BWDT,BWIEN,BWMPARY,CNT,BWENDT,BW0
  1. ; Build array of active fields
  1. K ^TMP($J,"BWMP")
  1. D BLDARY(.BWMPARY)
  1. S XML=$G(XML,0)
  1. I XML D
  1. .D ADD("<?xml version=""1.0"" encoding=""utf-8"" ?>")
  1. .D ADD("<Procedures>")
  1. .D ADD("<ExportDateRange>"_$$FMTE^XLFDT(BWBEGDT)_" to "_$$FMTE^XLFDT(BWENDDT)_"</ExportDateRange>")
  1. S BWDT=BWBEGDT-.00001,BWENDT=BWENDDT+.99999
  1. F S BWDT=$O(^BWPCD("D",BWDT)) Q:'BWDT!(BWDT>BWENDT) D
  1. .S BWIEN=0
  1. .F S BWIEN=$O(^BWPCD("D",BWDT,BWIEN)) Q:'BWIEN D
  1. ..I '$D(^BWPCD(BWIEN,0)) K ^BWPCD("D",BWDT,BWIEN)
  1. ..S BW0=$G(^BWPCD(BWIEN,0))
  1. ..Q:$P($G(^BWPCD(BWIEN,0)),U,4)'=BWPTYP
  1. ..D PROC(BWIEN,XML)
  1. D:XML ADD("</Procedures>")
  1. Q
  1. ; Loop thru the field array for a given procedure ien
  1. ; Input: IEN - Procedure IEN
  1. ; XML - Flag indicating output style
  1. ; 0 - fixed length string per record
  1. ; 1 - XML record format
  1. PROC(IEN,XML) ;
  1. N BWMMP,LBLNM,OUT,COL,LEN,BWMMP0
  1. S BWMMP=0
  1. ;I $$WORKING(.BWSPN)
  1. S PCNT=+$G(PCNT)+1
  1. I 'XML D
  1. .F S BWMMP=$O(BWMPARY(BWMMP)) Q:'BWMMP D
  1. ..;D ADD($$LBLNM(BWMPARY(BWMMP))_" = "_$$DATA(IEN,(BWMPARY(BWMMP))))
  1. ..S BWMMP0=$G(^BWMPEXP(BWMPARY(BWMMP),0))
  1. ..S COL=$P($P(BWMMP0,U,2),","),LEN=$P($P(BWMMP0,U,2),",",2)
  1. ..S $E(OUT,COL,COL+LEN)=$$DATA(IEN,BWMPARY(BWMMP))
  1. .D ADD(OUT)
  1. E D
  1. .D ADD(" <Procedure>")
  1. .F S BWMMP=$O(BWMPARY(BWMMP)) Q:'BWMMP D
  1. ..S LBLNM=$$LBLNM(BWMPARY(BWMMP),1)
  1. ..D ADD(" <"_LBLNM_">"_$$DATA(IEN,(BWMPARY(BWMMP)))_"</"_LBLNM_">")
  1. .D ADD(" </Procedure>")
  1. Q
  1. DATA(PIEN,BWMMP) ;
  1. N BWMMP0,FILE,FLD,FMT,VAL,FMTJ,FMTJ1,PAD,FMTD
  1. N EXT,PGM
  1. S BWMMP0=$G(^BWMPEXP(BWMMP,0))
  1. S FILE=$P($P(BWMMP0,U,4),",")
  1. S FLD=$P($P(BWMMP0,U,4),",",2)
  1. S LEN=$P($P(BWMMP0,U,2),",",2)
  1. S FMT=$P(BWMMP0,U,5)
  1. S VAL=""
  1. S VAL=$$GET1^DIQ(FILE,PIEN,FLD,$S(FMT["I":"I",1:"E"))
  1. I $F(FMT,"Z")>0 D
  1. .X:$L($G(^BWMPEXP(BWMMP,1))) ^BWMPEXP(BWMMP,1)
  1. I $F(FMT,"J")>0 D
  1. .S FMTJ=$F(FMT,"J"),FMTJ=$E(FMT,FMTJ,FMTJ+1),FMTJ1=$E(FMTJ,1)
  1. .S PAD=$E(FMTJ,2)
  1. .S PGM="VAL="_$S(FMTJ1="C":"$$CJ^XLFSTR(VAL,LEN,PAD)",FMTJ1="R":"$$RJ^XLFSTR(VAL,LEN,PAD)",FMTJ1="L":"$$LJ^XLFSTR(VAL,LEN,PAD)",1:"")
  1. .S:$L(PGM)>4 @PGM
  1. ; Check for Date format
  1. I $F(FMT,"D")>0 D
  1. .S FMTD=$E(FMT,$F(FMT,"D"))
  1. .S VAL=$TR($$FMTE^XLFDT(VAL,$S(FMTD=2:"7",1:"5")_"Z"),"/","")
  1. .S:FMTD=3 VAL=$E(VAL,1,2)_$E(VAL,5,8)
  1. Q $E(VAL,1,LEN)
  1. ; Return array containing active export fields
  1. BLDARY(ARY) ;
  1. N IEN,ORDN
  1. S IEN=0
  1. F S IEN=$O(^BWMPEXP(IEN)) Q:'IEN D
  1. .S ORDN=+$P($G(^BWMPEXP(IEN,0)),U,3)
  1. .S:ORDN>0 ARY(ORDN)=IEN
  1. Q
  1. ; Return label name for data field
  1. ; Input: BWMMP - IEN of BW MAMMOGRAPHY EXPORT DEFINITIONS (9002086.26)
  1. ; STRIP - 0: do nothing, 1: strip spaces
  1. LBLNM(BWMMP,STRIP) ;
  1. N LBLNAME
  1. S STRIP=$G(STRIP,0)
  1. S LBLNAME=$$GET1^DIQ(9002086.26,BWMMP,.06,"E")
  1. S:LBLNAME="" LBLNAME=$$GET1^DIQ(9002086.26,BWMMP,.01,"E")
  1. Q $S(STRIP:$$STRIP(LBLNAME),1:LBLNAME)
  1. ; Return flag indicating given race is defined for patient
  1. ; Input: PIEN - Procedure IEN
  1. ; RIEN - IEN to BW RACE File (9002086.34) or array of iens
  1. RACE(PIEN,RIEN) ;
  1. N RARY,FLG,LP,RACE,I,BWDFN,PRIEN
  1. S BWDFN=+$P($G(^BWPCD(PIEN,0)),U,2)
  1. Q:'BWDFN 0
  1. S I=0 F S I=$O(^BWP(BWDFN,2,I)) Q:'I D
  1. .; Build array with patient's race iens
  1. .S PRIEN=+$G(^BWP(BWDFN,2,I,0))
  1. .S:PRIEN RARY(PRIEN)=""
  1. S:$D(RIEN)#2 RIEN(-1)=RIEN
  1. S FLG=0,RACE="" F S RACE=$O(RIEN(RACE)) Q:RACE=""!FLG D
  1. .S:$D(RARY(RIEN(RACE)))>0 FLG=1
  1. Q FLG
  1. ; Return CDC coded values for Ethinicity
  1. ; (1=Hispanic,2=Not Hispanic,3=Unknown or Declined to answer)
  1. ETHNIC(PIEN) ;
  1. N BWDFN
  1. S BWDFN=+$P($G(^BWPCD(PIEN,0)),U,2)
  1. Q:'BWDFN 3
  1. Q $$HISPANIC^BWMDEX2
  1. ; Add a node to the global
  1. ADD(VAL) ;
  1. S CNT=+$G(CNT)+1
  1. S ^TMP($J,"BWMP",CNT)=VAL
  1. Q
  1. ; Strip out illegal characters for XML output
  1. STRIP(X) ;
  1. S X=$$STRIP^XLFSTR(X,"#/ <>()")
  1. Q X
  1. ; Format current date as YYYYMMDD
  1. DATE() ;
  1. Q $TR($$FMTE^XLFDT($$DT^XLFDT,"7Z"),"/","")
  1. ;
  1. DATEINFO ;
  1. W !?3,"Select date range to export."
  1. Q
  1. ; Displays spinning icon to indicate progress
  1. ; Input: BWAST - Start character position
  1. ; BWAP - Suppress printing
  1. ; BWAS - List of characters to print
  1. WORKING(BWAST,BWAP,BWAS) ;
  1. Q 1
  1. ;Q:'$D(IO(0))!$D(ZTQUEUED) 0
  1. ;N BWAZ
  1. ;S BWAZ(0)=$I,BWAS=$G(BWAS,"|/-\"),BWAST=+$G(BWAST)
  1. ;S BWAST=$S(BWAST<0:0,1:BWAST#$L(BWAS)+1)
  1. ;U IO(0)
  1. ;W:'$G(BWAP) *8,*$S(BWAST:$A(BWAS,BWAST),1:32)
  1. ;R BWAZ#1:0 S BWAZ=$C(BWAZ)
  1. ;U BWAZ(0)
  1. ;Q BWAZ=94
  1. ;
  1. ; Display Host File Message
  1. HFSERR ;
  1. W !!?5,"* Save to Host File Server FAILED. Contact your sitemanager."
  1. D DIRZ^BWUTLP
  1. Q