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

AMQQEM21.m

Go to the documentation of this file.
  1. AMQQEM21 ; IHS/CMI/THL - PARSES DATE FORMAT AND GENERATES OUTPUT CODE ;
  1. ;;2.0;IHS PCC SUITE;;MAY 14, 2009
  1. ;-----
  1. I '$D(AMQQEM("DATE TRANS")),$D(AMQQEM("DATE FORMAT")) S AMQQEM("DATE TRANS")=AMQQEM("DATE FORMAT")
  1. I $D(AMQQEM("DATE TRANS")) Q
  1. NEW N %,I,J,X,Y,Z,P,A,C,T
  1. VAR S J=0,X=""
  1. S T="~"
  1. K AMQQEMNO
  1. RUN D ASK
  1. I $D(AMQQQUIT)!($D(AMQQEMNO)) G EXIT
  1. D PARSE
  1. I $D(AMQQEMNO) D EXIT G VAR
  1. D CONFIRM
  1. I $D(AMQQQUIT) G EXIT
  1. I $D(AMQQEMNO) D EXIT G VAR
  1. S AMQQEM("DATE TRANS")=C
  1. EXIT K %,I,J,X,Y,Z,P,A,C,T
  1. Q
  1. ;
  1. PARSE F I=1:1 S Z=$E(%,I) Q:Z="" D
  1. .S Y=$S(Z?1A:"A",Z?1N:"N",1:"P")
  1. .I Y'=X S J=J+1,P(J)=Z,X=Y Q
  1. .S P(J)=P(J)_Z
  1. .Q
  1. EVAL S A=""
  1. S Z="JUNE^JUN^06^6^03^3^1992^92"
  1. F J=1:1 Q:'$D(P(J)) S X=P(J) D I $D(AMQQEMNO) D ERROR Q
  1. .I X?1.P S A=A_X_T Q
  1. .I 0
  1. .F I=1:1 S Y=$P(Z,U,I) Q:Y="" I Y=X S A=A_I_T Q
  1. .E S AMQQEMNO=""
  1. CODE S C=""
  1. F I=1:1 S X=$P(A,T,I) Q:X="" D S C=C_X
  1. .I C'="" S C=C_"_"
  1. .I X'=+X S X=""""_X_"""" Q
  1. .I X=1 S X="$P(""JANUARY^FEBRUARY^MARCH^APRIL^MAY^JUNE^JULY^AUGUST^SEPTEMBER^OCTOBER^NOVEMBER^DECEMBER"",U,+$E(X,4,5))" Q
  1. .I X=2 S X="$P(""JAN^FEB^MAR^APR^MAY^JUN^JUL^AUG^SEP^OCT^NOV^DEC"",U,+$E(X,4,5))" Q
  1. .I X=3 S X="$E(X,4,5)" Q
  1. .I X=4 S X="(+$E(X,4,5))" Q
  1. .I X=5 S X="$E(X,6,7)" Q
  1. .I X=6 S X="(+$E(X,6,7))" Q
  1. .I X=7 S X="(1700+$E(X,1,3))" Q
  1. .I X=8 S X="$E((1700+$E(X,1,3)),3,4)"
  1. S C="S X="_C
  1. Q
  1. ;
  1. ERROR W !!,"Sorry, I can't interpret the date you just entered...Try again!",!,"(Remember, JUNE 3, 1992 must be used as the sample. No other date will work.)",!!
  1. Q
  1. ;
  1. ASK ; GET DATE FORMAT
  1. W !,"I need to know what date format to use. You can let me know by entering",!,"the date JUNE 3, 1992 as your example (e.g., 6/3/92 or 3JUN92 or 6.3.92 etc.)",!
  1. S DIR(0)="F^:"
  1. S DIR("B")="6/3/92"
  1. S DIR("A")="Enter JUNE 3, 1992 in the desired format"
  1. S DIR("?")="Enter the date in the proper format for your application; e.g., 6.3.92 or 3JUN92 or JUNE 3, 1992 etc"
  1. D ^DIR
  1. K DIR
  1. S:$D(DUOUT) DIRUT=1
  1. I Y=U S AMQQEMNO="" Q
  1. I Y?2."^" S AMQQQUIT="" K DTOUT,DUOUT,DIROUT,DIRUT G EXIT
  1. S %=Y
  1. Q
  1. ;
  1. CONFIRM ;
  1. W !!!,"Let me confirm the format with some examples =>",!
  1. W !,"APRIL 2, 1958 would be listed as "
  1. S X=2580402
  1. X C
  1. W X
  1. W !,"OCTOBER 23, 1985 would be listed as "
  1. S X=2851023
  1. X C
  1. W X,!
  1. S DIR(0)="Y"
  1. S DIR("A")="Is this OK"
  1. S DIR("B")="YES"
  1. D ^DIR
  1. K DIR
  1. S:$D(DUOUT) DIRUT=1
  1. I X=U S AMQQEMNO=""
  1. I X="^^" S AMQQQUIT=""
  1. I 'Y S AMQQEMNO=""
  1. K DIRUT,DIROUT,DUOUT,DTOUT
  1. Q
  1. ;
  1. PATIENT ; ENTRY POINT FROM AMQQEM2
  1. N Y
  1. W !!,"Show me, by example, how you want to format each patient's name =>"
  1. S DIR(0)="S^1:DOE,JOHN QUINCY;2:JOHN QUINCY DOE;3:J. DOE;4:DOE | JOHN QUINCY (2 different fields, LASTNAME and FIRST/MIDDLENAME);5:DOE | JOHN (2 fields, LASTNAME and FIRSTNAME);6:DOE (LASTNAME only)"
  1. S DIR("A")="Enter the number of your choice"
  1. S DIR("?")="Choice #4 will create a new field to hold the FIRST/MIDDLENAME)"
  1. S DIR("B")="1"
  1. D ^DIR
  1. K DIR
  1. S:$D(DUOUT) DIRUT=1
  1. I X=U S AMQQEMNO=""
  1. I X?2."^" S AMQQQUIT=""
  1. I $D(DIRUT) K DIRUT,DUOUT,DTOUT,DIROUT Q
  1. I Y=4!(Y=5) D TWO Q
  1. S @G@(AMQQEMN,2)=$P(";S X=$P(X,"","",2)_"" ""_$P(X,"","");S X=$E($P(X,"","",2)_"".""_$P(X,"",""),1,"_AMQQEM("HLEN")_");;;S X=$P(X,"","")",";",Y)
  1. I AMQQCCLS="V",Y=1 S @G@(AMQQEMN,2)="S X=$P(^DPT(X,0),U)"
  1. I Y=1,$G(AMQQEM("DEL"))="," D SUB I $D(AMQQQUIT) Q
  1. S AMQQEMFS=AMQQEMFS_$S(AMQQCCLS="V":3,1:1)_U
  1. Q
  1. ;
  1. TWO S @G@(1,2)="S X=$P(X,"","")",^(0)="^^LAST NAME^F^^"_$E("LAST NAME",1,AMQQEM("HLEN"))_U_($G(AMQQEM("FIX"))+$G(AMQQEM("MLEN")))
  1. I Y=4 S C=C+1,@G@(C,2)="S X=$P(X,"","",2)",^(1)="S X=$P(^DPT(AMQP(0),0),U)",^(0)="^^FIRST/MIDDLE NAME^F^^"_$E("FIRST/MIDDLE NAME",1,AMQQEM("HLEN"))_U_($G(AMQQEM("FIX"))+$G(AMQQEM("MLEN"))),AMQQEMFS=AMQQEMFS_1_U_C_U Q
  1. S C=C+1
  1. S @G@(C,2)="S X=$P(X,"","",2),X=$E(X,"" "")",^(1)="S X=$P(^DPT(AMQP(0),0),U)",^(0)="^^FIRST NAME^F^^"_$E("FIRST NAME",1,AMQQEM("HLEN"))_U_($G(AMQQEM("FIX"))+$G(AMQQEM("MLEN"))),AMQQEMFS=AMQQEMFS_1_U_C_U
  1. Q
  1. ;
  1. SUB W !!,"PATIENT NAME field contains a comma. The comma is also your field delimiter!"
  1. W !,"You should either put the name in quotes or substitute another character",!
  1. W "to prevent problems.",!!
  1. W !,"For example, if you substitute an underscore (_) for the comma, the entry"
  1. W !,"""DOE,JOHN QUINCY"" will be saved as ""DOE_JOHN QUINCY"".",!!
  1. W "DO NOT use the 'up arrow' (^) as the substitute character!!!",!!
  1. R !,"Press the <RETURN KEY> to go on...",%:DTIME
  1. Q
  1. ;