- APCSCERT ; IHS/CMI/LAB - APCS Certification Export ;
- ;;2.0;IHS PCC SUITE;**6**;MAY 14, 2009;Build 11
- ;
- ;
- START ;
- ;This option will create an HL7 o output file of all visits in a date range that have a certain lab test.
- ;
- ;
- D EXIT
- ;
- INFORM ;inform user
- W:$D(IOF) @IOF
- W !!,$$CJ^XLFSTR("EPI PROGRAM HL7 LAB EXPORT",80)
- W !!,"This option is used to create a file of HL7 messages. These messages will"
- W !,"be sent to the IHS Certification program. A message will be sent for every visit"
- W !,"on which a certain lab test was done. The user will define the date range"
- W !,"of visits to export."
- W !,"This HL7 export file will be automatically ftp'ed to the EPI program.",!!
- DATES ;set date range to T-91 to T-1
- S (APCSSD,APCSED)=""
- BD ;get beginning date
- W ! S DIR(0)="D^:DT:EP",DIR("A")="Enter Beginning Visit Date" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
- I $D(DIRUT) G EXIT
- S APCSBD=Y
- ED ;get ending date
- W ! S DIR(0)="DA^"_APCSBD_":DT:EP",DIR("A")="Enter Ending Visit Date: " S Y=APCSBD D DD^%DT S Y="" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
- I $D(DIRUT) G BD
- S APCSED=Y
- S X1=APCSBD,X2=-1 D C^%DTC S APCSSD=X_".9999"
- ;
- W !!,"The date range for this export is: ",$$FMTE^XLFDT(APCSBD)," to ",$$FMTE^XLFDT(APCSED),".",!
- LABTYPE ;
- S APCSLTYP=""
- S DIR(0)="S^A:Rapid Test for Influenza A & B;B:Chlamydia Tests;C:Both A & B;D:Any Lab Test or Set of (Taxonomy) Lab Tests",DIR("A")="Which Lab Tests should Trigger an HL7 message to be generated"
- KILL DA D ^DIR KILL DIR
- I $D(DIRUT) G DATES
- S APCSLTYP=Y
- S APCLQ=""
- I APCSLTYP="A"!(APCSLTYP="C") D A G:APCLQ LABTYPE
- I APCSLTYP="B"!(APCSLTYP="C") D B G:APCLQ LABTYPE
- I APCSLTYP="D" D D G:APCLQ LABTYPE
- CONTINUE ;
- W !!
- S DIR(0)="Y",DIR("A")="Do you wish to continue and generate this export file",DIR("B")="N" KILL DA D ^DIR KILL DIR
- I 'Y D EXIT Q
- ZIS ;called xbdbque to see if they want to queue or not
- DEMO ;
- D DEMO^APCLUTL(.APCLDEMO)
- I $G(APCLDEMO) G LABTYPE
- S XBRC="PROC^APCSCERT",XBRP="",XBNS="APCS",XBRX="EXIT^APCSCERT"
- D ^XBDBQUE
- D EXIT
- Q
- A ;
- S APCSALBT=$O(^ATXLAB("B","SURVEILLANCE RAPID FLU TESTS",0))
- I 'APCSALBT W !!,"The SURVEILLANCE RAPID FLU TESTS lab taxonomy is missing. Cannot continue." S APCLQ=1 Q
- S APCSACTT=$O(^ATXAX("B","SURVEILLANCE RAPID FLU CPT",0)) I 'APCSACTT W !!,"The SURVEILLANCE RAPID FLU CPT taxonomy is missing. Cannot continue." S APCLQ=1 Q
- S APCSALOT=$O(^ATXAX("B","SURVEILLANCE RAPID FLU LOINC",0))
- I 'APCSALOT W !!,"The SURVEILLANCE RAPID FLU LOINC taxonomy is missing. Cannot continue." S APCLQ=1 Q
- I '$O(^ATXLAB(APCSALBT,21,0)) W !!,"The SURVEILLANCE RAPID FLU TESTS site populated LAB taxonomy has no entries." S APCLQ=1 Q
- Q
- B ;
- S APCSBLBT=$O(^ATXLAB("B","BGP CHLAMYDIA TESTS TAX",0))
- I 'APCSBLBT W !!,"The BGP CHLAMYDIA TESTS TAX lab taxonomy is missing. Cannot continue." S APCLQ=1 Q
- S APCSBCTT=$O(^ATXAX("B","BGP CHLAMYDIA CPTS",0)) I 'APCSBCTT W !!,"The CHLAMYDIA CPT taxonomy is missing. Cannot continue." S APCLQ=1 Q
- S APCSBLOT=$O(^ATXAX("B","BGP CHLAMYDIA LOINC CODES",0))
- I 'APCSBLOT W !!,"The BGP CHLAMYDIA LOINC CODES taxonomy is missing. Cannot continue." S APCLQ=1 Q
- I '$O(^ATXLAB(APCSBLBT,21,0)) W !!,"The BGP CHLAMYDIA TESTS TAX site populated LAB taxonomy has no entries." S APCLQ=1 Q
- Q
- LABTAX ;
- S DIC="^ATXLAB(",DIC(0)="AEMQ" D ^DIC
- I Y=-1 Q
- S X=0 F S X=$O(^ATXLAB(+Y,21,X)) Q:X'=+X S L=$P(^ATXLAB(+Y,21,X,0),U,1) I $D(^LAB(60,L,0)) S APCSLABS(L)=""
- Q
- INDLAB ;
- S DIC=60,DIC(0)="AEMQ" D ^DIC
- I Y=-1 Q
- S APCSLABS(+Y)=""
- G INDLAB
- D ;taxonomy or selected
- K APCSLABS
- S APCSLABS=""
- S DIR(0)="S^I:Select Lab Tests Individually by Name;T:Use a Lab Taxonomy",DIR("A")="How do you want to select Lab Tests for Export",DIR("B")="I" KILL DA D ^DIR KILL DIR
- I $D(DIRUT) S APCLQ=1 Q
- S APCSLABS=Y
- I APCSLABS="T" D LABTAX
- I APCSLABS="I" D INDLAB
- I '$O(APCSLABS(0)) S APCLQ=1 K APCSLABS W !!,"no lab tests selected." Q
- W !!,"The following labs and values will be exported:"
- S X=0 F S X=$O(APCSLABS(X)) Q:X'=+X W !?5,$P(^LAB(60,X,0),U,1)
- W !
- Q
- PROC ;EP - called from xbdbque
- W:'$D(ZTQUEUED) !,"Processing..."
- K ^APCSDATA($J)
- S APCSVTOT=0
- F S APCSSD=$O(^AUPNVSIT("B",APCSSD)) Q:APCSSD'=+APCSSD!($P(APCSSD,".")>APCSED) D
- .S APCSV=0 F S APCSV=$O(^AUPNVSIT("B",APCSSD,APCSV)) Q:APCSV'=+APCSV D
- ..Q:'$D(^AUPNVSIT(APCSV,0)) ;no zero node
- ..Q:$P(^AUPNVSIT(APCSV,0),U,11) ;deleted visit
- ..S DFN=$P(^AUPNVSIT(APCSV,0),U,5)
- ..Q:DFN=""
- ..Q:'$D(^DPT(DFN,0))
- ..Q:$P(^DPT(DFN,0),U)["DEMO,PATIENT"
- ..Q:$$DEMO^APCLUTL(DFN)
- ..;check for tests
- ..S APCSGOT="" K APCSLABT
- ..D LAB
- ..I APCSGOT D CERT^APCSHLOC(.APCSLAB,"CERT")
- ..S APCSVTOT=1
- ..Q
- .Q
- I 'APCSVTOT D
- .Q:$D(ZTQUEUED)
- .W !!,"There are no lab test results to export."
- .D PAUSE^APCLVL01
- Q
- LAB ;does this visit have A or B or either?
- S X=0 F S X=$O(^AUPNVLAB("AD",APCSV,X)) Q:X'=+X D
- .Q:'$D(^AUPNVLAB(X,0))
- .I '$P(^AUPNVLAB(X,0),U,1) Q
- .I APCSLTYP="A"!(APCSLTYP="C") D
- ..I $D(^ATXLAB(APCSALBT,21,"B",$P(^AUPNVLAB(X,0),U))) S APCSGOT=1,APCSLAB(X)="" Q
- ..Q:'APCSALOT
- ..S J=$P($G(^AUPNVLAB(X,11)),U,13) Q:J=""
- ..Q:'$$LOINC(J,APCSALOT)
- ..S APCSGOT=1,APCSLAB(X)=""
- .I APCSLTYP="B"!(APCSLTYP="C") D
- ..I $D(^ATXLAB(APCSBLBT,21,"B",$P(^AUPNVLAB(X,0),U))) S APCSGOT=1,APCSLAB(X)="" Q
- ..Q:'APCSBLOT
- ..S J=$P($G(^AUPNVLAB(X,11)),U,13) Q:J=""
- ..Q:'$$LOINC(J,APCSBLOT)
- ..S APCSGOT=1,APCSLAB(X)=""
- .I APCSLTYP="D" D
- ..I '$D(APCSLABS($P(^AUPNVLAB(X,0),U))) Q
- ..S APCSGOT=1,APCSLAB(X)=""
- Q
- LOINC(A,B) ;EP
- NEW %
- S %=$P($G(^LAB(95.3,A,9999999)),U,2)
- I %]"",$D(^ATXAX(B,21,"B",%)) Q 1
- S %=$P($G(^LAB(95.3,A,0)),U)_"-"_$P($G(^LAB(95.3,A,0)),U,15)
- I $D(^ATXAX(B,21,"B",%)) Q 1
- Q ""
- ;send file
- WRITE ; use XBGSAVE to save the temp global (APCSDATA) to a delimited
- ; file that is exported to the IE system
- N XBGL,XBQ,XBQTO,XBNAR,XBMED,XBFLT,XBUF,XBFN
- S XBGL="APCSDATA",XBMED="F",XBQ="N",XBFLT=1,XBF=$J,XBE=$J
- S XBNAR="CERTIFICATION EXPORT"
- S APCSASU=$P($G(^AUTTLOC($P(^AUTTSITE(1,0),U),0)),U,10) ;asufac for file name
- S XBFN="CERTLABHL7_"_APCSASU_"_"_$$DATE(DT)_".txt"
- S XBS1="CERTIFICATION EXPORT"
- ;
- D ^XBGSAVE
- ;
- I XBFLG'=0 D
- . I XBFLG(1)="" W:'$D(ZTQUEUED) !!,"LAB HL7 file successfully created",!!
- . I XBFLG(1)]"" W:'$D(ZTQUEUED) !!,"LAB HL7 file NOT successfully created",!!
- . W:'$D(ZTQUEUED) !,"File was NOT successfully transferred to IHS/CDC",!,"you will need to manually ftp it.",!
- . W:'$D(ZTQUEUED) !,XBFLG(1),!!
- K ^APCSDATA($J)
- Q
- ;
- DATE(D) ;EP
- Q (1700+$E(D,1,3))_$E(D,4,5)_$E(D,6,7)
- ;
- JDATE(D) ;EP - get date
- I $G(D)="" Q ""
- NEW A
- S A=$$FMTE^XLFDT(D)
- Q $E(D,6,7)_$$UP^XLFSTR($P(A," ",1))_(1700+$E(D,1,3))
- ;
- UID(APCSA) ;Given DFN return unique patient record id.
- I '$G(APCSA) Q ""
- I '$D(^AUPNPAT(APCSA)) Q ""
- ;
- Q $$GET1^DIQ(9999999.06,$P(^AUTTSITE(1,0),U),.32)_$E("0000000000",1,10-$L(APCSA))_APCSA
- ;
- EXIT ;clean up and exit
- D EN^XBVK("APCS")
- D ^XBFMK
- Q
- ;
- EP ;EP - called from option to create search template using ILI logic
- G ^APCLSIL3
- CTR(X,Y) ;EP - Center X in a field Y wide.
- Q $J("",$S($D(Y):Y,1:IOM)-$L(X)\2)_X
- ;----------
- EOP ;EP - End of page.
- Q:$E(IOST)'="C"
- Q:$D(ZTQUEUED)!'(IOT["TRM")!$D(IO("S"))
- NEW DIR
- K DIRUT,DFOUT,DLOUT,DTOUT,DUOUT
- S DIR(0)="E" D ^DIR
- Q
- ;----------
- USR() ;EP - Return name of current user from ^VA(200.
- Q $S($G(DUZ):$S($D(^VA(200,DUZ,0)):$P(^(0),U),1:"UNKNOWN"),1:"DUZ UNDEFINED OR 0")
- ;----------
- LOC() ;EP - Return location name from file 4 based on DUZ(2).
- Q $S($G(DUZ(2)):$S($D(^DIC(4,DUZ(2),0)):$P(^(0),U),1:"UNKNOWN"),1:"DUZ(2) UNDEFINED OR 0")
- ;----------
- PURGE ;
- W:'$D(ZTQUEUED) !!,"Now cleaning up host files older than 7 DAYS"
- K APCSFILE,APCSDIR
- S APCSDIR=$P($G(^AUTTSITE(1,1)),"^",2)
- I APCSDIR="" S APCSDIR=$P($G(^XTV(8989.3,1,"DEV")),"^",1)
- I APCSDIR="" Q
- S APCSASU=$P($G(^AUTTLOC($P(^AUTTSITE(1,0),U),0)),U,10)
- S APCSDT=$$FMADD^XLFDT(DT,-7)
- S APCSDT=$$DATE(APCSDT)
- S APCSFLST=$$LIST^%ZISH(APCSDIR,"EPILABHL7"_APCSASU_"*",.APCSFILE)
- Q:'$O(APCSFILE(""))
- S APCSX=0 F S APCSX=$O(APCSFILE(APCSX)) Q:APCSX'=+APCSX D
- .S D=$P($P(APCSFILE(APCSX),"."),"_",3)
- .I D<APCSDT S N=APCSFILE(APCSX) S APCSM=$$DEL^%ZISH(APCSDIR,N)
- Q
- APCSCERT ; IHS/CMI/LAB - APCS Certification Export ;
- +1 ;;2.0;IHS PCC SUITE;**6**;MAY 14, 2009;Build 11
- +2 ;
- +3 ;
- START ;
- +1 ;This option will create an HL7 o output file of all visits in a date range that have a certain lab test.
- +2 ;
- +3 ;
- +4 DO EXIT
- +5 ;
- INFORM ;inform user
- +1 IF $DATA(IOF)
- WRITE @IOF
- +2 WRITE !!,$$CJ^XLFSTR("EPI PROGRAM HL7 LAB EXPORT",80)
- +3 WRITE !!,"This option is used to create a file of HL7 messages. These messages will"
- +4 WRITE !,"be sent to the IHS Certification program. A message will be sent for every visit"
- +5 WRITE !,"on which a certain lab test was done. The user will define the date range"
- +6 WRITE !,"of visits to export."
- +7 WRITE !,"This HL7 export file will be automatically ftp'ed to the EPI program.",!!
- DATES ;set date range to T-91 to T-1
- +1 SET (APCSSD,APCSED)=""
- BD ;get beginning date
- +1 WRITE !
- SET DIR(0)="D^:DT:EP"
- SET DIR("A")="Enter Beginning Visit Date"
- DO ^DIR
- KILL DIR
- IF $DATA(DUOUT)
- SET DIRUT=1
- +2 IF $DATA(DIRUT)
- GOTO EXIT
- +3 SET APCSBD=Y
- ED ;get ending date
- +1 WRITE !
- SET DIR(0)="DA^"_APCSBD_":DT:EP"
- SET DIR("A")="Enter Ending Visit Date: "
- SET Y=APCSBD
- DO DD^%DT
- SET Y=""
- DO ^DIR
- KILL DIR
- IF $DATA(DUOUT)
- SET DIRUT=1
- +2 IF $DATA(DIRUT)
- GOTO BD
- +3 SET APCSED=Y
- +4 SET X1=APCSBD
- SET X2=-1
- DO C^%DTC
- SET APCSSD=X_".9999"
- +5 ;
- +6 WRITE !!,"The date range for this export is: ",$$FMTE^XLFDT(APCSBD)," to ",$$FMTE^XLFDT(APCSED),".",!
- LABTYPE ;
- +1 SET APCSLTYP=""
- +2 SET DIR(0)="S^A:Rapid Test for Influenza A & B;B:Chlamydia Tests;C:Both A & B;D:Any Lab Test or Set of (Taxonomy) Lab Tests"
- SET DIR("A")="Which Lab Tests should Trigger an HL7 message to be generated"
- +3 KILL DA
- DO ^DIR
- KILL DIR
- +4 IF $DATA(DIRUT)
- GOTO DATES
- +5 SET APCSLTYP=Y
- +6 SET APCLQ=""
- +7 IF APCSLTYP="A"!(APCSLTYP="C")
- DO A
- IF APCLQ
- GOTO LABTYPE
- +8 IF APCSLTYP="B"!(APCSLTYP="C")
- DO B
- IF APCLQ
- GOTO LABTYPE
- +9 IF APCSLTYP="D"
- DO D
- IF APCLQ
- GOTO LABTYPE
- CONTINUE ;
- +1 WRITE !!
- +2 SET DIR(0)="Y"
- SET DIR("A")="Do you wish to continue and generate this export file"
- SET DIR("B")="N"
- KILL DA
- DO ^DIR
- KILL DIR
- +3 IF 'Y
- DO EXIT
- QUIT
- ZIS ;called xbdbque to see if they want to queue or not
- DEMO ;
- +1 DO DEMO^APCLUTL(.APCLDEMO)
- +2 IF $GET(APCLDEMO)
- GOTO LABTYPE
- +3 SET XBRC="PROC^APCSCERT"
- SET XBRP=""
- SET XBNS="APCS"
- SET XBRX="EXIT^APCSCERT"
- +4 DO ^XBDBQUE
- +5 DO EXIT
- +6 QUIT
- A ;
- +1 SET APCSALBT=$ORDER(^ATXLAB("B","SURVEILLANCE RAPID FLU TESTS",0))
- +2 IF 'APCSALBT
- WRITE !!,"The SURVEILLANCE RAPID FLU TESTS lab taxonomy is missing. Cannot continue."
- SET APCLQ=1
- QUIT
- +3 SET APCSACTT=$ORDER(^ATXAX("B","SURVEILLANCE RAPID FLU CPT",0))
- IF 'APCSACTT
- WRITE !!,"The SURVEILLANCE RAPID FLU CPT taxonomy is missing. Cannot continue."
- SET APCLQ=1
- QUIT
- +4 SET APCSALOT=$ORDER(^ATXAX("B","SURVEILLANCE RAPID FLU LOINC",0))
- +5 IF 'APCSALOT
- WRITE !!,"The SURVEILLANCE RAPID FLU LOINC taxonomy is missing. Cannot continue."
- SET APCLQ=1
- QUIT
- +6 IF '$ORDER(^ATXLAB(APCSALBT,21,0))
- WRITE !!,"The SURVEILLANCE RAPID FLU TESTS site populated LAB taxonomy has no entries."
- SET APCLQ=1
- QUIT
- +7 QUIT
- B ;
- +1 SET APCSBLBT=$ORDER(^ATXLAB("B","BGP CHLAMYDIA TESTS TAX",0))
- +2 IF 'APCSBLBT
- WRITE !!,"The BGP CHLAMYDIA TESTS TAX lab taxonomy is missing. Cannot continue."
- SET APCLQ=1
- QUIT
- +3 SET APCSBCTT=$ORDER(^ATXAX("B","BGP CHLAMYDIA CPTS",0))
- IF 'APCSBCTT
- WRITE !!,"The CHLAMYDIA CPT taxonomy is missing. Cannot continue."
- SET APCLQ=1
- QUIT
- +4 SET APCSBLOT=$ORDER(^ATXAX("B","BGP CHLAMYDIA LOINC CODES",0))
- +5 IF 'APCSBLOT
- WRITE !!,"The BGP CHLAMYDIA LOINC CODES taxonomy is missing. Cannot continue."
- SET APCLQ=1
- QUIT
- +6 IF '$ORDER(^ATXLAB(APCSBLBT,21,0))
- WRITE !!,"The BGP CHLAMYDIA TESTS TAX site populated LAB taxonomy has no entries."
- SET APCLQ=1
- QUIT
- +7 QUIT
- LABTAX ;
- +1 SET DIC="^ATXLAB("
- SET DIC(0)="AEMQ"
- DO ^DIC
- +2 IF Y=-1
- QUIT
- +3 SET X=0
- FOR
- SET X=$ORDER(^ATXLAB(+Y,21,X))
- IF X'=+X
- QUIT
- SET L=$PIECE(^ATXLAB(+Y,21,X,0),U,1)
- IF $DATA(^LAB(60,L,0))
- SET APCSLABS(L)=""
- +4 QUIT
- INDLAB ;
- +1 SET DIC=60
- SET DIC(0)="AEMQ"
- DO ^DIC
- +2 IF Y=-1
- QUIT
- +3 SET APCSLABS(+Y)=""
- +4 GOTO INDLAB
- D ;taxonomy or selected
- +1 KILL APCSLABS
- +2 SET APCSLABS=""
- +3 SET DIR(0)="S^I:Select Lab Tests Individually by Name;T:Use a Lab Taxonomy"
- SET DIR("A")="How do you want to select Lab Tests for Export"
- SET DIR("B")="I"
- KILL DA
- DO ^DIR
- KILL DIR
- +4 IF $DATA(DIRUT)
- SET APCLQ=1
- QUIT
- +5 SET APCSLABS=Y
- +6 IF APCSLABS="T"
- DO LABTAX
- +7 IF APCSLABS="I"
- DO INDLAB
- +8 IF '$ORDER(APCSLABS(0))
- SET APCLQ=1
- KILL APCSLABS
- WRITE !!,"no lab tests selected."
- QUIT
- +9 WRITE !!,"The following labs and values will be exported:"
- +10 SET X=0
- FOR
- SET X=$ORDER(APCSLABS(X))
- IF X'=+X
- QUIT
- WRITE !?5,$PIECE(^LAB(60,X,0),U,1)
- +11 WRITE !
- +12 QUIT
- PROC ;EP - called from xbdbque
- +1 IF '$DATA(ZTQUEUED)
- WRITE !,"Processing..."
- +2 KILL ^APCSDATA($JOB)
- +3 SET APCSVTOT=0
- +4 FOR
- SET APCSSD=$ORDER(^AUPNVSIT("B",APCSSD))
- IF APCSSD'=+APCSSD!($PIECE(APCSSD,".")>APCSED)
- QUIT
- Begin DoDot:1
- +5 SET APCSV=0
- FOR
- SET APCSV=$ORDER(^AUPNVSIT("B",APCSSD,APCSV))
- IF APCSV'=+APCSV
- QUIT
- Begin DoDot:2
- +6 ;no zero node
- IF '$DATA(^AUPNVSIT(APCSV,0))
- QUIT
- +7 ;deleted visit
- IF $PIECE(^AUPNVSIT(APCSV,0),U,11)
- QUIT
- +8 SET DFN=$PIECE(^AUPNVSIT(APCSV,0),U,5)
- +9 IF DFN=""
- QUIT
- +10 IF '$DATA(^DPT(DFN,0))
- QUIT
- +11 IF $PIECE(^DPT(DFN,0),U)["DEMO,PATIENT"
- QUIT
- +12 IF $$DEMO^APCLUTL(DFN)
- QUIT
- +13 ;check for tests
- +14 SET APCSGOT=""
- KILL APCSLABT
- +15 DO LAB
- +16 IF APCSGOT
- DO CERT^APCSHLOC(.APCSLAB,"CERT")
- +17 SET APCSVTOT=1
- +18 QUIT
- End DoDot:2
- +19 QUIT
- End DoDot:1
- +20 IF 'APCSVTOT
- Begin DoDot:1
- +21 IF $DATA(ZTQUEUED)
- QUIT
- +22 WRITE !!,"There are no lab test results to export."
- +23 DO PAUSE^APCLVL01
- End DoDot:1
- +24 QUIT
- LAB ;does this visit have A or B or either?
- +1 SET X=0
- FOR
- SET X=$ORDER(^AUPNVLAB("AD",APCSV,X))
- IF X'=+X
- QUIT
- Begin DoDot:1
- +2 IF '$DATA(^AUPNVLAB(X,0))
- QUIT
- +3 IF '$PIECE(^AUPNVLAB(X,0),U,1)
- QUIT
- +4 IF APCSLTYP="A"!(APCSLTYP="C")
- Begin DoDot:2
- +5 IF $DATA(^ATXLAB(APCSALBT,21,"B",$PIECE(^AUPNVLAB(X,0),U)))
- SET APCSGOT=1
- SET APCSLAB(X)=""
- QUIT
- +6 IF 'APCSALOT
- QUIT
- +7 SET J=$PIECE($GET(^AUPNVLAB(X,11)),U,13)
- IF J=""
- QUIT
- +8 IF '$$LOINC(J,APCSALOT)
- QUIT
- +9 SET APCSGOT=1
- SET APCSLAB(X)=""
- End DoDot:2
- +10 IF APCSLTYP="B"!(APCSLTYP="C")
- Begin DoDot:2
- +11 IF $DATA(^ATXLAB(APCSBLBT,21,"B",$PIECE(^AUPNVLAB(X,0),U)))
- SET APCSGOT=1
- SET APCSLAB(X)=""
- QUIT
- +12 IF 'APCSBLOT
- QUIT
- +13 SET J=$PIECE($GET(^AUPNVLAB(X,11)),U,13)
- IF J=""
- QUIT
- +14 IF '$$LOINC(J,APCSBLOT)
- QUIT
- +15 SET APCSGOT=1
- SET APCSLAB(X)=""
- End DoDot:2
- +16 IF APCSLTYP="D"
- Begin DoDot:2
- +17 IF '$DATA(APCSLABS($PIECE(^AUPNVLAB(X,0),U)))
- QUIT
- +18 SET APCSGOT=1
- SET APCSLAB(X)=""
- End DoDot:2
- End DoDot:1
- +19 QUIT
- LOINC(A,B) ;EP
- +1 NEW %
- +2 SET %=$PIECE($GET(^LAB(95.3,A,9999999)),U,2)
- +3 IF %]""
- IF $DATA(^ATXAX(B,21,"B",%))
- QUIT 1
- +4 SET %=$PIECE($GET(^LAB(95.3,A,0)),U)_"-"_$PIECE($GET(^LAB(95.3,A,0)),U,15)
- +5 IF $DATA(^ATXAX(B,21,"B",%))
- QUIT 1
- +6 QUIT ""
- +7 ;send file
- WRITE ; use XBGSAVE to save the temp global (APCSDATA) to a delimited
- +1 ; file that is exported to the IE system
- +2 NEW XBGL,XBQ,XBQTO,XBNAR,XBMED,XBFLT,XBUF,XBFN
- +3 SET XBGL="APCSDATA"
- SET XBMED="F"
- SET XBQ="N"
- SET XBFLT=1
- SET XBF=$JOB
- SET XBE=$JOB
- +4 SET XBNAR="CERTIFICATION EXPORT"
- +5 ;asufac for file name
- SET APCSASU=$PIECE($GET(^AUTTLOC($PIECE(^AUTTSITE(1,0),U),0)),U,10)
- +6 SET XBFN="CERTLABHL7_"_APCSASU_"_"_$$DATE(DT)_".txt"
- +7 SET XBS1="CERTIFICATION EXPORT"
- +8 ;
- +9 DO ^XBGSAVE
- +10 ;
- +11 IF XBFLG'=0
- Begin DoDot:1
- +12 IF XBFLG(1)=""
- IF '$DATA(ZTQUEUED)
- WRITE !!,"LAB HL7 file successfully created",!!
- +13 IF XBFLG(1)]""
- IF '$DATA(ZTQUEUED)
- WRITE !!,"LAB HL7 file NOT successfully created",!!
- +14 IF '$DATA(ZTQUEUED)
- WRITE !,"File was NOT successfully transferred to IHS/CDC",!,"you will need to manually ftp it.",!
- +15 IF '$DATA(ZTQUEUED)
- WRITE !,XBFLG(1),!!
- End DoDot:1
- +16 KILL ^APCSDATA($JOB)
- +17 QUIT
- +18 ;
- DATE(D) ;EP
- +1 QUIT (1700+$EXTRACT(D,1,3))_$EXTRACT(D,4,5)_$EXTRACT(D,6,7)
- +2 ;
- JDATE(D) ;EP - get date
- +1 IF $GET(D)=""
- QUIT ""
- +2 NEW A
- +3 SET A=$$FMTE^XLFDT(D)
- +4 QUIT $EXTRACT(D,6,7)_$$UP^XLFSTR($PIECE(A," ",1))_(1700+$EXTRACT(D,1,3))
- +5 ;
- UID(APCSA) ;Given DFN return unique patient record id.
- +1 IF '$GET(APCSA)
- QUIT ""
- +2 IF '$DATA(^AUPNPAT(APCSA))
- QUIT ""
- +3 ;
- +4 QUIT $$GET1^DIQ(9999999.06,$PIECE(^AUTTSITE(1,0),U),.32)_$EXTRACT("0000000000",1,10-$LENGTH(APCSA))_APCSA
- +5 ;
- EXIT ;clean up and exit
- +1 DO EN^XBVK("APCS")
- +2 DO ^XBFMK
- +3 QUIT
- +4 ;
- EP ;EP - called from option to create search template using ILI logic
- +1 GOTO ^APCLSIL3
- CTR(X,Y) ;EP - Center X in a field Y wide.
- +1 QUIT $JUSTIFY("",$SELECT($DATA(Y):Y,1:IOM)-$LENGTH(X)\2)_X
- +2 ;----------
- EOP ;EP - End of page.
- +1 IF $EXTRACT(IOST)'="C"
- QUIT
- +2 IF $DATA(ZTQUEUED)!'(IOT["TRM")!$DATA(IO("S"))
- QUIT
- +3 NEW DIR
- +4 KILL DIRUT,DFOUT,DLOUT,DTOUT,DUOUT
- +5 SET DIR(0)="E"
- DO ^DIR
- +6 QUIT
- +7 ;----------
- USR() ;EP - Return name of current user from ^VA(200.
- +1 QUIT $SELECT($GET(DUZ):$SELECT($DATA(^VA(200,DUZ,0)):$PIECE(^(0),U),1:"UNKNOWN"),1:"DUZ UNDEFINED OR 0")
- +2 ;----------
- LOC() ;EP - Return location name from file 4 based on DUZ(2).
- +1 QUIT $SELECT($GET(DUZ(2)):$SELECT($DATA(^DIC(4,DUZ(2),0)):$PIECE(^(0),U),1:"UNKNOWN"),1:"DUZ(2) UNDEFINED OR 0")
- +2 ;----------
- PURGE ;
- +1 IF '$DATA(ZTQUEUED)
- WRITE !!,"Now cleaning up host files older than 7 DAYS"
- +2 KILL APCSFILE,APCSDIR
- +3 SET APCSDIR=$PIECE($GET(^AUTTSITE(1,1)),"^",2)
- +4 IF APCSDIR=""
- SET APCSDIR=$PIECE($GET(^XTV(8989.3,1,"DEV")),"^",1)
- +5 IF APCSDIR=""
- QUIT
- +6 SET APCSASU=$PIECE($GET(^AUTTLOC($PIECE(^AUTTSITE(1,0),U),0)),U,10)
- +7 SET APCSDT=$$FMADD^XLFDT(DT,-7)
- +8 SET APCSDT=$$DATE(APCSDT)
- +9 SET APCSFLST=$$LIST^%ZISH(APCSDIR,"EPILABHL7"_APCSASU_"*",.APCSFILE)
- +10 IF '$ORDER(APCSFILE(""))
- QUIT
- +11 SET APCSX=0
- FOR
- SET APCSX=$ORDER(APCSFILE(APCSX))
- IF APCSX'=+APCSX
- QUIT
- Begin DoDot:1
- +12 SET D=$PIECE($PIECE(APCSFILE(APCSX),"."),"_",3)
- +13 IF D<APCSDT
- SET N=APCSFILE(APCSX)
- SET APCSM=$$DEL^%ZISH(APCSDIR,N)
- End DoDot:1
- +14 QUIT